OSDN Git Service

b98665e6e1251653d22451c30872226f0d51a55a
[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 for camera
11472 sensors which are not EXTERNAL,<wbr/> the following 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 <p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
11492 also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
11493             </td>
11494           </tr>
11495
11496
11497           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11498            <!-- end of entry -->
11499         
11500                 
11501           <tr class="entry" id="controls_android.jpeg.quality">
11502             <td class="entry_name
11503              " rowspan="3">
11504               android.<wbr/>jpeg.<wbr/>quality
11505             </td>
11506             <td class="entry_type">
11507                 <span class="entry_type_name">byte</span>
11508
11509               <span class="entry_type_visibility"> [public]</span>
11510
11511
11512               <span class="entry_type_hwlevel">[legacy] </span>
11513
11514
11515
11516
11517             </td> <!-- entry_type -->
11518
11519             <td class="entry_description">
11520               <p>Compression quality of the final JPEG
11521 image.<wbr/></p>
11522             </td>
11523
11524             <td class="entry_units">
11525             </td>
11526
11527             <td class="entry_range">
11528               <p>1-100; larger is higher quality</p>
11529             </td>
11530
11531             <td class="entry_hal_version">
11532               <p>3.<wbr/>2</p>
11533             </td>
11534
11535             <td class="entry_tags">
11536               <ul class="entry_tags">
11537                   <li><a href="#tag_BC">BC</a></li>
11538               </ul>
11539             </td>
11540
11541           </tr>
11542           <tr class="entries_header">
11543             <th class="th_details" colspan="6">Details</th>
11544           </tr>
11545           <tr class="entry_cont">
11546             <td class="entry_details" colspan="6">
11547               <p>85-95 is typical usage range.<wbr/></p>
11548             </td>
11549           </tr>
11550
11551
11552           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11553            <!-- end of entry -->
11554         
11555                 
11556           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11557             <td class="entry_name
11558              " rowspan="1">
11559               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11560             </td>
11561             <td class="entry_type">
11562                 <span class="entry_type_name">byte</span>
11563
11564               <span class="entry_type_visibility"> [public]</span>
11565
11566
11567               <span class="entry_type_hwlevel">[legacy] </span>
11568
11569
11570
11571
11572             </td> <!-- entry_type -->
11573
11574             <td class="entry_description">
11575               <p>Compression quality of JPEG
11576 thumbnail.<wbr/></p>
11577             </td>
11578
11579             <td class="entry_units">
11580             </td>
11581
11582             <td class="entry_range">
11583               <p>1-100; larger is higher quality</p>
11584             </td>
11585
11586             <td class="entry_hal_version">
11587               <p>3.<wbr/>2</p>
11588             </td>
11589
11590             <td class="entry_tags">
11591               <ul class="entry_tags">
11592                   <li><a href="#tag_BC">BC</a></li>
11593               </ul>
11594             </td>
11595
11596           </tr>
11597
11598
11599           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11600            <!-- end of entry -->
11601         
11602                 
11603           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11604             <td class="entry_name
11605              " rowspan="5">
11606               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11607             </td>
11608             <td class="entry_type">
11609                 <span class="entry_type_name">int32</span>
11610                 <span class="entry_type_container">x</span>
11611
11612                 <span class="entry_type_array">
11613                   2
11614                 </span>
11615               <span class="entry_type_visibility"> [public as size]</span>
11616
11617
11618               <span class="entry_type_hwlevel">[legacy] </span>
11619
11620
11621
11622
11623             </td> <!-- entry_type -->
11624
11625             <td class="entry_description">
11626               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11627             </td>
11628
11629             <td class="entry_units">
11630             </td>
11631
11632             <td class="entry_range">
11633               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11634             </td>
11635
11636             <td class="entry_hal_version">
11637               <p>3.<wbr/>2</p>
11638             </td>
11639
11640             <td class="entry_tags">
11641               <ul class="entry_tags">
11642                   <li><a href="#tag_BC">BC</a></li>
11643               </ul>
11644             </td>
11645
11646           </tr>
11647           <tr class="entries_header">
11648             <th class="th_details" colspan="6">Details</th>
11649           </tr>
11650           <tr class="entry_cont">
11651             <td class="entry_details" colspan="6">
11652               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11653 but the captured JPEG will still be a valid image.<wbr/></p>
11654 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11655 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11656 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11657 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11658 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11659 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11660 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11661 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11662 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11663 the camera device will handle thumbnail rotation in one of the following ways:</p>
11664 <ul>
11665 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11666   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11667 <li>Rotate the jpeg and thumbnail image data and not set
11668   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11669   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11670   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11671   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11672   size.<wbr/></li>
11673 </ul>
11674             </td>
11675           </tr>
11676
11677           <tr class="entries_header">
11678             <th class="th_details" colspan="6">HAL Implementation Details</th>
11679           </tr>
11680           <tr class="entry_cont">
11681             <td class="entry_details" colspan="6">
11682               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11683 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11684 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11685 thumbnail image cropping.<wbr/></p>
11686             </td>
11687           </tr>
11688
11689           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11690            <!-- end of entry -->
11691         
11692         
11693
11694       <!-- end of kind -->
11695       </tbody>
11696       <tr><td colspan="7" class="kind">static</td></tr>
11697
11698       <thead class="entries_header">
11699         <tr>
11700           <th class="th_name">Property Name</th>
11701           <th class="th_type">Type</th>
11702           <th class="th_description">Description</th>
11703           <th class="th_units">Units</th>
11704           <th class="th_range">Range</th>
11705           <th class="th_hal_version">Initial HIDL HAL version</th>
11706           <th class="th_tags">Tags</th>
11707         </tr>
11708       </thead>
11709
11710       <tbody>
11711
11712         
11713
11714         
11715
11716         
11717
11718         
11719
11720                 
11721           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11722             <td class="entry_name
11723              " rowspan="3">
11724               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11725             </td>
11726             <td class="entry_type">
11727                 <span class="entry_type_name">int32</span>
11728                 <span class="entry_type_container">x</span>
11729
11730                 <span class="entry_type_array">
11731                   2 x n
11732                 </span>
11733               <span class="entry_type_visibility"> [public as size]</span>
11734
11735
11736               <span class="entry_type_hwlevel">[legacy] </span>
11737
11738
11739
11740
11741             </td> <!-- entry_type -->
11742
11743             <td class="entry_description">
11744               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11745 camera device.<wbr/></p>
11746             </td>
11747
11748             <td class="entry_units">
11749             </td>
11750
11751             <td class="entry_range">
11752             </td>
11753
11754             <td class="entry_hal_version">
11755               <p>3.<wbr/>2</p>
11756             </td>
11757
11758             <td class="entry_tags">
11759               <ul class="entry_tags">
11760                   <li><a href="#tag_BC">BC</a></li>
11761               </ul>
11762             </td>
11763
11764           </tr>
11765           <tr class="entries_header">
11766             <th class="th_details" colspan="6">Details</th>
11767           </tr>
11768           <tr class="entry_cont">
11769             <td class="entry_details" colspan="6">
11770               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11771 thumbnail should be generated.<wbr/></p>
11772 <p>Below condiditions will be satisfied for this size list:</p>
11773 <ul>
11774 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11775 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11776 <li>The aspect ratio of the largest thumbnail size will be same as the
11777 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/>
11778 The largest size is defined as the size that has the largest pixel area
11779 in a given size list.<wbr/></li>
11780 <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
11781 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11782 and vice versa.<wbr/></li>
11783 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11784 </ul>
11785             </td>
11786           </tr>
11787
11788
11789           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11790            <!-- end of entry -->
11791         
11792                 
11793           <tr class="entry" id="static_android.jpeg.maxSize">
11794             <td class="entry_name
11795              " rowspan="3">
11796               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11797             </td>
11798             <td class="entry_type">
11799                 <span class="entry_type_name">int32</span>
11800
11801               <span class="entry_type_visibility"> [system]</span>
11802
11803
11804
11805
11806
11807
11808             </td> <!-- entry_type -->
11809
11810             <td class="entry_description">
11811               <p>Maximum size in bytes for the compressed
11812 JPEG buffer</p>
11813             </td>
11814
11815             <td class="entry_units">
11816             </td>
11817
11818             <td class="entry_range">
11819               <p>Must be large enough to fit any JPEG produced by
11820 the camera</p>
11821             </td>
11822
11823             <td class="entry_hal_version">
11824               <p>3.<wbr/>2</p>
11825             </td>
11826
11827             <td class="entry_tags">
11828             </td>
11829
11830           </tr>
11831           <tr class="entries_header">
11832             <th class="th_details" colspan="6">Details</th>
11833           </tr>
11834           <tr class="entry_cont">
11835             <td class="entry_details" colspan="6">
11836               <p>This is used for sizing the gralloc buffers for
11837 JPEG</p>
11838             </td>
11839           </tr>
11840
11841
11842           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11843            <!-- end of entry -->
11844         
11845         
11846
11847       <!-- end of kind -->
11848       </tbody>
11849       <tr><td colspan="7" class="kind">dynamic</td></tr>
11850
11851       <thead class="entries_header">
11852         <tr>
11853           <th class="th_name">Property Name</th>
11854           <th class="th_type">Type</th>
11855           <th class="th_description">Description</th>
11856           <th class="th_units">Units</th>
11857           <th class="th_range">Range</th>
11858           <th class="th_hal_version">Initial HIDL HAL version</th>
11859           <th class="th_tags">Tags</th>
11860         </tr>
11861       </thead>
11862
11863       <tbody>
11864
11865         
11866
11867         
11868
11869         
11870
11871         
11872
11873                 
11874           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11875             <td class="entry_name
11876              " rowspan="3">
11877               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11878             </td>
11879             <td class="entry_type">
11880                 <span class="entry_type_name">byte</span>
11881
11882               <span class="entry_type_visibility"> [java_public as location]</span>
11883
11884               <span class="entry_type_synthetic">[synthetic] </span>
11885
11886               <span class="entry_type_hwlevel">[legacy] </span>
11887
11888
11889
11890
11891             </td> <!-- entry_type -->
11892
11893             <td class="entry_description">
11894               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11895             </td>
11896
11897             <td class="entry_units">
11898             </td>
11899
11900             <td class="entry_range">
11901             </td>
11902
11903             <td class="entry_hal_version">
11904               <p>3.<wbr/>2</p>
11905             </td>
11906
11907             <td class="entry_tags">
11908             </td>
11909
11910           </tr>
11911           <tr class="entries_header">
11912             <th class="th_details" colspan="6">Details</th>
11913           </tr>
11914           <tr class="entry_cont">
11915             <td class="entry_details" colspan="6">
11916               <p>Setting a location object in a request will include the GPS coordinates of the location
11917 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11918 viewed by anyone who receives the JPEG image.<wbr/></p>
11919             </td>
11920           </tr>
11921
11922
11923           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11924            <!-- end of entry -->
11925         
11926                 
11927           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11928             <td class="entry_name
11929              " rowspan="1">
11930               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11931             </td>
11932             <td class="entry_type">
11933                 <span class="entry_type_name">double</span>
11934                 <span class="entry_type_container">x</span>
11935
11936                 <span class="entry_type_array">
11937                   3
11938                 </span>
11939               <span class="entry_type_visibility"> [ndk_public]</span>
11940
11941
11942               <span class="entry_type_hwlevel">[legacy] </span>
11943
11944
11945                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11946
11947
11948             </td> <!-- entry_type -->
11949
11950             <td class="entry_description">
11951               <p>GPS coordinates to include in output JPEG
11952 EXIF.<wbr/></p>
11953             </td>
11954
11955             <td class="entry_units">
11956             </td>
11957
11958             <td class="entry_range">
11959               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11960             </td>
11961
11962             <td class="entry_hal_version">
11963               <p>3.<wbr/>2</p>
11964             </td>
11965
11966             <td class="entry_tags">
11967               <ul class="entry_tags">
11968                   <li><a href="#tag_BC">BC</a></li>
11969               </ul>
11970             </td>
11971
11972           </tr>
11973
11974
11975           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11976            <!-- end of entry -->
11977         
11978                 
11979           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11980             <td class="entry_name
11981              " rowspan="1">
11982               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11983             </td>
11984             <td class="entry_type">
11985                 <span class="entry_type_name">byte</span>
11986
11987               <span class="entry_type_visibility"> [ndk_public as string]</span>
11988
11989
11990               <span class="entry_type_hwlevel">[legacy] </span>
11991
11992
11993
11994
11995             </td> <!-- entry_type -->
11996
11997             <td class="entry_description">
11998               <p>32 characters describing GPS algorithm to
11999 include in EXIF.<wbr/></p>
12000             </td>
12001
12002             <td class="entry_units">
12003               UTF-8 null-terminated string
12004             </td>
12005
12006             <td class="entry_range">
12007             </td>
12008
12009             <td class="entry_hal_version">
12010               <p>3.<wbr/>2</p>
12011             </td>
12012
12013             <td class="entry_tags">
12014               <ul class="entry_tags">
12015                   <li><a href="#tag_BC">BC</a></li>
12016               </ul>
12017             </td>
12018
12019           </tr>
12020
12021
12022           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12023            <!-- end of entry -->
12024         
12025                 
12026           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12027             <td class="entry_name
12028              " rowspan="1">
12029               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12030             </td>
12031             <td class="entry_type">
12032                 <span class="entry_type_name">int64</span>
12033
12034               <span class="entry_type_visibility"> [ndk_public]</span>
12035
12036
12037               <span class="entry_type_hwlevel">[legacy] </span>
12038
12039
12040
12041
12042             </td> <!-- entry_type -->
12043
12044             <td class="entry_description">
12045               <p>Time GPS fix was made to include in
12046 EXIF.<wbr/></p>
12047             </td>
12048
12049             <td class="entry_units">
12050               UTC in seconds since January 1,<wbr/> 1970
12051             </td>
12052
12053             <td class="entry_range">
12054             </td>
12055
12056             <td class="entry_hal_version">
12057               <p>3.<wbr/>2</p>
12058             </td>
12059
12060             <td class="entry_tags">
12061               <ul class="entry_tags">
12062                   <li><a href="#tag_BC">BC</a></li>
12063               </ul>
12064             </td>
12065
12066           </tr>
12067
12068
12069           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12070            <!-- end of entry -->
12071         
12072                 
12073           <tr class="entry" id="dynamic_android.jpeg.orientation">
12074             <td class="entry_name
12075              " rowspan="3">
12076               android.<wbr/>jpeg.<wbr/>orientation
12077             </td>
12078             <td class="entry_type">
12079                 <span class="entry_type_name">int32</span>
12080
12081               <span class="entry_type_visibility"> [public]</span>
12082
12083
12084               <span class="entry_type_hwlevel">[legacy] </span>
12085
12086
12087
12088
12089             </td> <!-- entry_type -->
12090
12091             <td class="entry_description">
12092               <p>The orientation for a JPEG image.<wbr/></p>
12093             </td>
12094
12095             <td class="entry_units">
12096               Degrees in multiples of 90
12097             </td>
12098
12099             <td class="entry_range">
12100               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12101             </td>
12102
12103             <td class="entry_hal_version">
12104               <p>3.<wbr/>2</p>
12105             </td>
12106
12107             <td class="entry_tags">
12108               <ul class="entry_tags">
12109                   <li><a href="#tag_BC">BC</a></li>
12110               </ul>
12111             </td>
12112
12113           </tr>
12114           <tr class="entries_header">
12115             <th class="th_details" colspan="6">Details</th>
12116           </tr>
12117           <tr class="entry_cont">
12118             <td class="entry_details" colspan="6">
12119               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12120 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12121 upright.<wbr/></p>
12122 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12123 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12124 the thumbnail data will also be rotated.<wbr/></p>
12125 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12126 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12127 <p>To translate from the device orientation given by the Android sensor APIs for camera
12128 sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
12129 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12130     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12131     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12132
12133     //<wbr/> Round device orientation to a multiple of 90
12134     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12135
12136     //<wbr/> Reverse device orientation for front-facing cameras
12137     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12138     if (facingFront) deviceOrientation = -deviceOrientation;
12139
12140     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12141     //<wbr/> the image upright relative to the device orientation
12142     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12143
12144     return jpegOrientation;
12145 }
12146 </code></pre>
12147 <p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
12148 also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
12149             </td>
12150           </tr>
12151
12152
12153           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12154            <!-- end of entry -->
12155         
12156                 
12157           <tr class="entry" id="dynamic_android.jpeg.quality">
12158             <td class="entry_name
12159              " rowspan="3">
12160               android.<wbr/>jpeg.<wbr/>quality
12161             </td>
12162             <td class="entry_type">
12163                 <span class="entry_type_name">byte</span>
12164
12165               <span class="entry_type_visibility"> [public]</span>
12166
12167
12168               <span class="entry_type_hwlevel">[legacy] </span>
12169
12170
12171
12172
12173             </td> <!-- entry_type -->
12174
12175             <td class="entry_description">
12176               <p>Compression quality of the final JPEG
12177 image.<wbr/></p>
12178             </td>
12179
12180             <td class="entry_units">
12181             </td>
12182
12183             <td class="entry_range">
12184               <p>1-100; larger is higher quality</p>
12185             </td>
12186
12187             <td class="entry_hal_version">
12188               <p>3.<wbr/>2</p>
12189             </td>
12190
12191             <td class="entry_tags">
12192               <ul class="entry_tags">
12193                   <li><a href="#tag_BC">BC</a></li>
12194               </ul>
12195             </td>
12196
12197           </tr>
12198           <tr class="entries_header">
12199             <th class="th_details" colspan="6">Details</th>
12200           </tr>
12201           <tr class="entry_cont">
12202             <td class="entry_details" colspan="6">
12203               <p>85-95 is typical usage range.<wbr/></p>
12204             </td>
12205           </tr>
12206
12207
12208           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12209            <!-- end of entry -->
12210         
12211                 
12212           <tr class="entry" id="dynamic_android.jpeg.size">
12213             <td class="entry_name
12214              " rowspan="3">
12215               android.<wbr/>jpeg.<wbr/>size
12216             </td>
12217             <td class="entry_type">
12218                 <span class="entry_type_name">int32</span>
12219
12220               <span class="entry_type_visibility"> [system]</span>
12221
12222
12223
12224
12225
12226
12227             </td> <!-- entry_type -->
12228
12229             <td class="entry_description">
12230               <p>The size of the compressed JPEG image,<wbr/> in
12231 bytes</p>
12232             </td>
12233
12234             <td class="entry_units">
12235             </td>
12236
12237             <td class="entry_range">
12238               <p>&gt;= 0</p>
12239             </td>
12240
12241             <td class="entry_hal_version">
12242               <p>3.<wbr/>2</p>
12243             </td>
12244
12245             <td class="entry_tags">
12246               <ul class="entry_tags">
12247                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12248               </ul>
12249             </td>
12250
12251           </tr>
12252           <tr class="entries_header">
12253             <th class="th_details" colspan="6">Details</th>
12254           </tr>
12255           <tr class="entry_cont">
12256             <td class="entry_details" colspan="6">
12257               <p>If no JPEG output is produced for the request,<wbr/>
12258 this must be 0.<wbr/></p>
12259 <p>Otherwise,<wbr/> this describes the real size of the compressed
12260 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12261 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12262 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12263 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12264 500000 make up the real data.<wbr/></p>
12265             </td>
12266           </tr>
12267
12268
12269           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12270            <!-- end of entry -->
12271         
12272                 
12273           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12274             <td class="entry_name
12275              " rowspan="1">
12276               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12277             </td>
12278             <td class="entry_type">
12279                 <span class="entry_type_name">byte</span>
12280
12281               <span class="entry_type_visibility"> [public]</span>
12282
12283
12284               <span class="entry_type_hwlevel">[legacy] </span>
12285
12286
12287
12288
12289             </td> <!-- entry_type -->
12290
12291             <td class="entry_description">
12292               <p>Compression quality of JPEG
12293 thumbnail.<wbr/></p>
12294             </td>
12295
12296             <td class="entry_units">
12297             </td>
12298
12299             <td class="entry_range">
12300               <p>1-100; larger is higher quality</p>
12301             </td>
12302
12303             <td class="entry_hal_version">
12304               <p>3.<wbr/>2</p>
12305             </td>
12306
12307             <td class="entry_tags">
12308               <ul class="entry_tags">
12309                   <li><a href="#tag_BC">BC</a></li>
12310               </ul>
12311             </td>
12312
12313           </tr>
12314
12315
12316           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12317            <!-- end of entry -->
12318         
12319                 
12320           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12321             <td class="entry_name
12322              " rowspan="5">
12323               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12324             </td>
12325             <td class="entry_type">
12326                 <span class="entry_type_name">int32</span>
12327                 <span class="entry_type_container">x</span>
12328
12329                 <span class="entry_type_array">
12330                   2
12331                 </span>
12332               <span class="entry_type_visibility"> [public as size]</span>
12333
12334
12335               <span class="entry_type_hwlevel">[legacy] </span>
12336
12337
12338
12339
12340             </td> <!-- entry_type -->
12341
12342             <td class="entry_description">
12343               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12344             </td>
12345
12346             <td class="entry_units">
12347             </td>
12348
12349             <td class="entry_range">
12350               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12351             </td>
12352
12353             <td class="entry_hal_version">
12354               <p>3.<wbr/>2</p>
12355             </td>
12356
12357             <td class="entry_tags">
12358               <ul class="entry_tags">
12359                   <li><a href="#tag_BC">BC</a></li>
12360               </ul>
12361             </td>
12362
12363           </tr>
12364           <tr class="entries_header">
12365             <th class="th_details" colspan="6">Details</th>
12366           </tr>
12367           <tr class="entry_cont">
12368             <td class="entry_details" colspan="6">
12369               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12370 but the captured JPEG will still be a valid image.<wbr/></p>
12371 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12372 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12373 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12374 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12375 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12376 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12377 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12378 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12379 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12380 the camera device will handle thumbnail rotation in one of the following ways:</p>
12381 <ul>
12382 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12383   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12384 <li>Rotate the jpeg and thumbnail image data and not set
12385   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12386   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12387   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12388   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12389   size.<wbr/></li>
12390 </ul>
12391             </td>
12392           </tr>
12393
12394           <tr class="entries_header">
12395             <th class="th_details" colspan="6">HAL Implementation Details</th>
12396           </tr>
12397           <tr class="entry_cont">
12398             <td class="entry_details" colspan="6">
12399               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12400 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12401 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12402 thumbnail image cropping.<wbr/></p>
12403             </td>
12404           </tr>
12405
12406           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12407            <!-- end of entry -->
12408         
12409         
12410
12411       <!-- end of kind -->
12412       </tbody>
12413
12414   <!-- end of section -->
12415   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12416
12417
12418       <tr><td colspan="7" class="kind">controls</td></tr>
12419
12420       <thead class="entries_header">
12421         <tr>
12422           <th class="th_name">Property Name</th>
12423           <th class="th_type">Type</th>
12424           <th class="th_description">Description</th>
12425           <th class="th_units">Units</th>
12426           <th class="th_range">Range</th>
12427           <th class="th_hal_version">Initial HIDL HAL version</th>
12428           <th class="th_tags">Tags</th>
12429         </tr>
12430       </thead>
12431
12432       <tbody>
12433
12434         
12435
12436         
12437
12438         
12439
12440         
12441
12442                 
12443           <tr class="entry" id="controls_android.lens.aperture">
12444             <td class="entry_name
12445              " rowspan="3">
12446               android.<wbr/>lens.<wbr/>aperture
12447             </td>
12448             <td class="entry_type">
12449                 <span class="entry_type_name">float</span>
12450
12451               <span class="entry_type_visibility"> [public]</span>
12452
12453
12454               <span class="entry_type_hwlevel">[full] </span>
12455
12456
12457
12458
12459             </td> <!-- entry_type -->
12460
12461             <td class="entry_description">
12462               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12463 effective aperture diameter.<wbr/></p>
12464             </td>
12465
12466             <td class="entry_units">
12467               The f-number (f/<wbr/>N)
12468             </td>
12469
12470             <td class="entry_range">
12471               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12472             </td>
12473
12474             <td class="entry_hal_version">
12475               <p>3.<wbr/>2</p>
12476             </td>
12477
12478             <td class="entry_tags">
12479               <ul class="entry_tags">
12480                   <li><a href="#tag_V1">V1</a></li>
12481               </ul>
12482             </td>
12483
12484           </tr>
12485           <tr class="entries_header">
12486             <th class="th_details" colspan="6">Details</th>
12487           </tr>
12488           <tr class="entry_cont">
12489             <td class="entry_details" colspan="6">
12490               <p>Setting this value is only supported on the camera devices that have a variable
12491 aperture lens.<wbr/></p>
12492 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12493 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12494 <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>
12495 to achieve manual exposure control.<wbr/></p>
12496 <p>The requested aperture value may take several frames to reach the
12497 requested value; the camera device will report the current (intermediate)
12498 aperture size in capture result metadata while the aperture is changing.<wbr/>
12499 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>
12500 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12501 the ON modes,<wbr/> this will be overridden by the camera device
12502 auto-exposure algorithm,<wbr/> the overridden values are then provided
12503 back to the user in the corresponding result.<wbr/></p>
12504             </td>
12505           </tr>
12506
12507
12508           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12509            <!-- end of entry -->
12510         
12511                 
12512           <tr class="entry" id="controls_android.lens.filterDensity">
12513             <td class="entry_name
12514              " rowspan="3">
12515               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12516             </td>
12517             <td class="entry_type">
12518                 <span class="entry_type_name">float</span>
12519
12520               <span class="entry_type_visibility"> [public]</span>
12521
12522
12523               <span class="entry_type_hwlevel">[full] </span>
12524
12525
12526
12527
12528             </td> <!-- entry_type -->
12529
12530             <td class="entry_description">
12531               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12532             </td>
12533
12534             <td class="entry_units">
12535               Exposure Value (EV)
12536             </td>
12537
12538             <td class="entry_range">
12539               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12540             </td>
12541
12542             <td class="entry_hal_version">
12543               <p>3.<wbr/>2</p>
12544             </td>
12545
12546             <td class="entry_tags">
12547               <ul class="entry_tags">
12548                   <li><a href="#tag_V1">V1</a></li>
12549               </ul>
12550             </td>
12551
12552           </tr>
12553           <tr class="entries_header">
12554             <th class="th_details" colspan="6">Details</th>
12555           </tr>
12556           <tr class="entry_cont">
12557             <td class="entry_details" colspan="6">
12558               <p>This control will not be supported on most camera devices.<wbr/></p>
12559 <p>Lens filters are typically used to lower the amount of light the
12560 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12561 step is the standard logarithmic representation,<wbr/> which are
12562 non-negative,<wbr/> and inversely proportional to the amount of light
12563 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12564 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12565 mean that the filter is set to reduce incoming light by two stops
12566 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12567 <p>It may take several frames before the lens filter density changes
12568 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12569 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12570             </td>
12571           </tr>
12572
12573
12574           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12575            <!-- end of entry -->
12576         
12577                 
12578           <tr class="entry" id="controls_android.lens.focalLength">
12579             <td class="entry_name
12580              " rowspan="3">
12581               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12582             </td>
12583             <td class="entry_type">
12584                 <span class="entry_type_name">float</span>
12585
12586               <span class="entry_type_visibility"> [public]</span>
12587
12588
12589               <span class="entry_type_hwlevel">[legacy] </span>
12590
12591
12592
12593
12594             </td> <!-- entry_type -->
12595
12596             <td class="entry_description">
12597               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12598             </td>
12599
12600             <td class="entry_units">
12601               Millimeters
12602             </td>
12603
12604             <td class="entry_range">
12605               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12606             </td>
12607
12608             <td class="entry_hal_version">
12609               <p>3.<wbr/>2</p>
12610             </td>
12611
12612             <td class="entry_tags">
12613               <ul class="entry_tags">
12614                   <li><a href="#tag_V1">V1</a></li>
12615               </ul>
12616             </td>
12617
12618           </tr>
12619           <tr class="entries_header">
12620             <th class="th_details" colspan="6">Details</th>
12621           </tr>
12622           <tr class="entry_cont">
12623             <td class="entry_details" colspan="6">
12624               <p>This setting controls the physical focal length of the camera
12625 device's lens.<wbr/> Changing the focal length changes the field of
12626 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12627 <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
12628 setting won't be applied instantaneously,<wbr/> and it may take several
12629 frames before the lens can change to the requested focal length.<wbr/>
12630 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12631 be set to MOVING.<wbr/></p>
12632 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12633             </td>
12634           </tr>
12635
12636
12637           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12638            <!-- end of entry -->
12639         
12640                 
12641           <tr class="entry" id="controls_android.lens.focusDistance">
12642             <td class="entry_name
12643              " rowspan="3">
12644               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12645             </td>
12646             <td class="entry_type">
12647                 <span class="entry_type_name">float</span>
12648
12649               <span class="entry_type_visibility"> [public]</span>
12650
12651
12652               <span class="entry_type_hwlevel">[full] </span>
12653
12654
12655
12656
12657             </td> <!-- entry_type -->
12658
12659             <td class="entry_description">
12660               <p>Desired distance to plane of sharpest focus,<wbr/>
12661 measured from frontmost surface of the lens.<wbr/></p>
12662             </td>
12663
12664             <td class="entry_units">
12665               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12666             </td>
12667
12668             <td class="entry_range">
12669               <p>&gt;= 0</p>
12670             </td>
12671
12672             <td class="entry_hal_version">
12673               <p>3.<wbr/>2</p>
12674             </td>
12675
12676             <td class="entry_tags">
12677               <ul class="entry_tags">
12678                   <li><a href="#tag_BC">BC</a></li>
12679                   <li><a href="#tag_V1">V1</a></li>
12680               </ul>
12681             </td>
12682
12683           </tr>
12684           <tr class="entries_header">
12685             <th class="th_details" colspan="6">Details</th>
12686           </tr>
12687           <tr class="entry_cont">
12688             <td class="entry_details" colspan="6">
12689               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12690 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12691 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12692 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12693 <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>
12694 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12695 instantaneously,<wbr/> and it may take several frames before the lens
12696 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12697 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12698 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12699 for infinity focus.<wbr/></p>
12700             </td>
12701           </tr>
12702
12703
12704           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12705            <!-- end of entry -->
12706         
12707                 
12708           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12709             <td class="entry_name
12710              " rowspan="3">
12711               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12712             </td>
12713             <td class="entry_type">
12714                 <span class="entry_type_name entry_type_name_enum">byte</span>
12715
12716               <span class="entry_type_visibility"> [public]</span>
12717
12718
12719               <span class="entry_type_hwlevel">[limited] </span>
12720
12721
12722
12723                 <ul class="entry_type_enum">
12724                   <li>
12725                     <span class="entry_type_enum_name">OFF (v3.2)</span>
12726                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12727                   </li>
12728                   <li>
12729                     <span class="entry_type_enum_name">ON (v3.2)</span>
12730                     <span class="entry_type_enum_optional">[optional]</span>
12731                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12732                   </li>
12733                 </ul>
12734
12735             </td> <!-- entry_type -->
12736
12737             <td class="entry_description">
12738               <p>Sets whether the camera device uses optical image stabilization (OIS)
12739 when capturing images.<wbr/></p>
12740             </td>
12741
12742             <td class="entry_units">
12743             </td>
12744
12745             <td class="entry_range">
12746               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12747             </td>
12748
12749             <td class="entry_hal_version">
12750               <p>3.<wbr/>2</p>
12751             </td>
12752
12753             <td class="entry_tags">
12754               <ul class="entry_tags">
12755                   <li><a href="#tag_V1">V1</a></li>
12756               </ul>
12757             </td>
12758
12759           </tr>
12760           <tr class="entries_header">
12761             <th class="th_details" colspan="6">Details</th>
12762           </tr>
12763           <tr class="entry_cont">
12764             <td class="entry_details" colspan="6">
12765               <p>OIS is used to compensate for motion blur due to small
12766 movements of the camera during capture.<wbr/> Unlike digital image
12767 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12768 makes use of mechanical elements to stabilize the camera
12769 sensor,<wbr/> and thus allows for longer exposure times before
12770 camera shake becomes apparent.<wbr/></p>
12771 <p>Switching between different optical stabilization modes may take several
12772 frames to initialize,<wbr/> the camera device will report the current mode in
12773 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12774 optical stabilization modes in the first several capture results may still
12775 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12776 <p>If a camera device supports both OIS and digital image stabilization
12777 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12778 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12779 <p>Not all devices will support OIS; see
12780 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12781 available controls.<wbr/></p>
12782             </td>
12783           </tr>
12784
12785
12786           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12787            <!-- end of entry -->
12788         
12789         
12790
12791       <!-- end of kind -->
12792       </tbody>
12793       <tr><td colspan="7" class="kind">static</td></tr>
12794
12795       <thead class="entries_header">
12796         <tr>
12797           <th class="th_name">Property Name</th>
12798           <th class="th_type">Type</th>
12799           <th class="th_description">Description</th>
12800           <th class="th_units">Units</th>
12801           <th class="th_range">Range</th>
12802           <th class="th_hal_version">Initial HIDL HAL version</th>
12803           <th class="th_tags">Tags</th>
12804         </tr>
12805       </thead>
12806
12807       <tbody>
12808
12809         
12810
12811         
12812
12813         
12814
12815         
12816                 
12817             
12818
12819                 
12820           <tr class="entry" id="static_android.lens.info.availableApertures">
12821             <td class="entry_name
12822              " rowspan="3">
12823               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12824             </td>
12825             <td class="entry_type">
12826                 <span class="entry_type_name">float</span>
12827                 <span class="entry_type_container">x</span>
12828
12829                 <span class="entry_type_array">
12830                   n
12831                 </span>
12832               <span class="entry_type_visibility"> [public]</span>
12833
12834
12835               <span class="entry_type_hwlevel">[full] </span>
12836
12837
12838
12839
12840             </td> <!-- entry_type -->
12841
12842             <td class="entry_description">
12843               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12844 supported by this camera device.<wbr/></p>
12845             </td>
12846
12847             <td class="entry_units">
12848               The aperture f-number
12849             </td>
12850
12851             <td class="entry_range">
12852             </td>
12853
12854             <td class="entry_hal_version">
12855               <p>3.<wbr/>2</p>
12856             </td>
12857
12858             <td class="entry_tags">
12859               <ul class="entry_tags">
12860                   <li><a href="#tag_V1">V1</a></li>
12861               </ul>
12862             </td>
12863
12864           </tr>
12865           <tr class="entries_header">
12866             <th class="th_details" colspan="6">Details</th>
12867           </tr>
12868           <tr class="entry_cont">
12869             <td class="entry_details" colspan="6">
12870               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12871 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12872 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12873 in this list will be sorted in ascending order.<wbr/></p>
12874             </td>
12875           </tr>
12876
12877
12878           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12879            <!-- end of entry -->
12880         
12881                 
12882           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12883             <td class="entry_name
12884              " rowspan="3">
12885               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12886             </td>
12887             <td class="entry_type">
12888                 <span class="entry_type_name">float</span>
12889                 <span class="entry_type_container">x</span>
12890
12891                 <span class="entry_type_array">
12892                   n
12893                 </span>
12894               <span class="entry_type_visibility"> [public]</span>
12895
12896
12897               <span class="entry_type_hwlevel">[full] </span>
12898
12899
12900
12901
12902             </td> <!-- entry_type -->
12903
12904             <td class="entry_description">
12905               <p>List of neutral density filter values for
12906 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12907             </td>
12908
12909             <td class="entry_units">
12910               Exposure value (EV)
12911             </td>
12912
12913             <td class="entry_range">
12914               <p>Values are &gt;= 0</p>
12915             </td>
12916
12917             <td class="entry_hal_version">
12918               <p>3.<wbr/>2</p>
12919             </td>
12920
12921             <td class="entry_tags">
12922               <ul class="entry_tags">
12923                   <li><a href="#tag_V1">V1</a></li>
12924               </ul>
12925             </td>
12926
12927           </tr>
12928           <tr class="entries_header">
12929             <th class="th_details" colspan="6">Details</th>
12930           </tr>
12931           <tr class="entry_cont">
12932             <td class="entry_details" colspan="6">
12933               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12934 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12935 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12936             </td>
12937           </tr>
12938
12939
12940           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12941            <!-- end of entry -->
12942         
12943                 
12944           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12945             <td class="entry_name
12946              " rowspan="3">
12947               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12948             </td>
12949             <td class="entry_type">
12950                 <span class="entry_type_name">float</span>
12951                 <span class="entry_type_container">x</span>
12952
12953                 <span class="entry_type_array">
12954                   n
12955                 </span>
12956               <span class="entry_type_visibility"> [public]</span>
12957
12958
12959               <span class="entry_type_hwlevel">[legacy] </span>
12960
12961
12962                 <div class="entry_type_notes">The list of available focal lengths</div>
12963
12964
12965             </td> <!-- entry_type -->
12966
12967             <td class="entry_description">
12968               <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
12969 device.<wbr/></p>
12970             </td>
12971
12972             <td class="entry_units">
12973               Millimeters
12974             </td>
12975
12976             <td class="entry_range">
12977               <p>Values are &gt; 0</p>
12978             </td>
12979
12980             <td class="entry_hal_version">
12981               <p>3.<wbr/>2</p>
12982             </td>
12983
12984             <td class="entry_tags">
12985               <ul class="entry_tags">
12986                   <li><a href="#tag_BC">BC</a></li>
12987                   <li><a href="#tag_V1">V1</a></li>
12988               </ul>
12989             </td>
12990
12991           </tr>
12992           <tr class="entries_header">
12993             <th class="th_details" colspan="6">Details</th>
12994           </tr>
12995           <tr class="entry_cont">
12996             <td class="entry_details" colspan="6">
12997               <p>If optical zoom is not supported,<wbr/> this list will only contain
12998 a single value corresponding to the fixed focal length of the
12999 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
13000 by the camera device,<wbr/> in ascending order.<wbr/></p>
13001             </td>
13002           </tr>
13003
13004
13005           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13006            <!-- end of entry -->
13007         
13008                 
13009           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13010             <td class="entry_name
13011              " rowspan="3">
13012               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13013             </td>
13014             <td class="entry_type">
13015                 <span class="entry_type_name">byte</span>
13016                 <span class="entry_type_container">x</span>
13017
13018                 <span class="entry_type_array">
13019                   n
13020                 </span>
13021               <span class="entry_type_visibility"> [public as enumList]</span>
13022
13023
13024               <span class="entry_type_hwlevel">[limited] </span>
13025
13026
13027                 <div class="entry_type_notes">list of enums</div>
13028
13029
13030             </td> <!-- entry_type -->
13031
13032             <td class="entry_description">
13033               <p>List of optical image stabilization (OIS) modes for
13034 <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>
13035             </td>
13036
13037             <td class="entry_units">
13038             </td>
13039
13040             <td class="entry_range">
13041               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13042             </td>
13043
13044             <td class="entry_hal_version">
13045               <p>3.<wbr/>2</p>
13046             </td>
13047
13048             <td class="entry_tags">
13049               <ul class="entry_tags">
13050                   <li><a href="#tag_V1">V1</a></li>
13051               </ul>
13052             </td>
13053
13054           </tr>
13055           <tr class="entries_header">
13056             <th class="th_details" colspan="6">Details</th>
13057           </tr>
13058           <tr class="entry_cont">
13059             <td class="entry_details" colspan="6">
13060               <p>If OIS is not supported by a given camera device,<wbr/> this list will
13061 contain only OFF.<wbr/></p>
13062             </td>
13063           </tr>
13064
13065
13066           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13067            <!-- end of entry -->
13068         
13069                 
13070           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13071             <td class="entry_name
13072              " rowspan="3">
13073               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13074             </td>
13075             <td class="entry_type">
13076                 <span class="entry_type_name">float</span>
13077
13078               <span class="entry_type_visibility"> [public]</span>
13079
13080
13081               <span class="entry_type_hwlevel">[limited] </span>
13082
13083
13084
13085
13086             </td> <!-- entry_type -->
13087
13088             <td class="entry_description">
13089               <p>Hyperfocal distance for this lens.<wbr/></p>
13090             </td>
13091
13092             <td class="entry_units">
13093               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13094             </td>
13095
13096             <td class="entry_range">
13097               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13098 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>
13099             </td>
13100
13101             <td class="entry_hal_version">
13102               <p>3.<wbr/>2</p>
13103             </td>
13104
13105             <td class="entry_tags">
13106             </td>
13107
13108           </tr>
13109           <tr class="entries_header">
13110             <th class="th_details" colspan="6">Details</th>
13111           </tr>
13112           <tr class="entry_cont">
13113             <td class="entry_details" colspan="6">
13114               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13115 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>
13116             </td>
13117           </tr>
13118
13119
13120           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13121            <!-- end of entry -->
13122         
13123                 
13124           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13125             <td class="entry_name
13126              " rowspan="5">
13127               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13128             </td>
13129             <td class="entry_type">
13130                 <span class="entry_type_name">float</span>
13131
13132               <span class="entry_type_visibility"> [public]</span>
13133
13134
13135               <span class="entry_type_hwlevel">[limited] </span>
13136
13137
13138
13139
13140             </td> <!-- entry_type -->
13141
13142             <td class="entry_description">
13143               <p>Shortest distance from frontmost surface
13144 of the lens that can be brought into sharp focus.<wbr/></p>
13145             </td>
13146
13147             <td class="entry_units">
13148               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13149             </td>
13150
13151             <td class="entry_range">
13152               <p>&gt;= 0</p>
13153             </td>
13154
13155             <td class="entry_hal_version">
13156               <p>3.<wbr/>2</p>
13157             </td>
13158
13159             <td class="entry_tags">
13160               <ul class="entry_tags">
13161                   <li><a href="#tag_V1">V1</a></li>
13162               </ul>
13163             </td>
13164
13165           </tr>
13166           <tr class="entries_header">
13167             <th class="th_details" colspan="6">Details</th>
13168           </tr>
13169           <tr class="entry_cont">
13170             <td class="entry_details" colspan="6">
13171               <p>If the lens is fixed-focus,<wbr/> this will be
13172 0.<wbr/></p>
13173             </td>
13174           </tr>
13175
13176           <tr class="entries_header">
13177             <th class="th_details" colspan="6">HAL Implementation Details</th>
13178           </tr>
13179           <tr class="entry_cont">
13180             <td class="entry_details" colspan="6">
13181               <p>Mandatory for FULL devices; LIMITED devices
13182 must always set this value to 0 for fixed-focus; and may omit
13183 the minimum focus distance otherwise.<wbr/></p>
13184 <p>This field is also mandatory for all devices advertising
13185 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13186             </td>
13187           </tr>
13188
13189           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13190            <!-- end of entry -->
13191         
13192                 
13193           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13194             <td class="entry_name
13195              " rowspan="3">
13196               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13197             </td>
13198             <td class="entry_type">
13199                 <span class="entry_type_name">int32</span>
13200                 <span class="entry_type_container">x</span>
13201
13202                 <span class="entry_type_array">
13203                   2
13204                 </span>
13205               <span class="entry_type_visibility"> [ndk_public as size]</span>
13206
13207
13208               <span class="entry_type_hwlevel">[full] </span>
13209
13210
13211                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13212
13213
13214             </td> <!-- entry_type -->
13215
13216             <td class="entry_description">
13217               <p>Dimensions of lens shading map.<wbr/></p>
13218             </td>
13219
13220             <td class="entry_units">
13221             </td>
13222
13223             <td class="entry_range">
13224               <p>Both values &gt;= 1</p>
13225             </td>
13226
13227             <td class="entry_hal_version">
13228               <p>3.<wbr/>2</p>
13229             </td>
13230
13231             <td class="entry_tags">
13232               <ul class="entry_tags">
13233                   <li><a href="#tag_V1">V1</a></li>
13234               </ul>
13235             </td>
13236
13237           </tr>
13238           <tr class="entries_header">
13239             <th class="th_details" colspan="6">Details</th>
13240           </tr>
13241           <tr class="entry_cont">
13242             <td class="entry_details" colspan="6">
13243               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13244 must be smaller than 64x64.<wbr/></p>
13245             </td>
13246           </tr>
13247
13248
13249           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13250            <!-- end of entry -->
13251         
13252                 
13253           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13254             <td class="entry_name
13255              " rowspan="5">
13256               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13257             </td>
13258             <td class="entry_type">
13259                 <span class="entry_type_name entry_type_name_enum">byte</span>
13260
13261               <span class="entry_type_visibility"> [public]</span>
13262
13263
13264               <span class="entry_type_hwlevel">[limited] </span>
13265
13266
13267
13268                 <ul class="entry_type_enum">
13269                   <li>
13270                     <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13271                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13272 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13273 <p>Setting the lens to the same focus distance on separate occasions may
13274 result in a different real focus distance,<wbr/> depending on factors such
13275 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13276 and the device temperature.<wbr/> The focus distance value will still be
13277 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
13278 represents the farthest focus.<wbr/></p></span>
13279                   </li>
13280                   <li>
13281                     <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13282                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13283 <p>However,<wbr/> setting the lens to the same focus distance
13284 on separate occasions may result in a different real
13285 focus distance,<wbr/> depending on factors such as the
13286 orientation of the device,<wbr/> the age of the focusing
13287 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13288                   </li>
13289                   <li>
13290                     <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13291                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13292 is calibrated.<wbr/></p>
13293 <p>The lens mechanism is calibrated so that setting the
13294 same focus distance is repeatable on multiple
13295 occasions with good accuracy,<wbr/> and the focus distance
13296 corresponds to the real physical distance to the plane
13297 of best focus.<wbr/></p></span>
13298                   </li>
13299                 </ul>
13300
13301             </td> <!-- entry_type -->
13302
13303             <td class="entry_description">
13304               <p>The lens focus distance calibration quality.<wbr/></p>
13305             </td>
13306
13307             <td class="entry_units">
13308             </td>
13309
13310             <td class="entry_range">
13311             </td>
13312
13313             <td class="entry_hal_version">
13314               <p>3.<wbr/>2</p>
13315             </td>
13316
13317             <td class="entry_tags">
13318               <ul class="entry_tags">
13319                   <li><a href="#tag_V1">V1</a></li>
13320               </ul>
13321             </td>
13322
13323           </tr>
13324           <tr class="entries_header">
13325             <th class="th_details" colspan="6">Details</th>
13326           </tr>
13327           <tr class="entry_cont">
13328             <td class="entry_details" colspan="6">
13329               <p>The lens focus distance calibration quality determines the reliability of
13330 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13331 <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
13332 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13333 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13334 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13335 and increasing positive numbers represent focusing closer and closer
13336 to the camera device.<wbr/> The focus distance control also uses diopters
13337 on these devices.<wbr/></p>
13338 <p>UNCALIBRATED devices do not use units that are directly comparable
13339 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13340 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13341 nearest focus the device can achieve.<wbr/></p>
13342             </td>
13343           </tr>
13344
13345           <tr class="entries_header">
13346             <th class="th_details" colspan="6">HAL Implementation Details</th>
13347           </tr>
13348           <tr class="entry_cont">
13349             <td class="entry_details" colspan="6">
13350               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13351 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13352 and the lens focus distance is set to 0 diopters
13353 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13354 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13355 lens some time to move; during the move the lens state should be MOVING and
13356 the output diopter value should be changing toward 0.<wbr/></p>
13357             </td>
13358           </tr>
13359
13360           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13361            <!-- end of entry -->
13362         
13363         
13364         
13365
13366                 
13367           <tr class="entry" id="static_android.lens.facing">
13368             <td class="entry_name
13369              " rowspan="1">
13370               android.<wbr/>lens.<wbr/>facing
13371             </td>
13372             <td class="entry_type">
13373                 <span class="entry_type_name entry_type_name_enum">byte</span>
13374
13375               <span class="entry_type_visibility"> [public]</span>
13376
13377
13378               <span class="entry_type_hwlevel">[legacy] </span>
13379
13380
13381
13382                 <ul class="entry_type_enum">
13383                   <li>
13384                     <span class="entry_type_enum_name">FRONT (v3.2)</span>
13385                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13386                   </li>
13387                   <li>
13388                     <span class="entry_type_enum_name">BACK (v3.2)</span>
13389                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13390                   </li>
13391                   <li>
13392                     <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13393                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13394 device's screen.<wbr/></p></span>
13395                   </li>
13396                 </ul>
13397
13398             </td> <!-- entry_type -->
13399
13400             <td class="entry_description">
13401               <p>Direction the camera faces relative to
13402 device screen.<wbr/></p>
13403             </td>
13404
13405             <td class="entry_units">
13406             </td>
13407
13408             <td class="entry_range">
13409             </td>
13410
13411             <td class="entry_hal_version">
13412               <p>3.<wbr/>2</p>
13413             </td>
13414
13415             <td class="entry_tags">
13416             </td>
13417
13418           </tr>
13419
13420
13421           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13422            <!-- end of entry -->
13423         
13424                 
13425           <tr class="entry" id="static_android.lens.poseRotation">
13426             <td class="entry_name
13427              " rowspan="3">
13428               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13429             </td>
13430             <td class="entry_type">
13431                 <span class="entry_type_name">float</span>
13432                 <span class="entry_type_container">x</span>
13433
13434                 <span class="entry_type_array">
13435                   4
13436                 </span>
13437               <span class="entry_type_visibility"> [public]</span>
13438
13439
13440
13441
13442
13443
13444             </td> <!-- entry_type -->
13445
13446             <td class="entry_description">
13447               <p>The orientation of the camera relative to the sensor
13448 coordinate system.<wbr/></p>
13449             </td>
13450
13451             <td class="entry_units">
13452               
13453             Quaternion coefficients
13454           
13455             </td>
13456
13457             <td class="entry_range">
13458             </td>
13459
13460             <td class="entry_hal_version">
13461               <p>3.<wbr/>2</p>
13462             </td>
13463
13464             <td class="entry_tags">
13465               <ul class="entry_tags">
13466                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13467               </ul>
13468             </td>
13469
13470           </tr>
13471           <tr class="entries_header">
13472             <th class="th_details" colspan="6">Details</th>
13473           </tr>
13474           <tr class="entry_cont">
13475             <td class="entry_details" colspan="6">
13476               <p>The four coefficients that describe the quaternion
13477 rotation from the Android sensor coordinate system to a
13478 camera-aligned coordinate system where the X-axis is
13479 aligned with the long side of the image sensor,<wbr/> the Y-axis
13480 is aligned with the short side of the image sensor,<wbr/> and
13481 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13482 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13483 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13484 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13485 <pre><code> theta = 2 * acos(w)
13486 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13487 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13488 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13489 </code></pre>
13490 <p>To create a 3x3 rotation matrix that applies the rotation
13491 defined by this quaternion,<wbr/> the following matrix can be
13492 used:</p>
13493 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13494            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13495            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13496 </code></pre>
13497 <p>This matrix can then be used to apply the rotation to a
13498  column vector point with</p>
13499 <p><code>p' = Rp</code></p>
13500 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13501  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13502             </td>
13503           </tr>
13504
13505
13506           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13507            <!-- end of entry -->
13508         
13509                 
13510           <tr class="entry" id="static_android.lens.poseTranslation">
13511             <td class="entry_name
13512              " rowspan="3">
13513               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13514             </td>
13515             <td class="entry_type">
13516                 <span class="entry_type_name">float</span>
13517                 <span class="entry_type_container">x</span>
13518
13519                 <span class="entry_type_array">
13520                   3
13521                 </span>
13522               <span class="entry_type_visibility"> [public]</span>
13523
13524
13525
13526
13527
13528
13529             </td> <!-- entry_type -->
13530
13531             <td class="entry_description">
13532               <p>Position of the camera optical center.<wbr/></p>
13533             </td>
13534
13535             <td class="entry_units">
13536               Meters
13537             </td>
13538
13539             <td class="entry_range">
13540             </td>
13541
13542             <td class="entry_hal_version">
13543               <p>3.<wbr/>2</p>
13544             </td>
13545
13546             <td class="entry_tags">
13547               <ul class="entry_tags">
13548                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13549               </ul>
13550             </td>
13551
13552           </tr>
13553           <tr class="entries_header">
13554             <th class="th_details" colspan="6">Details</th>
13555           </tr>
13556           <tr class="entry_cont">
13557             <td class="entry_details" colspan="6">
13558               <p>The position of the camera device's lens optical center,<wbr/>
13559 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13560 <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
13561 is relative to the optical center of the largest camera device facing in the same
13562 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13563 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13564 coordinate system,<wbr/> but not the origin.<wbr/></p>
13565 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13566 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13567 from the main sensor along the +X axis (to the right from the user's perspective) will
13568 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13569 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13570 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
13571 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13572 <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
13573 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13574 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13575 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13576 coordinates.<wbr/></p>
13577 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13578 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13579 <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
13580 the center of the primary gyroscope on the device.<wbr/></p>
13581             </td>
13582           </tr>
13583
13584
13585           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13586            <!-- end of entry -->
13587         
13588                 
13589           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13590             <td class="entry_name
13591              " rowspan="3">
13592               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13593             </td>
13594             <td class="entry_type">
13595                 <span class="entry_type_name">float</span>
13596                 <span class="entry_type_container">x</span>
13597
13598                 <span class="entry_type_array">
13599                   5
13600                 </span>
13601               <span class="entry_type_visibility"> [public]</span>
13602
13603
13604
13605
13606
13607
13608             </td> <!-- entry_type -->
13609
13610             <td class="entry_description">
13611               <p>The parameters for this camera device's intrinsic
13612 calibration.<wbr/></p>
13613             </td>
13614
13615             <td class="entry_units">
13616               
13617             Pixels in the
13618             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13619             coordinate system.<wbr/>
13620           
13621             </td>
13622
13623             <td class="entry_range">
13624             </td>
13625
13626             <td class="entry_hal_version">
13627               <p>3.<wbr/>2</p>
13628             </td>
13629
13630             <td class="entry_tags">
13631               <ul class="entry_tags">
13632                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13633               </ul>
13634             </td>
13635
13636           </tr>
13637           <tr class="entries_header">
13638             <th class="th_details" colspan="6">Details</th>
13639           </tr>
13640           <tr class="entry_cont">
13641             <td class="entry_details" colspan="6">
13642               <p>The five calibration parameters that describe the
13643 transform from camera-centric 3D coordinates to sensor
13644 pixel coordinates:</p>
13645 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13646 </code></pre>
13647 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13648 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13649 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13650 being aligned with the lens plane.<wbr/></p>
13651 <p>These are typically used within a transformation matrix K:</p>
13652 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13653        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13654        0    0,<wbr/>   1 ]
13655 </code></pre>
13656 <p>which can then be combined with the camera pose rotation
13657 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13658 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13659 complete transform from world coordinates to pixel
13660 coordinates:</p>
13661 <pre><code>P = [ K 0   * [ R t
13662      0 1 ]     0 1 ]
13663 </code></pre>
13664 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13665 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13666 coordinate system,<wbr/> and with the mapping including the
13667 homogeneous division by z:</p>
13668 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13669 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13670 </code></pre>
13671 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13672 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13673 (depth) in pixel coordinates.<wbr/></p>
13674 <p>Note that the coordinate system for this transform is the
13675 <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/>
13676 where <code>(0,<wbr/>0)</code> is the top-left of the
13677 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13678 intrinsic calibration transforms have been applied to a
13679 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13680 transform needs to be applied,<wbr/> and the result adjusted to
13681 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13682 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13683 activeArraySize rectangle),<wbr/> to determine the final pixel
13684 coordinate of the world point for processed (non-RAW)
13685 output buffers.<wbr/></p>
13686             </td>
13687           </tr>
13688
13689
13690           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13691            <!-- end of entry -->
13692         
13693                 
13694           <tr class="entry" id="static_android.lens.radialDistortion">
13695             <td class="entry_name
13696                 entry_name_deprecated
13697              " rowspan="3">
13698               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13699             </td>
13700             <td class="entry_type">
13701                 <span class="entry_type_name">float</span>
13702                 <span class="entry_type_container">x</span>
13703
13704                 <span class="entry_type_array">
13705                   6
13706                 </span>
13707               <span class="entry_type_visibility"> [public]</span>
13708
13709
13710
13711               <span class="entry_type_deprecated">[deprecated] </span>
13712
13713
13714
13715             </td> <!-- entry_type -->
13716
13717             <td class="entry_description">
13718               <p>The correction coefficients to correct for this camera device's
13719 radial and tangential lens distortion.<wbr/></p>
13720             </td>
13721
13722             <td class="entry_units">
13723               
13724             Unitless coefficients.<wbr/>
13725           
13726             </td>
13727
13728             <td class="entry_range">
13729               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13730             </td>
13731
13732             <td class="entry_hal_version">
13733               <p>3.<wbr/>2</p>
13734             </td>
13735
13736             <td class="entry_tags">
13737               <ul class="entry_tags">
13738                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13739               </ul>
13740             </td>
13741
13742           </tr>
13743           <tr class="entries_header">
13744             <th class="th_details" colspan="6">Details</th>
13745           </tr>
13746           <tr class="entry_cont">
13747             <td class="entry_details" colspan="6">
13748               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13749 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13750 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13751 lens's geometric distortion with the mapping equations:</p>
13752 <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 ) +
13753        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13754  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13755        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13756 </code></pre>
13757 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13758 input image that correspond to the pixel values in the
13759 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13760 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13761 </code></pre>
13762 <p>The pixel coordinates are defined in a normalized
13763 coordinate system related to the
13764 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13765 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
13766 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13767 of both x and y coordinates are normalized to be 1 at the
13768 edge further from the optical center,<wbr/> so the range
13769 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13770 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13771 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13772 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13773 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13774             </td>
13775           </tr>
13776
13777
13778           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13779            <!-- end of entry -->
13780         
13781                 
13782           <tr class="entry" id="static_android.lens.poseReference">
13783             <td class="entry_name
13784              " rowspan="3">
13785               android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13786             </td>
13787             <td class="entry_type">
13788                 <span class="entry_type_name entry_type_name_enum">byte</span>
13789
13790               <span class="entry_type_visibility"> [public]</span>
13791
13792
13793
13794
13795
13796                 <ul class="entry_type_enum">
13797                   <li>
13798                     <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13799                     <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
13800 the largest camera device facing the same direction as this camera.<wbr/></p>
13801 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13802                   </li>
13803                   <li>
13804                     <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13805                     <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
13806 primary gyroscope of this Android device.<wbr/></p></span>
13807                   </li>
13808                 </ul>
13809
13810             </td> <!-- entry_type -->
13811
13812             <td class="entry_description">
13813               <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13814             </td>
13815
13816             <td class="entry_units">
13817             </td>
13818
13819             <td class="entry_range">
13820             </td>
13821
13822             <td class="entry_hal_version">
13823               <p>3.<wbr/>3</p>
13824             </td>
13825
13826             <td class="entry_tags">
13827             </td>
13828
13829           </tr>
13830           <tr class="entries_header">
13831             <th class="th_details" colspan="6">Details</th>
13832           </tr>
13833           <tr class="entry_cont">
13834             <td class="entry_details" colspan="6">
13835               <p>Different calibration methods and use cases can produce better or worse results
13836 depending on the selected coordinate origin.<wbr/></p>
13837             </td>
13838           </tr>
13839
13840
13841           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13842            <!-- end of entry -->
13843         
13844                 
13845           <tr class="entry" id="static_android.lens.distortion">
13846             <td class="entry_name
13847              " rowspan="3">
13848               android.<wbr/>lens.<wbr/>distortion
13849             </td>
13850             <td class="entry_type">
13851                 <span class="entry_type_name">float</span>
13852                 <span class="entry_type_container">x</span>
13853
13854                 <span class="entry_type_array">
13855                   5
13856                 </span>
13857               <span class="entry_type_visibility"> [public]</span>
13858
13859
13860
13861
13862
13863
13864             </td> <!-- entry_type -->
13865
13866             <td class="entry_description">
13867               <p>The correction coefficients to correct for this camera device's
13868 radial and tangential lens distortion.<wbr/></p>
13869 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
13870 inconsistently defined.<wbr/></p>
13871             </td>
13872
13873             <td class="entry_units">
13874               
13875             Unitless coefficients.<wbr/>
13876           
13877             </td>
13878
13879             <td class="entry_range">
13880             </td>
13881
13882             <td class="entry_hal_version">
13883               <p>3.<wbr/>3</p>
13884             </td>
13885
13886             <td class="entry_tags">
13887               <ul class="entry_tags">
13888                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13889               </ul>
13890             </td>
13891
13892           </tr>
13893           <tr class="entries_header">
13894             <th class="th_details" colspan="6">Details</th>
13895           </tr>
13896           <tr class="entry_cont">
13897             <td class="entry_details" colspan="6">
13898               <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13899 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13900 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13901 lens's geometric distortion with the mapping equations:</p>
13902 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13903        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13904  y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13905        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13906 </code></pre>
13907 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13908 input image that correspond to the pixel values in the
13909 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13910 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13911 </code></pre>
13912 <p>The pixel coordinates are defined in a coordinate system
13913 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13914 calibration fields; see that entry for details of the mapping stages.<wbr/>
13915 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
13916 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
13917 the range of the coordinates depends on the focal length
13918 terms of the intrinsic calibration.<wbr/></p>
13919 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13920 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13921 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13922             </td>
13923           </tr>
13924
13925
13926           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13927            <!-- end of entry -->
13928         
13929         
13930
13931       <!-- end of kind -->
13932       </tbody>
13933       <tr><td colspan="7" class="kind">dynamic</td></tr>
13934
13935       <thead class="entries_header">
13936         <tr>
13937           <th class="th_name">Property Name</th>
13938           <th class="th_type">Type</th>
13939           <th class="th_description">Description</th>
13940           <th class="th_units">Units</th>
13941           <th class="th_range">Range</th>
13942           <th class="th_hal_version">Initial HIDL HAL version</th>
13943           <th class="th_tags">Tags</th>
13944         </tr>
13945       </thead>
13946
13947       <tbody>
13948
13949         
13950
13951         
13952
13953         
13954
13955         
13956
13957                 
13958           <tr class="entry" id="dynamic_android.lens.aperture">
13959             <td class="entry_name
13960              " rowspan="3">
13961               android.<wbr/>lens.<wbr/>aperture
13962             </td>
13963             <td class="entry_type">
13964                 <span class="entry_type_name">float</span>
13965
13966               <span class="entry_type_visibility"> [public]</span>
13967
13968
13969               <span class="entry_type_hwlevel">[full] </span>
13970
13971
13972
13973
13974             </td> <!-- entry_type -->
13975
13976             <td class="entry_description">
13977               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13978 effective aperture diameter.<wbr/></p>
13979             </td>
13980
13981             <td class="entry_units">
13982               The f-number (f/<wbr/>N)
13983             </td>
13984
13985             <td class="entry_range">
13986               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13987             </td>
13988
13989             <td class="entry_hal_version">
13990               <p>3.<wbr/>2</p>
13991             </td>
13992
13993             <td class="entry_tags">
13994               <ul class="entry_tags">
13995                   <li><a href="#tag_V1">V1</a></li>
13996               </ul>
13997             </td>
13998
13999           </tr>
14000           <tr class="entries_header">
14001             <th class="th_details" colspan="6">Details</th>
14002           </tr>
14003           <tr class="entry_cont">
14004             <td class="entry_details" colspan="6">
14005               <p>Setting this value is only supported on the camera devices that have a variable
14006 aperture lens.<wbr/></p>
14007 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14008 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14009 <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>
14010 to achieve manual exposure control.<wbr/></p>
14011 <p>The requested aperture value may take several frames to reach the
14012 requested value; the camera device will report the current (intermediate)
14013 aperture size in capture result metadata while the aperture is changing.<wbr/>
14014 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>
14015 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14016 the ON modes,<wbr/> this will be overridden by the camera device
14017 auto-exposure algorithm,<wbr/> the overridden values are then provided
14018 back to the user in the corresponding result.<wbr/></p>
14019             </td>
14020           </tr>
14021
14022
14023           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14024            <!-- end of entry -->
14025         
14026                 
14027           <tr class="entry" id="dynamic_android.lens.filterDensity">
14028             <td class="entry_name
14029              " rowspan="3">
14030               android.<wbr/>lens.<wbr/>filter<wbr/>Density
14031             </td>
14032             <td class="entry_type">
14033                 <span class="entry_type_name">float</span>
14034
14035               <span class="entry_type_visibility"> [public]</span>
14036
14037
14038               <span class="entry_type_hwlevel">[full] </span>
14039
14040
14041
14042
14043             </td> <!-- entry_type -->
14044
14045             <td class="entry_description">
14046               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14047             </td>
14048
14049             <td class="entry_units">
14050               Exposure Value (EV)
14051             </td>
14052
14053             <td class="entry_range">
14054               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14055             </td>
14056
14057             <td class="entry_hal_version">
14058               <p>3.<wbr/>2</p>
14059             </td>
14060
14061             <td class="entry_tags">
14062               <ul class="entry_tags">
14063                   <li><a href="#tag_V1">V1</a></li>
14064               </ul>
14065             </td>
14066
14067           </tr>
14068           <tr class="entries_header">
14069             <th class="th_details" colspan="6">Details</th>
14070           </tr>
14071           <tr class="entry_cont">
14072             <td class="entry_details" colspan="6">
14073               <p>This control will not be supported on most camera devices.<wbr/></p>
14074 <p>Lens filters are typically used to lower the amount of light the
14075 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14076 step is the standard logarithmic representation,<wbr/> which are
14077 non-negative,<wbr/> and inversely proportional to the amount of light
14078 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
14079 in no reduction of the incoming light,<wbr/> and setting this to 2 would
14080 mean that the filter is set to reduce incoming light by two stops
14081 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14082 <p>It may take several frames before the lens filter density changes
14083 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14084 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14085             </td>
14086           </tr>
14087
14088
14089           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14090            <!-- end of entry -->
14091         
14092                 
14093           <tr class="entry" id="dynamic_android.lens.focalLength">
14094             <td class="entry_name
14095              " rowspan="3">
14096               android.<wbr/>lens.<wbr/>focal<wbr/>Length
14097             </td>
14098             <td class="entry_type">
14099                 <span class="entry_type_name">float</span>
14100
14101               <span class="entry_type_visibility"> [public]</span>
14102
14103
14104               <span class="entry_type_hwlevel">[legacy] </span>
14105
14106
14107
14108
14109             </td> <!-- entry_type -->
14110
14111             <td class="entry_description">
14112               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14113             </td>
14114
14115             <td class="entry_units">
14116               Millimeters
14117             </td>
14118
14119             <td class="entry_range">
14120               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14121             </td>
14122
14123             <td class="entry_hal_version">
14124               <p>3.<wbr/>2</p>
14125             </td>
14126
14127             <td class="entry_tags">
14128               <ul class="entry_tags">
14129                   <li><a href="#tag_BC">BC</a></li>
14130               </ul>
14131             </td>
14132
14133           </tr>
14134           <tr class="entries_header">
14135             <th class="th_details" colspan="6">Details</th>
14136           </tr>
14137           <tr class="entry_cont">
14138             <td class="entry_details" colspan="6">
14139               <p>This setting controls the physical focal length of the camera
14140 device's lens.<wbr/> Changing the focal length changes the field of
14141 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14142 <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
14143 setting won't be applied instantaneously,<wbr/> and it may take several
14144 frames before the lens can change to the requested focal length.<wbr/>
14145 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14146 be set to MOVING.<wbr/></p>
14147 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14148             </td>
14149           </tr>
14150
14151
14152           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14153            <!-- end of entry -->
14154         
14155                 
14156           <tr class="entry" id="dynamic_android.lens.focusDistance">
14157             <td class="entry_name
14158              " rowspan="3">
14159               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14160             </td>
14161             <td class="entry_type">
14162                 <span class="entry_type_name">float</span>
14163
14164               <span class="entry_type_visibility"> [public]</span>
14165
14166
14167               <span class="entry_type_hwlevel">[full] </span>
14168
14169
14170
14171
14172             </td> <!-- entry_type -->
14173
14174             <td class="entry_description">
14175               <p>Desired distance to plane of sharpest focus,<wbr/>
14176 measured from frontmost surface of the lens.<wbr/></p>
14177             </td>
14178
14179             <td class="entry_units">
14180               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14181             </td>
14182
14183             <td class="entry_range">
14184               <p>&gt;= 0</p>
14185             </td>
14186
14187             <td class="entry_hal_version">
14188               <p>3.<wbr/>2</p>
14189             </td>
14190
14191             <td class="entry_tags">
14192               <ul class="entry_tags">
14193                   <li><a href="#tag_BC">BC</a></li>
14194               </ul>
14195             </td>
14196
14197           </tr>
14198           <tr class="entries_header">
14199             <th class="th_details" colspan="6">Details</th>
14200           </tr>
14201           <tr class="entry_cont">
14202             <td class="entry_details" colspan="6">
14203               <p>Should be zero for fixed-focus cameras</p>
14204             </td>
14205           </tr>
14206
14207
14208           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14209            <!-- end of entry -->
14210         
14211                 
14212           <tr class="entry" id="dynamic_android.lens.focusRange">
14213             <td class="entry_name
14214              " rowspan="3">
14215               android.<wbr/>lens.<wbr/>focus<wbr/>Range
14216             </td>
14217             <td class="entry_type">
14218                 <span class="entry_type_name">float</span>
14219                 <span class="entry_type_container">x</span>
14220
14221                 <span class="entry_type_array">
14222                   2
14223                 </span>
14224               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14225
14226
14227               <span class="entry_type_hwlevel">[limited] </span>
14228
14229
14230                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14231
14232
14233             </td> <!-- entry_type -->
14234
14235             <td class="entry_description">
14236               <p>The range of scene distances that are in
14237 sharp focus (depth of field).<wbr/></p>
14238             </td>
14239
14240             <td class="entry_units">
14241               A pair of focus distances in diopters: (near,<wbr/>
14242           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14243             </td>
14244
14245             <td class="entry_range">
14246               <p>&gt;=0</p>
14247             </td>
14248
14249             <td class="entry_hal_version">
14250               <p>3.<wbr/>2</p>
14251             </td>
14252
14253             <td class="entry_tags">
14254               <ul class="entry_tags">
14255                   <li><a href="#tag_BC">BC</a></li>
14256               </ul>
14257             </td>
14258
14259           </tr>
14260           <tr class="entries_header">
14261             <th class="th_details" colspan="6">Details</th>
14262           </tr>
14263           <tr class="entry_cont">
14264             <td class="entry_details" colspan="6">
14265               <p>If variable focus not supported,<wbr/> can still report
14266 fixed depth of field range</p>
14267             </td>
14268           </tr>
14269
14270
14271           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14272            <!-- end of entry -->
14273         
14274                 
14275           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14276             <td class="entry_name
14277              " rowspan="3">
14278               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14279             </td>
14280             <td class="entry_type">
14281                 <span class="entry_type_name entry_type_name_enum">byte</span>
14282
14283               <span class="entry_type_visibility"> [public]</span>
14284
14285
14286               <span class="entry_type_hwlevel">[limited] </span>
14287
14288
14289
14290                 <ul class="entry_type_enum">
14291                   <li>
14292                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14293                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14294                   </li>
14295                   <li>
14296                     <span class="entry_type_enum_name">ON (v3.2)</span>
14297                     <span class="entry_type_enum_optional">[optional]</span>
14298                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14299                   </li>
14300                 </ul>
14301
14302             </td> <!-- entry_type -->
14303
14304             <td class="entry_description">
14305               <p>Sets whether the camera device uses optical image stabilization (OIS)
14306 when capturing images.<wbr/></p>
14307             </td>
14308
14309             <td class="entry_units">
14310             </td>
14311
14312             <td class="entry_range">
14313               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14314             </td>
14315
14316             <td class="entry_hal_version">
14317               <p>3.<wbr/>2</p>
14318             </td>
14319
14320             <td class="entry_tags">
14321               <ul class="entry_tags">
14322                   <li><a href="#tag_V1">V1</a></li>
14323               </ul>
14324             </td>
14325
14326           </tr>
14327           <tr class="entries_header">
14328             <th class="th_details" colspan="6">Details</th>
14329           </tr>
14330           <tr class="entry_cont">
14331             <td class="entry_details" colspan="6">
14332               <p>OIS is used to compensate for motion blur due to small
14333 movements of the camera during capture.<wbr/> Unlike digital image
14334 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14335 makes use of mechanical elements to stabilize the camera
14336 sensor,<wbr/> and thus allows for longer exposure times before
14337 camera shake becomes apparent.<wbr/></p>
14338 <p>Switching between different optical stabilization modes may take several
14339 frames to initialize,<wbr/> the camera device will report the current mode in
14340 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14341 optical stabilization modes in the first several capture results may still
14342 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14343 <p>If a camera device supports both OIS and digital image stabilization
14344 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14345 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14346 <p>Not all devices will support OIS; see
14347 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14348 available controls.<wbr/></p>
14349             </td>
14350           </tr>
14351
14352
14353           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14354            <!-- end of entry -->
14355         
14356                 
14357           <tr class="entry" id="dynamic_android.lens.state">
14358             <td class="entry_name
14359              " rowspan="3">
14360               android.<wbr/>lens.<wbr/>state
14361             </td>
14362             <td class="entry_type">
14363                 <span class="entry_type_name entry_type_name_enum">byte</span>
14364
14365               <span class="entry_type_visibility"> [public]</span>
14366
14367
14368               <span class="entry_type_hwlevel">[limited] </span>
14369
14370
14371
14372                 <ul class="entry_type_enum">
14373                   <li>
14374                     <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14375                     <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/>
14376 <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>
14377                   </li>
14378                   <li>
14379                     <span class="entry_type_enum_name">MOVING (v3.2)</span>
14380                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14381 (<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/>
14382 <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
14383 currently changing.<wbr/></p></span>
14384                   </li>
14385                 </ul>
14386
14387             </td> <!-- entry_type -->
14388
14389             <td class="entry_description">
14390               <p>Current lens status.<wbr/></p>
14391             </td>
14392
14393             <td class="entry_units">
14394             </td>
14395
14396             <td class="entry_range">
14397             </td>
14398
14399             <td class="entry_hal_version">
14400               <p>3.<wbr/>2</p>
14401             </td>
14402
14403             <td class="entry_tags">
14404               <ul class="entry_tags">
14405                   <li><a href="#tag_V1">V1</a></li>
14406               </ul>
14407             </td>
14408
14409           </tr>
14410           <tr class="entries_header">
14411             <th class="th_details" colspan="6">Details</th>
14412           </tr>
14413           <tr class="entry_cont">
14414             <td class="entry_details" colspan="6">
14415               <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/>
14416 <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/>
14417 they may take several frames to reach the requested values.<wbr/> This state indicates
14418 the current status of the lens parameters.<wbr/></p>
14419 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14420 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14421 time to reach the most recently-requested values.<wbr/>
14422 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14423 <ul>
14424 <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
14425 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14426 <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/>
14427 which means the optical zoom is not supported.<wbr/></li>
14428 <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>
14429 <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>
14430 </ul>
14431 <p>Then this state will always be STATIONARY.<wbr/></p>
14432 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14433 is changing.<wbr/></p>
14434             </td>
14435           </tr>
14436
14437
14438           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14439            <!-- end of entry -->
14440         
14441                 
14442           <tr class="entry" id="dynamic_android.lens.poseRotation">
14443             <td class="entry_name
14444              " rowspan="3">
14445               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14446             </td>
14447             <td class="entry_type">
14448                 <span class="entry_type_name">float</span>
14449                 <span class="entry_type_container">x</span>
14450
14451                 <span class="entry_type_array">
14452                   4
14453                 </span>
14454               <span class="entry_type_visibility"> [public]</span>
14455
14456
14457
14458
14459
14460
14461             </td> <!-- entry_type -->
14462
14463             <td class="entry_description">
14464               <p>The orientation of the camera relative to the sensor
14465 coordinate system.<wbr/></p>
14466             </td>
14467
14468             <td class="entry_units">
14469               
14470             Quaternion coefficients
14471           
14472             </td>
14473
14474             <td class="entry_range">
14475             </td>
14476
14477             <td class="entry_hal_version">
14478               <p>3.<wbr/>2</p>
14479             </td>
14480
14481             <td class="entry_tags">
14482               <ul class="entry_tags">
14483                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14484               </ul>
14485             </td>
14486
14487           </tr>
14488           <tr class="entries_header">
14489             <th class="th_details" colspan="6">Details</th>
14490           </tr>
14491           <tr class="entry_cont">
14492             <td class="entry_details" colspan="6">
14493               <p>The four coefficients that describe the quaternion
14494 rotation from the Android sensor coordinate system to a
14495 camera-aligned coordinate system where the X-axis is
14496 aligned with the long side of the image sensor,<wbr/> the Y-axis
14497 is aligned with the short side of the image sensor,<wbr/> and
14498 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14499 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14500 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14501 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14502 <pre><code> theta = 2 * acos(w)
14503 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14504 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14505 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14506 </code></pre>
14507 <p>To create a 3x3 rotation matrix that applies the rotation
14508 defined by this quaternion,<wbr/> the following matrix can be
14509 used:</p>
14510 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14511            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14512            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14513 </code></pre>
14514 <p>This matrix can then be used to apply the rotation to a
14515  column vector point with</p>
14516 <p><code>p' = Rp</code></p>
14517 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14518  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14519             </td>
14520           </tr>
14521
14522
14523           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14524            <!-- end of entry -->
14525         
14526                 
14527           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14528             <td class="entry_name
14529              " rowspan="3">
14530               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14531             </td>
14532             <td class="entry_type">
14533                 <span class="entry_type_name">float</span>
14534                 <span class="entry_type_container">x</span>
14535
14536                 <span class="entry_type_array">
14537                   3
14538                 </span>
14539               <span class="entry_type_visibility"> [public]</span>
14540
14541
14542
14543
14544
14545
14546             </td> <!-- entry_type -->
14547
14548             <td class="entry_description">
14549               <p>Position of the camera optical center.<wbr/></p>
14550             </td>
14551
14552             <td class="entry_units">
14553               Meters
14554             </td>
14555
14556             <td class="entry_range">
14557             </td>
14558
14559             <td class="entry_hal_version">
14560               <p>3.<wbr/>2</p>
14561             </td>
14562
14563             <td class="entry_tags">
14564               <ul class="entry_tags">
14565                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14566               </ul>
14567             </td>
14568
14569           </tr>
14570           <tr class="entries_header">
14571             <th class="th_details" colspan="6">Details</th>
14572           </tr>
14573           <tr class="entry_cont">
14574             <td class="entry_details" colspan="6">
14575               <p>The position of the camera device's lens optical center,<wbr/>
14576 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14577 <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
14578 is relative to the optical center of the largest camera device facing in the same
14579 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14580 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14581 coordinate system,<wbr/> but not the origin.<wbr/></p>
14582 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14583 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14584 from the main sensor along the +X axis (to the right from the user's perspective) will
14585 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14586 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14587 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
14588 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14589 <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
14590 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14591 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14592 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14593 coordinates.<wbr/></p>
14594 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14595 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14596 <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
14597 the center of the primary gyroscope on the device.<wbr/></p>
14598             </td>
14599           </tr>
14600
14601
14602           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14603            <!-- end of entry -->
14604         
14605                 
14606           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14607             <td class="entry_name
14608              " rowspan="3">
14609               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14610             </td>
14611             <td class="entry_type">
14612                 <span class="entry_type_name">float</span>
14613                 <span class="entry_type_container">x</span>
14614
14615                 <span class="entry_type_array">
14616                   5
14617                 </span>
14618               <span class="entry_type_visibility"> [public]</span>
14619
14620
14621
14622
14623
14624
14625             </td> <!-- entry_type -->
14626
14627             <td class="entry_description">
14628               <p>The parameters for this camera device's intrinsic
14629 calibration.<wbr/></p>
14630             </td>
14631
14632             <td class="entry_units">
14633               
14634             Pixels in the
14635             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14636             coordinate system.<wbr/>
14637           
14638             </td>
14639
14640             <td class="entry_range">
14641             </td>
14642
14643             <td class="entry_hal_version">
14644               <p>3.<wbr/>2</p>
14645             </td>
14646
14647             <td class="entry_tags">
14648               <ul class="entry_tags">
14649                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14650               </ul>
14651             </td>
14652
14653           </tr>
14654           <tr class="entries_header">
14655             <th class="th_details" colspan="6">Details</th>
14656           </tr>
14657           <tr class="entry_cont">
14658             <td class="entry_details" colspan="6">
14659               <p>The five calibration parameters that describe the
14660 transform from camera-centric 3D coordinates to sensor
14661 pixel coordinates:</p>
14662 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14663 </code></pre>
14664 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14665 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14666 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14667 being aligned with the lens plane.<wbr/></p>
14668 <p>These are typically used within a transformation matrix K:</p>
14669 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14670        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14671        0    0,<wbr/>   1 ]
14672 </code></pre>
14673 <p>which can then be combined with the camera pose rotation
14674 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14675 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14676 complete transform from world coordinates to pixel
14677 coordinates:</p>
14678 <pre><code>P = [ K 0   * [ R t
14679      0 1 ]     0 1 ]
14680 </code></pre>
14681 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14682 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14683 coordinate system,<wbr/> and with the mapping including the
14684 homogeneous division by z:</p>
14685 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14686 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14687 </code></pre>
14688 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14689 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14690 (depth) in pixel coordinates.<wbr/></p>
14691 <p>Note that the coordinate system for this transform is the
14692 <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/>
14693 where <code>(0,<wbr/>0)</code> is the top-left of the
14694 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14695 intrinsic calibration transforms have been applied to a
14696 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14697 transform needs to be applied,<wbr/> and the result adjusted to
14698 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14699 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14700 activeArraySize rectangle),<wbr/> to determine the final pixel
14701 coordinate of the world point for processed (non-RAW)
14702 output buffers.<wbr/></p>
14703             </td>
14704           </tr>
14705
14706
14707           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14708            <!-- end of entry -->
14709         
14710                 
14711           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14712             <td class="entry_name
14713                 entry_name_deprecated
14714              " rowspan="3">
14715               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14716             </td>
14717             <td class="entry_type">
14718                 <span class="entry_type_name">float</span>
14719                 <span class="entry_type_container">x</span>
14720
14721                 <span class="entry_type_array">
14722                   6
14723                 </span>
14724               <span class="entry_type_visibility"> [public]</span>
14725
14726
14727
14728               <span class="entry_type_deprecated">[deprecated] </span>
14729
14730
14731
14732             </td> <!-- entry_type -->
14733
14734             <td class="entry_description">
14735               <p>The correction coefficients to correct for this camera device's
14736 radial and tangential lens distortion.<wbr/></p>
14737             </td>
14738
14739             <td class="entry_units">
14740               
14741             Unitless coefficients.<wbr/>
14742           
14743             </td>
14744
14745             <td class="entry_range">
14746               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14747             </td>
14748
14749             <td class="entry_hal_version">
14750               <p>3.<wbr/>2</p>
14751             </td>
14752
14753             <td class="entry_tags">
14754               <ul class="entry_tags">
14755                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14756               </ul>
14757             </td>
14758
14759           </tr>
14760           <tr class="entries_header">
14761             <th class="th_details" colspan="6">Details</th>
14762           </tr>
14763           <tr class="entry_cont">
14764             <td class="entry_details" colspan="6">
14765               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14766 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14767 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14768 lens's geometric distortion with the mapping equations:</p>
14769 <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 ) +
14770        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14771  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14772        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14773 </code></pre>
14774 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14775 input image that correspond to the pixel values in the
14776 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14777 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14778 </code></pre>
14779 <p>The pixel coordinates are defined in a normalized
14780 coordinate system related to the
14781 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14782 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
14783 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14784 of both x and y coordinates are normalized to be 1 at the
14785 edge further from the optical center,<wbr/> so the range
14786 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14787 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14788 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14789 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14790 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14791             </td>
14792           </tr>
14793
14794
14795           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14796            <!-- end of entry -->
14797         
14798                 
14799           <tr class="entry" id="dynamic_android.lens.distortion">
14800             <td class="entry_name
14801              " rowspan="3">
14802               android.<wbr/>lens.<wbr/>distortion
14803             </td>
14804             <td class="entry_type">
14805                 <span class="entry_type_name">float</span>
14806                 <span class="entry_type_container">x</span>
14807
14808                 <span class="entry_type_array">
14809                   5
14810                 </span>
14811               <span class="entry_type_visibility"> [public]</span>
14812
14813
14814
14815
14816
14817
14818             </td> <!-- entry_type -->
14819
14820             <td class="entry_description">
14821               <p>The correction coefficients to correct for this camera device's
14822 radial and tangential lens distortion.<wbr/></p>
14823 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14824 inconsistently defined.<wbr/></p>
14825             </td>
14826
14827             <td class="entry_units">
14828               
14829             Unitless coefficients.<wbr/>
14830           
14831             </td>
14832
14833             <td class="entry_range">
14834             </td>
14835
14836             <td class="entry_hal_version">
14837               <p>3.<wbr/>3</p>
14838             </td>
14839
14840             <td class="entry_tags">
14841               <ul class="entry_tags">
14842                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14843               </ul>
14844             </td>
14845
14846           </tr>
14847           <tr class="entries_header">
14848             <th class="th_details" colspan="6">Details</th>
14849           </tr>
14850           <tr class="entry_cont">
14851             <td class="entry_details" colspan="6">
14852               <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14853 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14854 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14855 lens's geometric distortion with the mapping equations:</p>
14856 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14857        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14858  y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14859        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14860 </code></pre>
14861 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14862 input image that correspond to the pixel values in the
14863 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14864 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14865 </code></pre>
14866 <p>The pixel coordinates are defined in a coordinate system
14867 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14868 calibration fields; see that entry for details of the mapping stages.<wbr/>
14869 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14870 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14871 the range of the coordinates depends on the focal length
14872 terms of the intrinsic calibration.<wbr/></p>
14873 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14874 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14875 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14876             </td>
14877           </tr>
14878
14879
14880           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14881            <!-- end of entry -->
14882         
14883         
14884
14885       <!-- end of kind -->
14886       </tbody>
14887
14888   <!-- end of section -->
14889   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14890
14891
14892       <tr><td colspan="7" class="kind">controls</td></tr>
14893
14894       <thead class="entries_header">
14895         <tr>
14896           <th class="th_name">Property Name</th>
14897           <th class="th_type">Type</th>
14898           <th class="th_description">Description</th>
14899           <th class="th_units">Units</th>
14900           <th class="th_range">Range</th>
14901           <th class="th_hal_version">Initial HIDL HAL version</th>
14902           <th class="th_tags">Tags</th>
14903         </tr>
14904       </thead>
14905
14906       <tbody>
14907
14908         
14909
14910         
14911
14912         
14913
14914         
14915
14916                 
14917           <tr class="entry" id="controls_android.noiseReduction.mode">
14918             <td class="entry_name
14919              " rowspan="5">
14920               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14921             </td>
14922             <td class="entry_type">
14923                 <span class="entry_type_name entry_type_name_enum">byte</span>
14924
14925               <span class="entry_type_visibility"> [public]</span>
14926
14927
14928               <span class="entry_type_hwlevel">[full] </span>
14929
14930
14931
14932                 <ul class="entry_type_enum">
14933                   <li>
14934                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14935                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14936                   </li>
14937                   <li>
14938                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14939                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14940 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14941 relative to sensor.<wbr/></p></span>
14942                   </li>
14943                   <li>
14944                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14945                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14946 rate relative to sensor output.<wbr/></p></span>
14947                   </li>
14948                   <li>
14949                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14950                     <span class="entry_type_enum_optional">[optional]</span>
14951                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14952 sensor output.<wbr/> </p></span>
14953                   </li>
14954                   <li>
14955                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14956                     <span class="entry_type_enum_optional">[optional]</span>
14957                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14958 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>)
14959 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14960 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14961 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14962 and the quality is equal to or better than FAST (since it is only applied to
14963 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14964 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14965 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14966 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14967 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14968 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14969 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14970 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14971 applied for reasonable preview quality.<wbr/></p>
14972 <p>This mode is guaranteed to be supported by devices that support either the
14973 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14974 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14975 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14976                   </li>
14977                 </ul>
14978
14979             </td> <!-- entry_type -->
14980
14981             <td class="entry_description">
14982               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14983             </td>
14984
14985             <td class="entry_units">
14986             </td>
14987
14988             <td class="entry_range">
14989               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14990             </td>
14991
14992             <td class="entry_hal_version">
14993               <p>3.<wbr/>2</p>
14994             </td>
14995
14996             <td class="entry_tags">
14997               <ul class="entry_tags">
14998                   <li><a href="#tag_V1">V1</a></li>
14999                   <li><a href="#tag_REPROC">REPROC</a></li>
15000               </ul>
15001             </td>
15002
15003           </tr>
15004           <tr class="entries_header">
15005             <th class="th_details" colspan="6">Details</th>
15006           </tr>
15007           <tr class="entry_cont">
15008             <td class="entry_details" colspan="6">
15009               <p>The noise reduction algorithm attempts to improve image quality by removing
15010 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15011 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15012 YUV domain.<wbr/></p>
15013 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15014 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15015 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15016 <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>
15017 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15018 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15019 will use the highest-quality noise filtering algorithms,<wbr/>
15020 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15021 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15022 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15023 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15024 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15025 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15026 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15027 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15028 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15029 those will be reprocessed later if necessary.<wbr/></p>
15030 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15031 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15032 may adjust the noise reduction parameters for best image quality based on the
15033 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15034             </td>
15035           </tr>
15036
15037           <tr class="entries_header">
15038             <th class="th_details" colspan="6">HAL Implementation Details</th>
15039           </tr>
15040           <tr class="entry_cont">
15041             <td class="entry_details" colspan="6">
15042               <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
15043 adjust the internal noise reduction parameters appropriately to get the best quality
15044 images.<wbr/></p>
15045             </td>
15046           </tr>
15047
15048           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15049            <!-- end of entry -->
15050         
15051                 
15052           <tr class="entry" id="controls_android.noiseReduction.strength">
15053             <td class="entry_name
15054              " rowspan="1">
15055               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15056             </td>
15057             <td class="entry_type">
15058                 <span class="entry_type_name">byte</span>
15059
15060               <span class="entry_type_visibility"> [system]</span>
15061
15062
15063
15064
15065
15066
15067             </td> <!-- entry_type -->
15068
15069             <td class="entry_description">
15070               <p>Control the amount of noise reduction
15071 applied to the images</p>
15072             </td>
15073
15074             <td class="entry_units">
15075               1-10; 10 is max noise reduction
15076             </td>
15077
15078             <td class="entry_range">
15079               <p>1 - 10</p>
15080             </td>
15081
15082             <td class="entry_hal_version">
15083               <p>3.<wbr/>2</p>
15084             </td>
15085
15086             <td class="entry_tags">
15087               <ul class="entry_tags">
15088                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15089               </ul>
15090             </td>
15091
15092           </tr>
15093
15094
15095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15096            <!-- end of entry -->
15097         
15098         
15099
15100       <!-- end of kind -->
15101       </tbody>
15102       <tr><td colspan="7" class="kind">static</td></tr>
15103
15104       <thead class="entries_header">
15105         <tr>
15106           <th class="th_name">Property Name</th>
15107           <th class="th_type">Type</th>
15108           <th class="th_description">Description</th>
15109           <th class="th_units">Units</th>
15110           <th class="th_range">Range</th>
15111           <th class="th_hal_version">Initial HIDL HAL version</th>
15112           <th class="th_tags">Tags</th>
15113         </tr>
15114       </thead>
15115
15116       <tbody>
15117
15118         
15119
15120         
15121
15122         
15123
15124         
15125
15126                 
15127           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15128             <td class="entry_name
15129              " rowspan="5">
15130               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15131             </td>
15132             <td class="entry_type">
15133                 <span class="entry_type_name">byte</span>
15134                 <span class="entry_type_container">x</span>
15135
15136                 <span class="entry_type_array">
15137                   n
15138                 </span>
15139               <span class="entry_type_visibility"> [public as enumList]</span>
15140
15141
15142               <span class="entry_type_hwlevel">[limited] </span>
15143
15144
15145                 <div class="entry_type_notes">list of enums</div>
15146
15147
15148             </td> <!-- entry_type -->
15149
15150             <td class="entry_description">
15151               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15152 by this camera device.<wbr/></p>
15153             </td>
15154
15155             <td class="entry_units">
15156             </td>
15157
15158             <td class="entry_range">
15159               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15160             </td>
15161
15162             <td class="entry_hal_version">
15163               <p>3.<wbr/>2</p>
15164             </td>
15165
15166             <td class="entry_tags">
15167               <ul class="entry_tags">
15168                   <li><a href="#tag_V1">V1</a></li>
15169                   <li><a href="#tag_REPROC">REPROC</a></li>
15170               </ul>
15171             </td>
15172
15173           </tr>
15174           <tr class="entries_header">
15175             <th class="th_details" colspan="6">Details</th>
15176           </tr>
15177           <tr class="entry_cont">
15178             <td class="entry_details" colspan="6">
15179               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15180 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15181 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15182 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15183             </td>
15184           </tr>
15185
15186           <tr class="entries_header">
15187             <th class="th_details" colspan="6">HAL Implementation Details</th>
15188           </tr>
15189           <tr class="entry_cont">
15190             <td class="entry_details" colspan="6">
15191               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15192 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15193 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15194 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15195             </td>
15196           </tr>
15197
15198           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15199            <!-- end of entry -->
15200         
15201         
15202
15203       <!-- end of kind -->
15204       </tbody>
15205       <tr><td colspan="7" class="kind">dynamic</td></tr>
15206
15207       <thead class="entries_header">
15208         <tr>
15209           <th class="th_name">Property Name</th>
15210           <th class="th_type">Type</th>
15211           <th class="th_description">Description</th>
15212           <th class="th_units">Units</th>
15213           <th class="th_range">Range</th>
15214           <th class="th_hal_version">Initial HIDL HAL version</th>
15215           <th class="th_tags">Tags</th>
15216         </tr>
15217       </thead>
15218
15219       <tbody>
15220
15221         
15222
15223         
15224
15225         
15226
15227         
15228
15229                 
15230           <tr class="entry" id="dynamic_android.noiseReduction.mode">
15231             <td class="entry_name
15232              " rowspan="5">
15233               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15234             </td>
15235             <td class="entry_type">
15236                 <span class="entry_type_name entry_type_name_enum">byte</span>
15237
15238               <span class="entry_type_visibility"> [public]</span>
15239
15240
15241               <span class="entry_type_hwlevel">[full] </span>
15242
15243
15244
15245                 <ul class="entry_type_enum">
15246                   <li>
15247                     <span class="entry_type_enum_name">OFF (v3.2)</span>
15248                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15249                   </li>
15250                   <li>
15251                     <span class="entry_type_enum_name">FAST (v3.2)</span>
15252                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15253 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15254 relative to sensor.<wbr/></p></span>
15255                   </li>
15256                   <li>
15257                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15258                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15259 rate relative to sensor output.<wbr/></p></span>
15260                   </li>
15261                   <li>
15262                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15263                     <span class="entry_type_enum_optional">[optional]</span>
15264                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15265 sensor output.<wbr/> </p></span>
15266                   </li>
15267                   <li>
15268                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15269                     <span class="entry_type_enum_optional">[optional]</span>
15270                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15271 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>)
15272 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15273 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15274 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15275 and the quality is equal to or better than FAST (since it is only applied to
15276 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15277 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15278 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15279 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15280 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15281 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15282 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15283 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15284 applied for reasonable preview quality.<wbr/></p>
15285 <p>This mode is guaranteed to be supported by devices that support either the
15286 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15287 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15288 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15289                   </li>
15290                 </ul>
15291
15292             </td> <!-- entry_type -->
15293
15294             <td class="entry_description">
15295               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15296             </td>
15297
15298             <td class="entry_units">
15299             </td>
15300
15301             <td class="entry_range">
15302               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15303             </td>
15304
15305             <td class="entry_hal_version">
15306               <p>3.<wbr/>2</p>
15307             </td>
15308
15309             <td class="entry_tags">
15310               <ul class="entry_tags">
15311                   <li><a href="#tag_V1">V1</a></li>
15312                   <li><a href="#tag_REPROC">REPROC</a></li>
15313               </ul>
15314             </td>
15315
15316           </tr>
15317           <tr class="entries_header">
15318             <th class="th_details" colspan="6">Details</th>
15319           </tr>
15320           <tr class="entry_cont">
15321             <td class="entry_details" colspan="6">
15322               <p>The noise reduction algorithm attempts to improve image quality by removing
15323 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15324 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15325 YUV domain.<wbr/></p>
15326 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15327 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15328 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15329 <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>
15330 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15331 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15332 will use the highest-quality noise filtering algorithms,<wbr/>
15333 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15334 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15335 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15336 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15337 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15338 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15339 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15340 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15341 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15342 those will be reprocessed later if necessary.<wbr/></p>
15343 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15344 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15345 may adjust the noise reduction parameters for best image quality based on the
15346 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15347             </td>
15348           </tr>
15349
15350           <tr class="entries_header">
15351             <th class="th_details" colspan="6">HAL Implementation Details</th>
15352           </tr>
15353           <tr class="entry_cont">
15354             <td class="entry_details" colspan="6">
15355               <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
15356 adjust the internal noise reduction parameters appropriately to get the best quality
15357 images.<wbr/></p>
15358             </td>
15359           </tr>
15360
15361           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15362            <!-- end of entry -->
15363         
15364         
15365
15366       <!-- end of kind -->
15367       </tbody>
15368
15369   <!-- end of section -->
15370   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15371
15372
15373       <tr><td colspan="7" class="kind">static</td></tr>
15374
15375       <thead class="entries_header">
15376         <tr>
15377           <th class="th_name">Property Name</th>
15378           <th class="th_type">Type</th>
15379           <th class="th_description">Description</th>
15380           <th class="th_units">Units</th>
15381           <th class="th_range">Range</th>
15382           <th class="th_hal_version">Initial HIDL HAL version</th>
15383           <th class="th_tags">Tags</th>
15384         </tr>
15385       </thead>
15386
15387       <tbody>
15388
15389         
15390
15391         
15392
15393         
15394
15395         
15396
15397                 
15398           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15399             <td class="entry_name
15400                 entry_name_deprecated
15401              " rowspan="3">
15402               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15403             </td>
15404             <td class="entry_type">
15405                 <span class="entry_type_name">byte</span>
15406
15407               <span class="entry_type_visibility"> [system]</span>
15408
15409
15410
15411               <span class="entry_type_deprecated">[deprecated] </span>
15412
15413
15414
15415             </td> <!-- entry_type -->
15416
15417             <td class="entry_description">
15418               <p>If set to 1,<wbr/> the camera service does not
15419 scale 'normalized' coordinates with respect to the crop
15420 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15421 and output (face rectangles).<wbr/></p>
15422             </td>
15423
15424             <td class="entry_units">
15425             </td>
15426
15427             <td class="entry_range">
15428               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15429             </td>
15430
15431             <td class="entry_hal_version">
15432               <p>3.<wbr/>2</p>
15433             </td>
15434
15435             <td class="entry_tags">
15436             </td>
15437
15438           </tr>
15439           <tr class="entries_header">
15440             <th class="th_details" colspan="6">Details</th>
15441           </tr>
15442           <tr class="entry_cont">
15443             <td class="entry_details" colspan="6">
15444               <p>Normalized coordinates refer to those in the
15445 (-1000,<wbr/>1000) range mentioned in the
15446 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15447 <p>HAL implementations should instead always use and emit
15448 sensor array-relative coordinates for all region data.<wbr/> Does
15449 not need to be listed in static metadata.<wbr/> Support will be
15450 removed in future versions of camera service.<wbr/></p>
15451             </td>
15452           </tr>
15453
15454
15455           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15456            <!-- end of entry -->
15457         
15458                 
15459           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15460             <td class="entry_name
15461                 entry_name_deprecated
15462              " rowspan="3">
15463               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15464             </td>
15465             <td class="entry_type">
15466                 <span class="entry_type_name">byte</span>
15467
15468               <span class="entry_type_visibility"> [system]</span>
15469
15470
15471
15472               <span class="entry_type_deprecated">[deprecated] </span>
15473
15474
15475
15476             </td> <!-- entry_type -->
15477
15478             <td class="entry_description">
15479               <p>If set to 1,<wbr/> then the camera service always
15480 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15481 trigger.<wbr/></p>
15482             </td>
15483
15484             <td class="entry_units">
15485             </td>
15486
15487             <td class="entry_range">
15488               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15489             </td>
15490
15491             <td class="entry_hal_version">
15492               <p>3.<wbr/>2</p>
15493             </td>
15494
15495             <td class="entry_tags">
15496             </td>
15497
15498           </tr>
15499           <tr class="entries_header">
15500             <th class="th_details" colspan="6">Details</th>
15501           </tr>
15502           <tr class="entry_cont">
15503             <td class="entry_details" colspan="6">
15504               <p>HAL implementations should implement AF trigger
15505 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15506 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15507 not need to be listed in static metadata.<wbr/> Support will be
15508 removed in future versions of camera service</p>
15509             </td>
15510           </tr>
15511
15512
15513           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15514            <!-- end of entry -->
15515         
15516                 
15517           <tr class="entry" id="static_android.quirks.useZslFormat">
15518             <td class="entry_name
15519                 entry_name_deprecated
15520              " rowspan="3">
15521               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15522             </td>
15523             <td class="entry_type">
15524                 <span class="entry_type_name">byte</span>
15525
15526               <span class="entry_type_visibility"> [system]</span>
15527
15528
15529
15530               <span class="entry_type_deprecated">[deprecated] </span>
15531
15532
15533
15534             </td> <!-- entry_type -->
15535
15536             <td class="entry_description">
15537               <p>If set to 1,<wbr/> the camera service uses
15538 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15539 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15540 shutter lag stream</p>
15541             </td>
15542
15543             <td class="entry_units">
15544             </td>
15545
15546             <td class="entry_range">
15547               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15548             </td>
15549
15550             <td class="entry_hal_version">
15551               <p>3.<wbr/>2</p>
15552             </td>
15553
15554             <td class="entry_tags">
15555             </td>
15556
15557           </tr>
15558           <tr class="entries_header">
15559             <th class="th_details" colspan="6">Details</th>
15560           </tr>
15561           <tr class="entry_cont">
15562             <td class="entry_details" colspan="6">
15563               <p>HAL implementations should use gralloc usage flags
15564 to determine that a stream will be used for
15565 zero-shutter-lag,<wbr/> instead of relying on an explicit
15566 format setting.<wbr/> Does not need to be listed in static
15567 metadata.<wbr/> Support will be removed in future versions of
15568 camera service.<wbr/></p>
15569             </td>
15570           </tr>
15571
15572
15573           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15574            <!-- end of entry -->
15575         
15576                 
15577           <tr class="entry" id="static_android.quirks.usePartialResult">
15578             <td class="entry_name
15579                 entry_name_deprecated
15580              " rowspan="5">
15581               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15582             </td>
15583             <td class="entry_type">
15584                 <span class="entry_type_name">byte</span>
15585
15586               <span class="entry_type_visibility"> [hidden]</span>
15587
15588
15589
15590               <span class="entry_type_deprecated">[deprecated] </span>
15591
15592
15593
15594             </td> <!-- entry_type -->
15595
15596             <td class="entry_description">
15597               <p>If set to 1,<wbr/> the HAL will always split result
15598 metadata for a single capture into multiple buffers,<wbr/>
15599 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15600             </td>
15601
15602             <td class="entry_units">
15603             </td>
15604
15605             <td class="entry_range">
15606               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15607             </td>
15608
15609             <td class="entry_hal_version">
15610               <p>3.<wbr/>2</p>
15611             </td>
15612
15613             <td class="entry_tags">
15614             </td>
15615
15616           </tr>
15617           <tr class="entries_header">
15618             <th class="th_details" colspan="6">Details</th>
15619           </tr>
15620           <tr class="entry_cont">
15621             <td class="entry_details" colspan="6">
15622               <p>Does not need to be listed in static
15623 metadata.<wbr/> Support for partial results will be reworked in
15624 future versions of camera service.<wbr/> This quirk will stop
15625 working at that point; DO NOT USE without careful
15626 consideration of future support.<wbr/></p>
15627             </td>
15628           </tr>
15629
15630           <tr class="entries_header">
15631             <th class="th_details" colspan="6">HAL Implementation Details</th>
15632           </tr>
15633           <tr class="entry_cont">
15634             <td class="entry_details" colspan="6">
15635               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15636 for information on how to implement partial results.<wbr/></p>
15637             </td>
15638           </tr>
15639
15640           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15641            <!-- end of entry -->
15642         
15643         
15644
15645       <!-- end of kind -->
15646       </tbody>
15647       <tr><td colspan="7" class="kind">dynamic</td></tr>
15648
15649       <thead class="entries_header">
15650         <tr>
15651           <th class="th_name">Property Name</th>
15652           <th class="th_type">Type</th>
15653           <th class="th_description">Description</th>
15654           <th class="th_units">Units</th>
15655           <th class="th_range">Range</th>
15656           <th class="th_hal_version">Initial HIDL HAL version</th>
15657           <th class="th_tags">Tags</th>
15658         </tr>
15659       </thead>
15660
15661       <tbody>
15662
15663         
15664
15665         
15666
15667         
15668
15669         
15670
15671                 
15672           <tr class="entry" id="dynamic_android.quirks.partialResult">
15673             <td class="entry_name
15674                 entry_name_deprecated
15675              " rowspan="5">
15676               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15677             </td>
15678             <td class="entry_type">
15679                 <span class="entry_type_name entry_type_name_enum">byte</span>
15680
15681               <span class="entry_type_visibility"> [hidden as boolean]</span>
15682
15683
15684
15685               <span class="entry_type_deprecated">[deprecated] </span>
15686
15687
15688                 <ul class="entry_type_enum">
15689                   <li>
15690                     <span class="entry_type_enum_name">FINAL (v3.2)</span>
15691                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15692 for this capture.<wbr/></p></span>
15693                   </li>
15694                   <li>
15695                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15696                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15697 capture.<wbr/> More result buffers for this capture will be sent
15698 by the camera device,<wbr/> the last of which will be marked
15699 FINAL.<wbr/></p></span>
15700                   </li>
15701                 </ul>
15702
15703             </td> <!-- entry_type -->
15704
15705             <td class="entry_description">
15706               <p>Whether a result given to the framework is the
15707 final one for the capture,<wbr/> or only a partial that contains a
15708 subset of the full set of dynamic metadata
15709 values.<wbr/></p>
15710             </td>
15711
15712             <td class="entry_units">
15713             </td>
15714
15715             <td class="entry_range">
15716               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15717               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15718             </td>
15719
15720             <td class="entry_hal_version">
15721               <p>3.<wbr/>2</p>
15722             </td>
15723
15724             <td class="entry_tags">
15725             </td>
15726
15727           </tr>
15728           <tr class="entries_header">
15729             <th class="th_details" colspan="6">Details</th>
15730           </tr>
15731           <tr class="entry_cont">
15732             <td class="entry_details" colspan="6">
15733               <p>The entries in the result metadata buffers for a
15734 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15735 FINAL buffers must retain FIFO ordering relative to the
15736 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15737 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15738 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15739 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15740 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15741 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15742             </td>
15743           </tr>
15744
15745           <tr class="entries_header">
15746             <th class="th_details" colspan="6">HAL Implementation Details</th>
15747           </tr>
15748           <tr class="entry_cont">
15749             <td class="entry_details" colspan="6">
15750               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15751 for information on how to implement partial results.<wbr/></p>
15752             </td>
15753           </tr>
15754
15755           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15756            <!-- end of entry -->
15757         
15758         
15759
15760       <!-- end of kind -->
15761       </tbody>
15762
15763   <!-- end of section -->
15764   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15765
15766
15767       <tr><td colspan="7" class="kind">controls</td></tr>
15768
15769       <thead class="entries_header">
15770         <tr>
15771           <th class="th_name">Property Name</th>
15772           <th class="th_type">Type</th>
15773           <th class="th_description">Description</th>
15774           <th class="th_units">Units</th>
15775           <th class="th_range">Range</th>
15776           <th class="th_hal_version">Initial HIDL HAL version</th>
15777           <th class="th_tags">Tags</th>
15778         </tr>
15779       </thead>
15780
15781       <tbody>
15782
15783         
15784
15785         
15786
15787         
15788
15789         
15790
15791                 
15792           <tr class="entry" id="controls_android.request.frameCount">
15793             <td class="entry_name
15794                 entry_name_deprecated
15795              " rowspan="1">
15796               android.<wbr/>request.<wbr/>frame<wbr/>Count
15797             </td>
15798             <td class="entry_type">
15799                 <span class="entry_type_name">int32</span>
15800
15801               <span class="entry_type_visibility"> [system]</span>
15802
15803
15804
15805               <span class="entry_type_deprecated">[deprecated] </span>
15806
15807
15808
15809             </td> <!-- entry_type -->
15810
15811             <td class="entry_description">
15812               <p>A frame counter set by the framework.<wbr/> Must
15813 be maintained unchanged in output frame.<wbr/> This value monotonically
15814 increases with every new result (that is,<wbr/> each new result has a unique
15815 frameCount value).<wbr/></p>
15816             </td>
15817
15818             <td class="entry_units">
15819               incrementing integer
15820             </td>
15821
15822             <td class="entry_range">
15823               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15824               <p>Any int.<wbr/></p>
15825             </td>
15826
15827             <td class="entry_hal_version">
15828               <p>3.<wbr/>2</p>
15829             </td>
15830
15831             <td class="entry_tags">
15832             </td>
15833
15834           </tr>
15835
15836
15837           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15838            <!-- end of entry -->
15839         
15840                 
15841           <tr class="entry" id="controls_android.request.id">
15842             <td class="entry_name
15843              " rowspan="1">
15844               android.<wbr/>request.<wbr/>id
15845             </td>
15846             <td class="entry_type">
15847                 <span class="entry_type_name">int32</span>
15848
15849               <span class="entry_type_visibility"> [hidden]</span>
15850
15851
15852
15853
15854
15855
15856             </td> <!-- entry_type -->
15857
15858             <td class="entry_description">
15859               <p>An application-specified ID for the current
15860 request.<wbr/> Must be maintained unchanged in output
15861 frame</p>
15862             </td>
15863
15864             <td class="entry_units">
15865               arbitrary integer assigned by application
15866             </td>
15867
15868             <td class="entry_range">
15869               <p>Any int</p>
15870             </td>
15871
15872             <td class="entry_hal_version">
15873               <p>3.<wbr/>2</p>
15874             </td>
15875
15876             <td class="entry_tags">
15877               <ul class="entry_tags">
15878                   <li><a href="#tag_V1">V1</a></li>
15879               </ul>
15880             </td>
15881
15882           </tr>
15883
15884
15885           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15886            <!-- end of entry -->
15887         
15888                 
15889           <tr class="entry" id="controls_android.request.inputStreams">
15890             <td class="entry_name
15891                 entry_name_deprecated
15892              " rowspan="3">
15893               android.<wbr/>request.<wbr/>input<wbr/>Streams
15894             </td>
15895             <td class="entry_type">
15896                 <span class="entry_type_name">int32</span>
15897                 <span class="entry_type_container">x</span>
15898
15899                 <span class="entry_type_array">
15900                   n
15901                 </span>
15902               <span class="entry_type_visibility"> [system]</span>
15903
15904
15905
15906               <span class="entry_type_deprecated">[deprecated] </span>
15907
15908
15909
15910             </td> <!-- entry_type -->
15911
15912             <td class="entry_description">
15913               <p>List which camera reprocess stream is used
15914 for the source of reprocessing data.<wbr/></p>
15915             </td>
15916
15917             <td class="entry_units">
15918               List of camera reprocess stream IDs
15919             </td>
15920
15921             <td class="entry_range">
15922               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15923               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15924             </td>
15925
15926             <td class="entry_hal_version">
15927               <p>3.<wbr/>2</p>
15928             </td>
15929
15930             <td class="entry_tags">
15931               <ul class="entry_tags">
15932                   <li><a href="#tag_HAL2">HAL2</a></li>
15933               </ul>
15934             </td>
15935
15936           </tr>
15937           <tr class="entries_header">
15938             <th class="th_details" colspan="6">Details</th>
15939           </tr>
15940           <tr class="entry_cont">
15941             <td class="entry_details" colspan="6">
15942               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15943 REPROCESS.<wbr/> Ignored otherwise</p>
15944             </td>
15945           </tr>
15946
15947
15948           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15949            <!-- end of entry -->
15950         
15951                 
15952           <tr class="entry" id="controls_android.request.metadataMode">
15953             <td class="entry_name
15954              " rowspan="1">
15955               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15956             </td>
15957             <td class="entry_type">
15958                 <span class="entry_type_name entry_type_name_enum">byte</span>
15959
15960               <span class="entry_type_visibility"> [system]</span>
15961
15962
15963
15964
15965
15966                 <ul class="entry_type_enum">
15967                   <li>
15968                     <span class="entry_type_enum_name">NONE (v3.2)</span>
15969                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15970 for application-bound buffer data.<wbr/> If no
15971 application-bound streams exist,<wbr/> no frame should be
15972 placed in the output frame queue.<wbr/> If such streams
15973 exist,<wbr/> a frame should be placed on the output queue
15974 with null metadata but with the necessary output buffer
15975 information.<wbr/> Timestamp information should still be
15976 included with any output stream buffers</p></span>
15977                   </li>
15978                   <li>
15979                     <span class="entry_type_enum_name">FULL (v3.2)</span>
15980                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15981 only be produced if they are separately
15982 enabled</p></span>
15983                   </li>
15984                 </ul>
15985
15986             </td> <!-- entry_type -->
15987
15988             <td class="entry_description">
15989               <p>How much metadata to produce on
15990 output</p>
15991             </td>
15992
15993             <td class="entry_units">
15994             </td>
15995
15996             <td class="entry_range">
15997             </td>
15998
15999             <td class="entry_hal_version">
16000               <p>3.<wbr/>2</p>
16001             </td>
16002
16003             <td class="entry_tags">
16004               <ul class="entry_tags">
16005                   <li><a href="#tag_FUTURE">FUTURE</a></li>
16006               </ul>
16007             </td>
16008
16009           </tr>
16010
16011
16012           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16013            <!-- end of entry -->
16014         
16015                 
16016           <tr class="entry" id="controls_android.request.outputStreams">
16017             <td class="entry_name
16018                 entry_name_deprecated
16019              " rowspan="3">
16020               android.<wbr/>request.<wbr/>output<wbr/>Streams
16021             </td>
16022             <td class="entry_type">
16023                 <span class="entry_type_name">int32</span>
16024                 <span class="entry_type_container">x</span>
16025
16026                 <span class="entry_type_array">
16027                   n
16028                 </span>
16029               <span class="entry_type_visibility"> [system]</span>
16030
16031
16032
16033               <span class="entry_type_deprecated">[deprecated] </span>
16034
16035
16036
16037             </td> <!-- entry_type -->
16038
16039             <td class="entry_description">
16040               <p>Lists which camera output streams image data
16041 from this capture must be sent to</p>
16042             </td>
16043
16044             <td class="entry_units">
16045               List of camera stream IDs
16046             </td>
16047
16048             <td class="entry_range">
16049               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16050               <p>List must only include streams that have been
16051 created</p>
16052             </td>
16053
16054             <td class="entry_hal_version">
16055               <p>3.<wbr/>2</p>
16056             </td>
16057
16058             <td class="entry_tags">
16059               <ul class="entry_tags">
16060                   <li><a href="#tag_HAL2">HAL2</a></li>
16061               </ul>
16062             </td>
16063
16064           </tr>
16065           <tr class="entries_header">
16066             <th class="th_details" colspan="6">Details</th>
16067           </tr>
16068           <tr class="entry_cont">
16069             <td class="entry_details" colspan="6">
16070               <p>If no output streams are listed,<wbr/> then the image
16071 data should simply be discarded.<wbr/> The image data must
16072 still be captured for metadata and statistics production,<wbr/>
16073 and the lens and flash must operate as requested.<wbr/></p>
16074             </td>
16075           </tr>
16076
16077
16078           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16079            <!-- end of entry -->
16080         
16081                 
16082           <tr class="entry" id="controls_android.request.type">
16083             <td class="entry_name
16084                 entry_name_deprecated
16085              " rowspan="1">
16086               android.<wbr/>request.<wbr/>type
16087             </td>
16088             <td class="entry_type">
16089                 <span class="entry_type_name entry_type_name_enum">byte</span>
16090
16091               <span class="entry_type_visibility"> [system]</span>
16092
16093
16094
16095               <span class="entry_type_deprecated">[deprecated] </span>
16096
16097
16098                 <ul class="entry_type_enum">
16099                   <li>
16100                     <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16101                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16102 and process it according to the
16103 settings</p></span>
16104                   </li>
16105                   <li>
16106                     <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16107                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
16108 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16109 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16110 needed for reprocessing with [RP]</p></span>
16111                   </li>
16112                 </ul>
16113
16114             </td> <!-- entry_type -->
16115
16116             <td class="entry_description">
16117               <p>The type of the request; either CAPTURE or
16118 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16119             </td>
16120
16121             <td class="entry_units">
16122             </td>
16123
16124             <td class="entry_range">
16125               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16126             </td>
16127
16128             <td class="entry_hal_version">
16129               <p>3.<wbr/>2</p>
16130             </td>
16131
16132             <td class="entry_tags">
16133               <ul class="entry_tags">
16134                   <li><a href="#tag_HAL2">HAL2</a></li>
16135               </ul>
16136             </td>
16137
16138           </tr>
16139
16140
16141           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16142            <!-- end of entry -->
16143         
16144         
16145
16146       <!-- end of kind -->
16147       </tbody>
16148       <tr><td colspan="7" class="kind">static</td></tr>
16149
16150       <thead class="entries_header">
16151         <tr>
16152           <th class="th_name">Property Name</th>
16153           <th class="th_type">Type</th>
16154           <th class="th_description">Description</th>
16155           <th class="th_units">Units</th>
16156           <th class="th_range">Range</th>
16157           <th class="th_hal_version">Initial HIDL HAL version</th>
16158           <th class="th_tags">Tags</th>
16159         </tr>
16160       </thead>
16161
16162       <tbody>
16163
16164         
16165
16166         
16167
16168         
16169
16170         
16171
16172                 
16173           <tr class="entry" id="static_android.request.maxNumOutputStreams">
16174             <td class="entry_name
16175              " rowspan="3">
16176               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16177             </td>
16178             <td class="entry_type">
16179                 <span class="entry_type_name">int32</span>
16180                 <span class="entry_type_container">x</span>
16181
16182                 <span class="entry_type_array">
16183                   3
16184                 </span>
16185               <span class="entry_type_visibility"> [ndk_public]</span>
16186
16187
16188               <span class="entry_type_hwlevel">[legacy] </span>
16189
16190
16191
16192
16193             </td> <!-- entry_type -->
16194
16195             <td class="entry_description">
16196               <p>The maximum numbers of different types of output streams
16197 that can be configured and used simultaneously by a camera device.<wbr/></p>
16198             </td>
16199
16200             <td class="entry_units">
16201             </td>
16202
16203             <td class="entry_range">
16204               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
16205 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
16206 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
16207 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16208 &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>
16209             </td>
16210
16211             <td class="entry_hal_version">
16212               <p>3.<wbr/>2</p>
16213             </td>
16214
16215             <td class="entry_tags">
16216               <ul class="entry_tags">
16217                   <li><a href="#tag_BC">BC</a></li>
16218               </ul>
16219             </td>
16220
16221           </tr>
16222           <tr class="entries_header">
16223             <th class="th_details" colspan="6">Details</th>
16224           </tr>
16225           <tr class="entry_cont">
16226             <td class="entry_details" colspan="6">
16227               <p>This is a 3 element tuple that contains the max number of output simultaneous
16228 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16229 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16230 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16231 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>
16232 <p>This lists the upper bound of the number of output streams supported by
16233 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16234 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16235 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16236 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16237 into the 3 stream types as below:</p>
16238 <ul>
16239 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16240   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16241 <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
16242   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16243 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16244   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16245   <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>
16246 </ul>
16247             </td>
16248           </tr>
16249
16250
16251           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16252            <!-- end of entry -->
16253         
16254                 
16255           <tr class="entry" id="static_android.request.maxNumOutputRaw">
16256             <td class="entry_name
16257              " rowspan="3">
16258               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16259             </td>
16260             <td class="entry_type">
16261                 <span class="entry_type_name">int32</span>
16262
16263               <span class="entry_type_visibility"> [java_public]</span>
16264
16265               <span class="entry_type_synthetic">[synthetic] </span>
16266
16267               <span class="entry_type_hwlevel">[legacy] </span>
16268
16269
16270
16271
16272             </td> <!-- entry_type -->
16273
16274             <td class="entry_description">
16275               <p>The maximum numbers of different types of output streams
16276 that can be configured and used simultaneously by a camera device
16277 for any <code>RAW</code> formats.<wbr/></p>
16278             </td>
16279
16280             <td class="entry_units">
16281             </td>
16282
16283             <td class="entry_range">
16284               <p>&gt;= 0</p>
16285             </td>
16286
16287             <td class="entry_hal_version">
16288               <p>3.<wbr/>2</p>
16289             </td>
16290
16291             <td class="entry_tags">
16292             </td>
16293
16294           </tr>
16295           <tr class="entries_header">
16296             <th class="th_details" colspan="6">Details</th>
16297           </tr>
16298           <tr class="entry_cont">
16299             <td class="entry_details" colspan="6">
16300               <p>This value contains the max number of output simultaneous
16301 streams from the raw sensor.<wbr/></p>
16302 <p>This lists the upper bound of the number of output streams supported by
16303 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16304 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16305 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>
16306 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16307 <ul>
16308 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16309 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16310 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16311 </ul>
16312 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16313 never support raw streams.<wbr/></p>
16314             </td>
16315           </tr>
16316
16317
16318           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16319            <!-- end of entry -->
16320         
16321                 
16322           <tr class="entry" id="static_android.request.maxNumOutputProc">
16323             <td class="entry_name
16324              " rowspan="3">
16325               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16326             </td>
16327             <td class="entry_type">
16328                 <span class="entry_type_name">int32</span>
16329
16330               <span class="entry_type_visibility"> [java_public]</span>
16331
16332               <span class="entry_type_synthetic">[synthetic] </span>
16333
16334               <span class="entry_type_hwlevel">[legacy] </span>
16335
16336
16337
16338
16339             </td> <!-- entry_type -->
16340
16341             <td class="entry_description">
16342               <p>The maximum numbers of different types of output streams
16343 that can be configured and used simultaneously by a camera device
16344 for any processed (but not-stalling) formats.<wbr/></p>
16345             </td>
16346
16347             <td class="entry_units">
16348             </td>
16349
16350             <td class="entry_range">
16351               <p>&gt;= 3
16352 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16353 &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>
16354             </td>
16355
16356             <td class="entry_hal_version">
16357               <p>3.<wbr/>2</p>
16358             </td>
16359
16360             <td class="entry_tags">
16361             </td>
16362
16363           </tr>
16364           <tr class="entries_header">
16365             <th class="th_details" colspan="6">Details</th>
16366           </tr>
16367           <tr class="entry_cont">
16368             <td class="entry_details" colspan="6">
16369               <p>This value contains the max number of output simultaneous
16370 streams for any processed (but not-stalling) formats.<wbr/></p>
16371 <p>This lists the upper bound of the number of output streams supported by
16372 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16373 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16374 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>
16375 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16376 Typically:</p>
16377 <ul>
16378 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16379 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16380 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16381 <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>
16382 </ul>
16383 <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
16384 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16385 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16386             </td>
16387           </tr>
16388
16389
16390           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16391            <!-- end of entry -->
16392         
16393                 
16394           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16395             <td class="entry_name
16396              " rowspan="3">
16397               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16398             </td>
16399             <td class="entry_type">
16400                 <span class="entry_type_name">int32</span>
16401
16402               <span class="entry_type_visibility"> [java_public]</span>
16403
16404               <span class="entry_type_synthetic">[synthetic] </span>
16405
16406               <span class="entry_type_hwlevel">[legacy] </span>
16407
16408
16409
16410
16411             </td> <!-- entry_type -->
16412
16413             <td class="entry_description">
16414               <p>The maximum numbers of different types of output streams
16415 that can be configured and used simultaneously by a camera device
16416 for any processed (and stalling) formats.<wbr/></p>
16417             </td>
16418
16419             <td class="entry_units">
16420             </td>
16421
16422             <td class="entry_range">
16423               <p>&gt;= 1</p>
16424             </td>
16425
16426             <td class="entry_hal_version">
16427               <p>3.<wbr/>2</p>
16428             </td>
16429
16430             <td class="entry_tags">
16431             </td>
16432
16433           </tr>
16434           <tr class="entries_header">
16435             <th class="th_details" colspan="6">Details</th>
16436           </tr>
16437           <tr class="entry_cont">
16438             <td class="entry_details" colspan="6">
16439               <p>This value contains the max number of output simultaneous
16440 streams for any processed (but not-stalling) formats.<wbr/></p>
16441 <p>This lists the upper bound of the number of output streams supported by
16442 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16443 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16444 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>
16445 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16446 &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>
16447 <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
16448 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16449 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16450             </td>
16451           </tr>
16452
16453
16454           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16455            <!-- end of entry -->
16456         
16457                 
16458           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16459             <td class="entry_name
16460                 entry_name_deprecated
16461              " rowspan="3">
16462               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16463             </td>
16464             <td class="entry_type">
16465                 <span class="entry_type_name">int32</span>
16466                 <span class="entry_type_container">x</span>
16467
16468                 <span class="entry_type_array">
16469                   1
16470                 </span>
16471               <span class="entry_type_visibility"> [system]</span>
16472
16473
16474
16475               <span class="entry_type_deprecated">[deprecated] </span>
16476
16477
16478
16479             </td> <!-- entry_type -->
16480
16481             <td class="entry_description">
16482               <p>How many reprocessing streams of any type
16483 can be allocated at the same time.<wbr/></p>
16484             </td>
16485
16486             <td class="entry_units">
16487             </td>
16488
16489             <td class="entry_range">
16490               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16491               <p>&gt;= 0</p>
16492             </td>
16493
16494             <td class="entry_hal_version">
16495               <p>3.<wbr/>2</p>
16496             </td>
16497
16498             <td class="entry_tags">
16499               <ul class="entry_tags">
16500                   <li><a href="#tag_HAL2">HAL2</a></li>
16501               </ul>
16502             </td>
16503
16504           </tr>
16505           <tr class="entries_header">
16506             <th class="th_details" colspan="6">Details</th>
16507           </tr>
16508           <tr class="entry_cont">
16509             <td class="entry_details" colspan="6">
16510               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16511 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16512             </td>
16513           </tr>
16514
16515
16516           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16517            <!-- end of entry -->
16518         
16519                 
16520           <tr class="entry" id="static_android.request.maxNumInputStreams">
16521             <td class="entry_name
16522              " rowspan="5">
16523               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16524             </td>
16525             <td class="entry_type">
16526                 <span class="entry_type_name">int32</span>
16527
16528               <span class="entry_type_visibility"> [java_public]</span>
16529
16530
16531               <span class="entry_type_hwlevel">[full] </span>
16532
16533
16534
16535
16536             </td> <!-- entry_type -->
16537
16538             <td class="entry_description">
16539               <p>The maximum numbers of any type of input streams
16540 that can be configured and used simultaneously by a camera device.<wbr/></p>
16541             </td>
16542
16543             <td class="entry_units">
16544             </td>
16545
16546             <td class="entry_range">
16547               <p>0 or 1.<wbr/></p>
16548             </td>
16549
16550             <td class="entry_hal_version">
16551               <p>3.<wbr/>2</p>
16552             </td>
16553
16554             <td class="entry_tags">
16555               <ul class="entry_tags">
16556                   <li><a href="#tag_REPROC">REPROC</a></li>
16557               </ul>
16558             </td>
16559
16560           </tr>
16561           <tr class="entries_header">
16562             <th class="th_details" colspan="6">Details</th>
16563           </tr>
16564           <tr class="entry_cont">
16565             <td class="entry_details" colspan="6">
16566               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16567 <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
16568 input stream,<wbr/> there must be at least one output stream configured to to receive the
16569 reprocessed images.<wbr/></p>
16570 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16571 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16572 new sensor image will not be captured.<wbr/></p>
16573 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16574 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16575 should be JPEG.<wbr/></p>
16576             </td>
16577           </tr>
16578
16579           <tr class="entries_header">
16580             <th class="th_details" colspan="6">HAL Implementation Details</th>
16581           </tr>
16582           <tr class="entry_cont">
16583             <td class="entry_details" colspan="6">
16584               <p>For the reprocessing flow and controls,<wbr/> see
16585 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16586             </td>
16587           </tr>
16588
16589           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16590            <!-- end of entry -->
16591         
16592                 
16593           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16594             <td class="entry_name
16595              " rowspan="5">
16596               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16597             </td>
16598             <td class="entry_type">
16599                 <span class="entry_type_name">byte</span>
16600
16601               <span class="entry_type_visibility"> [public]</span>
16602
16603
16604               <span class="entry_type_hwlevel">[legacy] </span>
16605
16606
16607
16608
16609             </td> <!-- entry_type -->
16610
16611             <td class="entry_description">
16612               <p>Specifies the number of maximum pipeline stages a frame
16613 has to go through from when it's exposed to when it's available
16614 to the framework.<wbr/></p>
16615             </td>
16616
16617             <td class="entry_units">
16618             </td>
16619
16620             <td class="entry_range">
16621             </td>
16622
16623             <td class="entry_hal_version">
16624               <p>3.<wbr/>2</p>
16625             </td>
16626
16627             <td class="entry_tags">
16628             </td>
16629
16630           </tr>
16631           <tr class="entries_header">
16632             <th class="th_details" colspan="6">Details</th>
16633           </tr>
16634           <tr class="entry_cont">
16635             <td class="entry_details" colspan="6">
16636               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16637 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16638 its own stages to do custom HW processing.<wbr/> Further stages may be
16639 added by SW processing.<wbr/></p>
16640 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16641 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16642 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16643 the max pipeline depth.<wbr/></p>
16644 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16645 X frame intervals.<wbr/></p>
16646 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16647 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16648             </td>
16649           </tr>
16650
16651           <tr class="entries_header">
16652             <th class="th_details" colspan="6">HAL Implementation Details</th>
16653           </tr>
16654           <tr class="entry_cont">
16655             <td class="entry_details" colspan="6">
16656               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16657 max batch sizes may be larger than 1.<wbr/></p>
16658             </td>
16659           </tr>
16660
16661           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16662            <!-- end of entry -->
16663         
16664                 
16665           <tr class="entry" id="static_android.request.partialResultCount">
16666             <td class="entry_name
16667              " rowspan="3">
16668               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16669             </td>
16670             <td class="entry_type">
16671                 <span class="entry_type_name">int32</span>
16672
16673               <span class="entry_type_visibility"> [public]</span>
16674
16675
16676
16677
16678
16679
16680             </td> <!-- entry_type -->
16681
16682             <td class="entry_description">
16683               <p>Defines how many sub-components
16684 a result will be composed of.<wbr/></p>
16685             </td>
16686
16687             <td class="entry_units">
16688             </td>
16689
16690             <td class="entry_range">
16691               <p>&gt;= 1</p>
16692             </td>
16693
16694             <td class="entry_hal_version">
16695               <p>3.<wbr/>2</p>
16696             </td>
16697
16698             <td class="entry_tags">
16699             </td>
16700
16701           </tr>
16702           <tr class="entries_header">
16703             <th class="th_details" colspan="6">Details</th>
16704           </tr>
16705           <tr class="entry_cont">
16706             <td class="entry_details" colspan="6">
16707               <p>In order to combat the pipeline latency,<wbr/> partial results
16708 may be delivered to the application layer from the camera device as
16709 soon as they are available.<wbr/></p>
16710 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16711 results are not supported,<wbr/> and only the final TotalCaptureResult will
16712 be produced by the camera device.<wbr/></p>
16713 <p>A typical use case for this might be: after requesting an
16714 auto-focus (AF) lock the new AF state might be available 50%
16715 of the way through the pipeline.<wbr/>  The camera device could
16716 then immediately dispatch this state via a partial result to
16717 the application,<wbr/> and the rest of the metadata via later
16718 partial results.<wbr/></p>
16719             </td>
16720           </tr>
16721
16722
16723           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16724            <!-- end of entry -->
16725         
16726                 
16727           <tr class="entry" id="static_android.request.availableCapabilities">
16728             <td class="entry_name
16729              " rowspan="5">
16730               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16731             </td>
16732             <td class="entry_type">
16733                 <span class="entry_type_name entry_type_name_enum">byte</span>
16734                 <span class="entry_type_container">x</span>
16735
16736                 <span class="entry_type_array">
16737                   n
16738                 </span>
16739               <span class="entry_type_visibility"> [public]</span>
16740
16741
16742               <span class="entry_type_hwlevel">[legacy] </span>
16743
16744
16745
16746                 <ul class="entry_type_enum">
16747                   <li>
16748                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16749                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16750 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16751 supports.<wbr/></p>
16752 <p>This capability is listed by all normal devices,<wbr/> and
16753 indicates that the camera device has a feature set
16754 that's comparable to the baseline requirements for the
16755 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16756 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16757 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16758 not standard color output.<wbr/></p></span>
16759                   </li>
16760                   <li>
16761                     <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16762                     <span class="entry_type_enum_optional">[optional]</span>
16763                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16764 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16765 The camera device supports basic manual control of the sensor image
16766 acquisition related stages.<wbr/> This means the following controls are
16767 guaranteed to be supported:</p>
16768 <ul>
16769 <li>Manual frame duration control<ul>
16770 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16771 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16772 </ul>
16773 </li>
16774 <li>Manual exposure control<ul>
16775 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16776 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16777 </ul>
16778 </li>
16779 <li>Manual sensitivity control<ul>
16780 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16781 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16782 </ul>
16783 </li>
16784 <li>Manual lens control (if the lens is adjustable)<ul>
16785 <li>android.<wbr/>lens.<wbr/>*</li>
16786 </ul>
16787 </li>
16788 <li>Manual flash control (if a flash unit is present)<ul>
16789 <li>android.<wbr/>flash.<wbr/>*</li>
16790 </ul>
16791 </li>
16792 <li>Manual black level locking<ul>
16793 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16794 </ul>
16795 </li>
16796 <li>Auto exposure lock<ul>
16797 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16798 </ul>
16799 </li>
16800 </ul>
16801 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16802 device will accurately report the values applied by 3A in the
16803 result.<wbr/></p>
16804 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16805 but this capability only covers the above list of controls.<wbr/></p>
16806 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16807 additionally return a min frame duration that is greater than
16808 zero for each supported size-format combination.<wbr/></p></span>
16809                   </li>
16810                   <li>
16811                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16812                     <span class="entry_type_enum_optional">[optional]</span>
16813                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16814 The camera device supports basic manual control of the image post-processing
16815 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16816 <ul>
16817 <li>
16818 <p>Manual tonemap control</p>
16819 <ul>
16820 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16821 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16822 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16823 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16824 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16825 </ul>
16826 </li>
16827 <li>
16828 <p>Manual white balance control</p>
16829 <ul>
16830 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16831 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16832 </ul>
16833 </li>
16834 <li>Manual lens shading map control<ul>
16835 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16836 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16837 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16838 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16839 </ul>
16840 </li>
16841 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16842 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16843 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16844 </ul>
16845 </li>
16846 <li>Auto white balance lock<ul>
16847 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16848 </ul>
16849 </li>
16850 </ul>
16851 <p>If auto white balance is enabled,<wbr/> then the camera device
16852 will accurately report the values applied by AWB in the result.<wbr/></p>
16853 <p>A given camera device may also support additional post-processing
16854 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16855                   </li>
16856                   <li>
16857                     <span class="entry_type_enum_name">RAW (v3.2)</span>
16858                     <span class="entry_type_enum_optional">[optional]</span>
16859                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16860 metadata for interpreting them.<wbr/></p>
16861 <p>Devices supporting the RAW capability allow both for
16862 saving DNG files,<wbr/> and for direct application processing of
16863 raw sensor images.<wbr/></p>
16864 <ul>
16865 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16866 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16867   will match either the value in
16868   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16869   <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>
16870 <li>All DNG-related optional metadata entries are provided
16871   by the camera device.<wbr/></li>
16872 </ul></span>
16873                   </li>
16874                   <li>
16875                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16876                     <span class="entry_type_enum_optional">[optional]</span>
16877                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16878 <ul>
16879 <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>
16880 <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/>
16881   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16882   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>
16883 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16884   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>
16885 <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>
16886 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16887   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16888 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16889   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16890   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16891 <li>The maximum available resolution for PRIVATE streams
16892   (both input/<wbr/>output) will match the maximum available
16893   resolution of JPEG streams.<wbr/></li>
16894 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16895 <li>Only below controls are effective for reprocessing requests and
16896   will be present in capture results,<wbr/> other controls in reprocess
16897   requests will be ignored by the camera device.<wbr/><ul>
16898 <li>android.<wbr/>jpeg.<wbr/>*</li>
16899 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16900 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16901 </ul>
16902 </li>
16903 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16904   <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>
16905 </ul></span>
16906                   </li>
16907                   <li>
16908                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16909                     <span class="entry_type_enum_optional">[optional]</span>
16910                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16911 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16912 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16913 <p>The values reported for the following controls are guaranteed to be available
16914 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16915 <ul>
16916 <li>Exposure control<ul>
16917 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16918 </ul>
16919 </li>
16920 <li>Sensitivity control<ul>
16921 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16922 </ul>
16923 </li>
16924 <li>Lens controls (if the lens is adjustable)<ul>
16925 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16926 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16927 </ul>
16928 </li>
16929 </ul>
16930 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16931 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16932                   </li>
16933                   <li>
16934                     <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16935                     <span class="entry_type_enum_optional">[optional]</span>
16936                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16937 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16938 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16939 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16940 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16941                   </li>
16942                   <li>
16943                     <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16944                     <span class="entry_type_enum_optional">[optional]</span>
16945                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16946 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16947 following:</p>
16948 <ul>
16949 <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>
16950 <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
16951   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>
16952 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16953   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>
16954 <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>
16955 <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
16956   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16957 <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
16958   <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>
16959 <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
16960   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16961 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16962 <li>Only the below controls are effective for reprocessing requests and will be present
16963   in capture results.<wbr/> The reprocess requests are from the original capture results
16964   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
16965   reprocess requests will be ignored by the camera device.<wbr/><ul>
16966 <li>android.<wbr/>jpeg.<wbr/>*</li>
16967 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16968 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16969 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16970 </ul>
16971 </li>
16972 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16973   <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>
16974 </ul></span>
16975                   </li>
16976                   <li>
16977                     <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16978                     <span class="entry_type_enum_optional">[optional]</span>
16979                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16980 <p>This capability requires the camera device to support the following:</p>
16981 <ul>
16982 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16983   an output format.<wbr/></li>
16984 <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
16985   optionally supported as an output format.<wbr/></li>
16986 <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
16987   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16988   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16989 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16990 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16991 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16992 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
16993 </ul>
16994 </li>
16995 <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>
16996 <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>
16997 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16998   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16999   format.<wbr/></li>
17000 </ul>
17001 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
17002 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
17003 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17004 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17005 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17006 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17007 rate,<wbr/> including depth stall time.<wbr/></p></span>
17008                   </li>
17009                   <li>
17010                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17011                     <span class="entry_type_enum_optional">[optional]</span>
17012                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
17013 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
17014 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>
17015 <p>A camera device can still support high speed video streaming by advertising the high
17016 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
17017 normal capture request per frame control and synchronization requirements will apply
17018 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17019 describes the capability of a specialized operating mode with many limitations (see
17020 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17021 <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/>
17022 To get desired output frame rates,<wbr/> the application is only allowed to select video
17023 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
17024 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>
17025 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17026 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17027 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17028 and post-processing parameters is possible.<wbr/> All other controls operate the
17029 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17030 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17031 <ul>
17032 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17033 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17034 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17035 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17036 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17037 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17038 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17039 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17040 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17041 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17042 </ul>
17043 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17044 <ul>
17045 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17046 work since aeMode is ON)</li>
17047 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17048 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17049 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17050 </ul>
17051 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17052 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17053 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17054 the application need check if the video encoder is capable of supporting the
17055 high frame rate for a given video size,<wbr/> or it will end up with lower recording
17056 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17057 rate will be bounded by the screen refresh rate.<wbr/></p>
17058 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
17059 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17060 if all of below conditions are true:</p>
17061 <ul>
17062 <li>The application creates a camera capture session with no more than 2 surfaces via
17063 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17064 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
17065 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>
17066 <li>The stream sizes are selected from the sizes reported by
17067 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17068 <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>
17069 </ul>
17070 <p>When above conditions are NOT satistied,<wbr/>
17071 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17072 will fail.<wbr/></p>
17073 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17074 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17075 the application avoids unnecessary maximum target FPS changes as much as possible
17076 during high speed streaming.<wbr/></p></span>
17077                   </li>
17078                   <li>
17079                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17080                     <span class="entry_type_enum_optional">[optional]</span>
17081                     <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17082 <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>
17083 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17084 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17085                   </li>
17086                   <li>
17087                     <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17088                     <span class="entry_type_enum_optional">[optional]</span>
17089                     <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
17090 also exposed to the application.<wbr/></p>
17091 <p>This capability requires the camera device to support the following:</p>
17092 <ul>
17093 <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>
17094 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
17095 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
17096 </ul>
17097 </li>
17098 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17099   so that the application can correlate pixels from the physical streams:<ul>
17100 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17101 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17102 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17103 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17104 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17105 </ul>
17106 </li>
17107 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17108   the same.<wbr/></li>
17109 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
17110 </ul>
17111 <p>Both the logical camera device and its underlying physical devices support the
17112 mandatory stream combinations required for their device levels.<wbr/></p>
17113 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
17114 <ul>
17115 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
17116   logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
17117   or raw stream with two physical streams of the same size and format,<wbr/> each from a
17118   separate physical camera,<wbr/> given that the size and format are supported by both
17119   physical cameras.<wbr/></li>
17120 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
17121   cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
17122   capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
17123   physical camera.<wbr/> This is usually the case when the physical cameras have different
17124   sensor sizes.<wbr/></li>
17125 </ul>
17126 <p>Using physical streams in place of a logical stream of the same size and format will
17127 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
17128 of the physical and logical streams are the same.<wbr/></p></span>
17129                   </li>
17130                   <li>
17131                     <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
17132                     <span class="entry_type_enum_optional">[optional]</span>
17133                     <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
17134 and the pixel values on U and Y planes are all 128.<wbr/></p></span>
17135                   </li>
17136                 </ul>
17137
17138             </td> <!-- entry_type -->
17139
17140             <td class="entry_description">
17141               <p>List of capabilities that this camera device
17142 advertises as fully supporting.<wbr/></p>
17143             </td>
17144
17145             <td class="entry_units">
17146             </td>
17147
17148             <td class="entry_range">
17149             </td>
17150
17151             <td class="entry_hal_version">
17152               <p>3.<wbr/>2</p>
17153             </td>
17154
17155             <td class="entry_tags">
17156             </td>
17157
17158           </tr>
17159           <tr class="entries_header">
17160             <th class="th_details" colspan="6">Details</th>
17161           </tr>
17162           <tr class="entry_cont">
17163             <td class="entry_details" colspan="6">
17164               <p>A capability is a contract that the camera device makes in order
17165 to be able to satisfy one or more use cases.<wbr/></p>
17166 <p>Listing a capability guarantees that the whole set of features
17167 required to support a common use will all be available.<wbr/></p>
17168 <p>Using a subset of the functionality provided by an unsupported
17169 capability may be possible on a specific camera device implementation;
17170 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17171 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17172 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17173 <p>The following capabilities are guaranteed to be available on
17174 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17175 <ul>
17176 <li>MANUAL_<wbr/>SENSOR</li>
17177 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17178 </ul>
17179 <p>Other capabilities may be available on either FULL or LIMITED
17180 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17181             </td>
17182           </tr>
17183
17184           <tr class="entries_header">
17185             <th class="th_details" colspan="6">HAL Implementation Details</th>
17186           </tr>
17187           <tr class="entry_cont">
17188             <td class="entry_details" colspan="6">
17189               <p>Additional constraint details per-capability will be available
17190 in the Compatibility Test Suite.<wbr/></p>
17191 <p>Minimum baseline requirements required for the
17192 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17193 Instead refer to "BC" tags and the camera CTS tests in the
17194 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17195 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17196 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17197 request and the result in order to be considered to be
17198 capability-compliant.<wbr/></p>
17199 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17200 then exposure time must be configurable via the request <em>and</em>
17201 the actual exposure applied must be available via
17202 the result.<wbr/></p>
17203 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17204 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17205 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17206 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17207 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17208 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17209 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17210 YUV_<wbr/>REPROCESSING capability must support the
17211 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17212 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17213 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17214 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17215 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17216 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17217 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17218 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17219 DEPTH).<wbr/></p>
17220 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17221 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17222 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17223 <p>For MONOCHROME,<wbr/> the camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and
17224 it is exclusive of both RAW and MANUAL_<wbr/>POST_<wbr/>PROCESSING capabilities:</p>
17225 <ul>
17226 <li>
17227 <p>To maintain backward compatibility,<wbr/> the camera device must support all
17228 BACKWARD_<wbr/>COMPATIBLE required keys.<wbr/> The <a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a> key only contains
17229 AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
17230 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
17231 </li>
17232 <li>
17233 <p>A monochrome device doesn't need to advertise DNG related optional metadata tags.<wbr/></p>
17234 </li>
17235 <li>
17236 <p><a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>,<wbr/> <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> and
17237 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are not applicable.<wbr/> So the camera device cannot
17238 be a FULL device.<wbr/> However,<wbr/> the HAL can still advertise other individual capabilites.<wbr/></p>
17239 </li>
17240 <li>
17241 <p>If the device supports tonemap control,<wbr/> only <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> is used.<wbr/>
17242 CurveGreen and curveBlue are no-ops.<wbr/></p>
17243 </li>
17244 </ul>
17245             </td>
17246           </tr>
17247
17248           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17249            <!-- end of entry -->
17250         
17251                 
17252           <tr class="entry" id="static_android.request.availableRequestKeys">
17253             <td class="entry_name
17254              " rowspan="5">
17255               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17256             </td>
17257             <td class="entry_type">
17258                 <span class="entry_type_name">int32</span>
17259                 <span class="entry_type_container">x</span>
17260
17261                 <span class="entry_type_array">
17262                   n
17263                 </span>
17264               <span class="entry_type_visibility"> [ndk_public]</span>
17265
17266
17267               <span class="entry_type_hwlevel">[legacy] </span>
17268
17269
17270
17271
17272             </td> <!-- entry_type -->
17273
17274             <td class="entry_description">
17275               <p>A list of all keys that the camera device has available
17276 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17277             </td>
17278
17279             <td class="entry_units">
17280             </td>
17281
17282             <td class="entry_range">
17283             </td>
17284
17285             <td class="entry_hal_version">
17286               <p>3.<wbr/>2</p>
17287             </td>
17288
17289             <td class="entry_tags">
17290             </td>
17291
17292           </tr>
17293           <tr class="entries_header">
17294             <th class="th_details" colspan="6">Details</th>
17295           </tr>
17296           <tr class="entry_cont">
17297             <td class="entry_details" colspan="6">
17298               <p>Attempting to set a key into a CaptureRequest that is not
17299 listed here will result in an invalid request and will be rejected
17300 by the camera device.<wbr/></p>
17301 <p>This field can be used to query the feature set of a camera device
17302 at a more granular level than capabilities.<wbr/> This is especially
17303 important for optional keys that are not listed under any capability
17304 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17305             </td>
17306           </tr>
17307
17308           <tr class="entries_header">
17309             <th class="th_details" colspan="6">HAL Implementation Details</th>
17310           </tr>
17311           <tr class="entry_cont">
17312             <td class="entry_details" colspan="6">
17313               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17314 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17315 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17316 vendor extensions API and not against this field.<wbr/></p>
17317 <p>The HAL must not consume any request tags that are not listed either
17318 here or in the vendor tag list.<wbr/></p>
17319 <p>The public camera2 API will always make the vendor tags visible
17320 via
17321 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17322             </td>
17323           </tr>
17324
17325           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17326            <!-- end of entry -->
17327         
17328                 
17329           <tr class="entry" id="static_android.request.availableResultKeys">
17330             <td class="entry_name
17331              " rowspan="5">
17332               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17333             </td>
17334             <td class="entry_type">
17335                 <span class="entry_type_name">int32</span>
17336                 <span class="entry_type_container">x</span>
17337
17338                 <span class="entry_type_array">
17339                   n
17340                 </span>
17341               <span class="entry_type_visibility"> [ndk_public]</span>
17342
17343
17344               <span class="entry_type_hwlevel">[legacy] </span>
17345
17346
17347
17348
17349             </td> <!-- entry_type -->
17350
17351             <td class="entry_description">
17352               <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>
17353             </td>
17354
17355             <td class="entry_units">
17356             </td>
17357
17358             <td class="entry_range">
17359             </td>
17360
17361             <td class="entry_hal_version">
17362               <p>3.<wbr/>2</p>
17363             </td>
17364
17365             <td class="entry_tags">
17366             </td>
17367
17368           </tr>
17369           <tr class="entries_header">
17370             <th class="th_details" colspan="6">Details</th>
17371           </tr>
17372           <tr class="entry_cont">
17373             <td class="entry_details" colspan="6">
17374               <p>Attempting to get a key from a CaptureResult that is not
17375 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17376 a CaptureResult that is listed here will generally never return a <code>null</code>
17377 value.<wbr/></p>
17378 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17379 <ul>
17380 <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>
17381 </ul>
17382 <p>(Those sometimes-null keys will nevertheless be listed here
17383 if they are available.<wbr/>)</p>
17384 <p>This field can be used to query the feature set of a camera device
17385 at a more granular level than capabilities.<wbr/> This is especially
17386 important for optional keys that are not listed under any capability
17387 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17388             </td>
17389           </tr>
17390
17391           <tr class="entries_header">
17392             <th class="th_details" colspan="6">HAL Implementation Details</th>
17393           </tr>
17394           <tr class="entry_cont">
17395             <td class="entry_details" colspan="6">
17396               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17397 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17398 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17399 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17400 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17401 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17402 vendor extensions API and not against this field.<wbr/></p>
17403 <p>The HAL must not produce any result tags that are not listed either
17404 here or in the vendor tag list.<wbr/></p>
17405 <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>
17406             </td>
17407           </tr>
17408
17409           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17410            <!-- end of entry -->
17411         
17412                 
17413           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17414             <td class="entry_name
17415              " rowspan="5">
17416               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17417             </td>
17418             <td class="entry_type">
17419                 <span class="entry_type_name">int32</span>
17420                 <span class="entry_type_container">x</span>
17421
17422                 <span class="entry_type_array">
17423                   n
17424                 </span>
17425               <span class="entry_type_visibility"> [ndk_public]</span>
17426
17427
17428               <span class="entry_type_hwlevel">[legacy] </span>
17429
17430
17431
17432
17433             </td> <!-- entry_type -->
17434
17435             <td class="entry_description">
17436               <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>
17437             </td>
17438
17439             <td class="entry_units">
17440             </td>
17441
17442             <td class="entry_range">
17443             </td>
17444
17445             <td class="entry_hal_version">
17446               <p>3.<wbr/>2</p>
17447             </td>
17448
17449             <td class="entry_tags">
17450             </td>
17451
17452           </tr>
17453           <tr class="entries_header">
17454             <th class="th_details" colspan="6">Details</th>
17455           </tr>
17456           <tr class="entry_cont">
17457             <td class="entry_details" colspan="6">
17458               <p>This entry follows the same rules as
17459 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17460 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17461 details.<wbr/></p>
17462             </td>
17463           </tr>
17464
17465           <tr class="entries_header">
17466             <th class="th_details" colspan="6">HAL Implementation Details</th>
17467           </tr>
17468           <tr class="entry_cont">
17469             <td class="entry_details" colspan="6">
17470               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17471 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17472 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17473 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17474 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17475 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17476 vendor extensions API and not against this field.<wbr/></p>
17477 <p>The HAL must not have any tags in its static info that are not listed
17478 either here or in the vendor tag list.<wbr/></p>
17479 <p>The public camera2 API will always make the vendor tags visible
17480 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17481             </td>
17482           </tr>
17483
17484           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17485            <!-- end of entry -->
17486         
17487                 
17488           <tr class="entry" id="static_android.request.availableSessionKeys">
17489             <td class="entry_name
17490              " rowspan="5">
17491               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17492             </td>
17493             <td class="entry_type">
17494                 <span class="entry_type_name">int32</span>
17495                 <span class="entry_type_container">x</span>
17496
17497                 <span class="entry_type_array">
17498                   n
17499                 </span>
17500               <span class="entry_type_visibility"> [ndk_public]</span>
17501
17502
17503               <span class="entry_type_hwlevel">[legacy] </span>
17504
17505
17506
17507
17508             </td> <!-- entry_type -->
17509
17510             <td class="entry_description">
17511               <p>A subset of the available request keys that the camera device
17512 can pass as part of the capture session initialization.<wbr/></p>
17513             </td>
17514
17515             <td class="entry_units">
17516             </td>
17517
17518             <td class="entry_range">
17519             </td>
17520
17521             <td class="entry_hal_version">
17522               <p>3.<wbr/>3</p>
17523             </td>
17524
17525             <td class="entry_tags">
17526             </td>
17527
17528           </tr>
17529           <tr class="entries_header">
17530             <th class="th_details" colspan="6">Details</th>
17531           </tr>
17532           <tr class="entry_cont">
17533             <td class="entry_details" colspan="6">
17534               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17535 contains a list of keys that are difficult to apply per-frame and
17536 can result in unexpected delays when modified during the capture session
17537 lifetime.<wbr/> Typical examples include parameters that require a
17538 time-consuming hardware re-configuration or internal camera pipeline
17539 change.<wbr/> For performance reasons we advise clients to pass their initial
17540 values as part of
17541 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17542 Once the camera capture session is enabled it is also recommended to avoid
17543 changing them from their initial values set in
17544 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17545 Control over session parameters can still be exerted in capture requests
17546 but clients should be aware and expect delays during their application.<wbr/>
17547 An example usage scenario could look like this:</p>
17548 <ul>
17549 <li>The camera client starts by quering the session parameter key list via
17550   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17551 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17552   must be built via
17553   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17554   using an appropriate template matching the particular use case.<wbr/></li>
17555 <li>The client should go over the list of session parameters and check
17556   whether some of the keys listed matches with the parameters that
17557   they intend to modify as part of the first capture request.<wbr/></li>
17558 <li>If there is no such match,<wbr/> the capture request can be  passed
17559   unmodified to
17560   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17561 <li>If matches do exist,<wbr/> the client should update the respective values
17562   and pass the request to
17563   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17564 <li>After the capture session initialization completes the session parameter
17565   key list can continue to serve as reference when posting or updating
17566   further requests.<wbr/> As mentioned above further changes to session
17567   parameters should ideally be avoided,<wbr/> if updates are necessary
17568   however clients could expect a delay/<wbr/>glitch during the
17569   parameter switch.<wbr/></li>
17570 </ul>
17571             </td>
17572           </tr>
17573
17574           <tr class="entries_header">
17575             <th class="th_details" colspan="6">HAL Implementation Details</th>
17576           </tr>
17577           <tr class="entry_cont">
17578             <td class="entry_details" colspan="6">
17579               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17580 use the extensions C api (refer to
17581 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17582 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17583 vendor extensions API and not against this field.<wbr/></p>
17584 <p>The HAL must not consume any request tags in the session parameters that
17585 are not listed either here or in the vendor tag list.<wbr/></p>
17586 <p>The public camera2 API will always make the vendor tags visible
17587 via
17588 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17589             </td>
17590           </tr>
17591
17592           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17593            <!-- end of entry -->
17594         
17595                 
17596           <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17597             <td class="entry_name
17598              " rowspan="5">
17599               android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17600             </td>
17601             <td class="entry_type">
17602                 <span class="entry_type_name">int32</span>
17603                 <span class="entry_type_container">x</span>
17604
17605                 <span class="entry_type_array">
17606                   n
17607                 </span>
17608               <span class="entry_type_visibility"> [hidden]</span>
17609
17610
17611               <span class="entry_type_hwlevel">[limited] </span>
17612
17613
17614
17615
17616             </td> <!-- entry_type -->
17617
17618             <td class="entry_description">
17619               <p>A subset of the available request keys that can be overriden for
17620 physical devices backing a logical multi-camera.<wbr/></p>
17621             </td>
17622
17623             <td class="entry_units">
17624             </td>
17625
17626             <td class="entry_range">
17627             </td>
17628
17629             <td class="entry_hal_version">
17630               <p>3.<wbr/>3</p>
17631             </td>
17632
17633             <td class="entry_tags">
17634             </td>
17635
17636           </tr>
17637           <tr class="entries_header">
17638             <th class="th_details" colspan="6">Details</th>
17639           </tr>
17640           <tr class="entry_cont">
17641             <td class="entry_details" colspan="6">
17642               <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
17643 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17644 The respective value of such request key can be obtained by calling
17645 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17646 individual physical device requests must be built via
17647 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17648             </td>
17649           </tr>
17650
17651           <tr class="entries_header">
17652             <th class="th_details" colspan="6">HAL Implementation Details</th>
17653           </tr>
17654           <tr class="entry_cont">
17655             <td class="entry_details" colspan="6">
17656               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17657 use the extensions C api (refer to
17658 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17659 details).<wbr/></p>
17660 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17661 vendor extensions API and not against this field.<wbr/></p>
17662 <p>The HAL must not consume any request tags in the session parameters that
17663 are not listed either here or in the vendor tag list.<wbr/></p>
17664 <p>There should be no overlap between this set of keys and the available session keys
17665 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17666 with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17667 <p>The public camera2 API will always make the vendor tags visible
17668 via
17669 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17670             </td>
17671           </tr>
17672
17673           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17674            <!-- end of entry -->
17675         
17676         
17677
17678       <!-- end of kind -->
17679       </tbody>
17680       <tr><td colspan="7" class="kind">dynamic</td></tr>
17681
17682       <thead class="entries_header">
17683         <tr>
17684           <th class="th_name">Property Name</th>
17685           <th class="th_type">Type</th>
17686           <th class="th_description">Description</th>
17687           <th class="th_units">Units</th>
17688           <th class="th_range">Range</th>
17689           <th class="th_hal_version">Initial HIDL HAL version</th>
17690           <th class="th_tags">Tags</th>
17691         </tr>
17692       </thead>
17693
17694       <tbody>
17695
17696         
17697
17698         
17699
17700         
17701
17702         
17703
17704                 
17705           <tr class="entry" id="dynamic_android.request.frameCount">
17706             <td class="entry_name
17707                 entry_name_deprecated
17708              " rowspan="3">
17709               android.<wbr/>request.<wbr/>frame<wbr/>Count
17710             </td>
17711             <td class="entry_type">
17712                 <span class="entry_type_name">int32</span>
17713
17714               <span class="entry_type_visibility"> [hidden]</span>
17715
17716
17717
17718               <span class="entry_type_deprecated">[deprecated] </span>
17719
17720
17721
17722             </td> <!-- entry_type -->
17723
17724             <td class="entry_description">
17725               <p>A frame counter set by the framework.<wbr/> This value monotonically
17726 increases with every new result (that is,<wbr/> each new result has a unique
17727 frameCount value).<wbr/></p>
17728             </td>
17729
17730             <td class="entry_units">
17731               count of frames
17732             </td>
17733
17734             <td class="entry_range">
17735               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17736               <p>&gt; 0</p>
17737             </td>
17738
17739             <td class="entry_hal_version">
17740               <p>3.<wbr/>2</p>
17741             </td>
17742
17743             <td class="entry_tags">
17744             </td>
17745
17746           </tr>
17747           <tr class="entries_header">
17748             <th class="th_details" colspan="6">Details</th>
17749           </tr>
17750           <tr class="entry_cont">
17751             <td class="entry_details" colspan="6">
17752               <p>Reset on release()</p>
17753             </td>
17754           </tr>
17755
17756
17757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17758            <!-- end of entry -->
17759         
17760                 
17761           <tr class="entry" id="dynamic_android.request.id">
17762             <td class="entry_name
17763              " rowspan="1">
17764               android.<wbr/>request.<wbr/>id
17765             </td>
17766             <td class="entry_type">
17767                 <span class="entry_type_name">int32</span>
17768
17769               <span class="entry_type_visibility"> [hidden]</span>
17770
17771
17772
17773
17774
17775
17776             </td> <!-- entry_type -->
17777
17778             <td class="entry_description">
17779               <p>An application-specified ID for the current
17780 request.<wbr/> Must be maintained unchanged in output
17781 frame</p>
17782             </td>
17783
17784             <td class="entry_units">
17785               arbitrary integer assigned by application
17786             </td>
17787
17788             <td class="entry_range">
17789               <p>Any int</p>
17790             </td>
17791
17792             <td class="entry_hal_version">
17793               <p>3.<wbr/>2</p>
17794             </td>
17795
17796             <td class="entry_tags">
17797               <ul class="entry_tags">
17798                   <li><a href="#tag_V1">V1</a></li>
17799               </ul>
17800             </td>
17801
17802           </tr>
17803
17804
17805           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17806            <!-- end of entry -->
17807         
17808                 
17809           <tr class="entry" id="dynamic_android.request.metadataMode">
17810             <td class="entry_name
17811              " rowspan="1">
17812               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17813             </td>
17814             <td class="entry_type">
17815                 <span class="entry_type_name entry_type_name_enum">byte</span>
17816
17817               <span class="entry_type_visibility"> [system]</span>
17818
17819
17820
17821
17822
17823                 <ul class="entry_type_enum">
17824                   <li>
17825                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17826                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17827 for application-bound buffer data.<wbr/> If no
17828 application-bound streams exist,<wbr/> no frame should be
17829 placed in the output frame queue.<wbr/> If such streams
17830 exist,<wbr/> a frame should be placed on the output queue
17831 with null metadata but with the necessary output buffer
17832 information.<wbr/> Timestamp information should still be
17833 included with any output stream buffers</p></span>
17834                   </li>
17835                   <li>
17836                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17837                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17838 only be produced if they are separately
17839 enabled</p></span>
17840                   </li>
17841                 </ul>
17842
17843             </td> <!-- entry_type -->
17844
17845             <td class="entry_description">
17846               <p>How much metadata to produce on
17847 output</p>
17848             </td>
17849
17850             <td class="entry_units">
17851             </td>
17852
17853             <td class="entry_range">
17854             </td>
17855
17856             <td class="entry_hal_version">
17857               <p>3.<wbr/>2</p>
17858             </td>
17859
17860             <td class="entry_tags">
17861               <ul class="entry_tags">
17862                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17863               </ul>
17864             </td>
17865
17866           </tr>
17867
17868
17869           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17870            <!-- end of entry -->
17871         
17872                 
17873           <tr class="entry" id="dynamic_android.request.outputStreams">
17874             <td class="entry_name
17875                 entry_name_deprecated
17876              " rowspan="3">
17877               android.<wbr/>request.<wbr/>output<wbr/>Streams
17878             </td>
17879             <td class="entry_type">
17880                 <span class="entry_type_name">int32</span>
17881                 <span class="entry_type_container">x</span>
17882
17883                 <span class="entry_type_array">
17884                   n
17885                 </span>
17886               <span class="entry_type_visibility"> [system]</span>
17887
17888
17889
17890               <span class="entry_type_deprecated">[deprecated] </span>
17891
17892
17893
17894             </td> <!-- entry_type -->
17895
17896             <td class="entry_description">
17897               <p>Lists which camera output streams image data
17898 from this capture must be sent to</p>
17899             </td>
17900
17901             <td class="entry_units">
17902               List of camera stream IDs
17903             </td>
17904
17905             <td class="entry_range">
17906               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17907               <p>List must only include streams that have been
17908 created</p>
17909             </td>
17910
17911             <td class="entry_hal_version">
17912               <p>3.<wbr/>2</p>
17913             </td>
17914
17915             <td class="entry_tags">
17916               <ul class="entry_tags">
17917                   <li><a href="#tag_HAL2">HAL2</a></li>
17918               </ul>
17919             </td>
17920
17921           </tr>
17922           <tr class="entries_header">
17923             <th class="th_details" colspan="6">Details</th>
17924           </tr>
17925           <tr class="entry_cont">
17926             <td class="entry_details" colspan="6">
17927               <p>If no output streams are listed,<wbr/> then the image
17928 data should simply be discarded.<wbr/> The image data must
17929 still be captured for metadata and statistics production,<wbr/>
17930 and the lens and flash must operate as requested.<wbr/></p>
17931             </td>
17932           </tr>
17933
17934
17935           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17936            <!-- end of entry -->
17937         
17938                 
17939           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17940             <td class="entry_name
17941              " rowspan="5">
17942               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17943             </td>
17944             <td class="entry_type">
17945                 <span class="entry_type_name">byte</span>
17946
17947               <span class="entry_type_visibility"> [public]</span>
17948
17949
17950               <span class="entry_type_hwlevel">[legacy] </span>
17951
17952
17953
17954
17955             </td> <!-- entry_type -->
17956
17957             <td class="entry_description">
17958               <p>Specifies the number of pipeline stages the frame went
17959 through from when it was exposed to when the final completed result
17960 was available to the framework.<wbr/></p>
17961             </td>
17962
17963             <td class="entry_units">
17964             </td>
17965
17966             <td class="entry_range">
17967               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17968             </td>
17969
17970             <td class="entry_hal_version">
17971               <p>3.<wbr/>2</p>
17972             </td>
17973
17974             <td class="entry_tags">
17975             </td>
17976
17977           </tr>
17978           <tr class="entries_header">
17979             <th class="th_details" colspan="6">Details</th>
17980           </tr>
17981           <tr class="entry_cont">
17982             <td class="entry_details" colspan="6">
17983               <p>Depending on what settings are used in the request,<wbr/> and
17984 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17985 and some pipeline stages skipped.<wbr/></p>
17986 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17987             </td>
17988           </tr>
17989
17990           <tr class="entries_header">
17991             <th class="th_details" colspan="6">HAL Implementation Details</th>
17992           </tr>
17993           <tr class="entry_cont">
17994             <td class="entry_details" colspan="6">
17995               <p>This value must always represent the accurate count of how many
17996 pipeline stages were actually used.<wbr/></p>
17997             </td>
17998           </tr>
17999
18000           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18001            <!-- end of entry -->
18002         
18003         
18004
18005       <!-- end of kind -->
18006       </tbody>
18007
18008   <!-- end of section -->
18009   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
18010
18011
18012       <tr><td colspan="7" class="kind">controls</td></tr>
18013
18014       <thead class="entries_header">
18015         <tr>
18016           <th class="th_name">Property Name</th>
18017           <th class="th_type">Type</th>
18018           <th class="th_description">Description</th>
18019           <th class="th_units">Units</th>
18020           <th class="th_range">Range</th>
18021           <th class="th_hal_version">Initial HIDL HAL version</th>
18022           <th class="th_tags">Tags</th>
18023         </tr>
18024       </thead>
18025
18026       <tbody>
18027
18028         
18029
18030         
18031
18032         
18033
18034         
18035
18036                 
18037           <tr class="entry" id="controls_android.scaler.cropRegion">
18038             <td class="entry_name
18039              " rowspan="5">
18040               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18041             </td>
18042             <td class="entry_type">
18043                 <span class="entry_type_name">int32</span>
18044                 <span class="entry_type_container">x</span>
18045
18046                 <span class="entry_type_array">
18047                   4
18048                 </span>
18049               <span class="entry_type_visibility"> [public as rectangle]</span>
18050
18051
18052               <span class="entry_type_hwlevel">[legacy] </span>
18053
18054
18055
18056
18057             </td> <!-- entry_type -->
18058
18059             <td class="entry_description">
18060               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18061             </td>
18062
18063             <td class="entry_units">
18064               Pixel coordinates relative to
18065           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18066             </td>
18067
18068             <td class="entry_range">
18069             </td>
18070
18071             <td class="entry_hal_version">
18072               <p>3.<wbr/>2</p>
18073             </td>
18074
18075             <td class="entry_tags">
18076               <ul class="entry_tags">
18077                   <li><a href="#tag_BC">BC</a></li>
18078               </ul>
18079             </td>
18080
18081           </tr>
18082           <tr class="entries_header">
18083             <th class="th_details" colspan="6">Details</th>
18084           </tr>
18085           <tr class="entry_cont">
18086             <td class="entry_details" colspan="6">
18087               <p>This control can be used to implement digital zoom.<wbr/></p>
18088 <p>The crop region coordinate system is based off
18089 <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
18090 top-left corner of the sensor active array.<wbr/></p>
18091 <p>Output streams use this rectangle to produce their output,<wbr/>
18092 cropping to a smaller region if necessary to maintain the
18093 stream's aspect ratio,<wbr/> then scaling the sensor input to
18094 match the output's configured resolution.<wbr/></p>
18095 <p>The crop region is applied after the RAW to other color
18096 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18097 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18098 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18099 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18100 be done to maximize the final pixel area of the stream.<wbr/></p>
18101 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18102 ratio,<wbr/> then 4:3 streams will use the exact crop
18103 region.<wbr/> 16:9 streams will further crop vertically
18104 (letterbox).<wbr/></p>
18105 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18106 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18107 streams will match exactly.<wbr/> These additional crops will
18108 be centered within the crop region.<wbr/></p>
18109 <p>The width and height of the crop region cannot
18110 be set to be smaller than
18111 <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
18112 <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>
18113 <p>The camera device may adjust the crop region to account
18114 for rounding and other hardware requirements; the final
18115 crop region used will be included in the output capture
18116 result.<wbr/></p>
18117             </td>
18118           </tr>
18119
18120           <tr class="entries_header">
18121             <th class="th_details" colspan="6">HAL Implementation Details</th>
18122           </tr>
18123           <tr class="entry_cont">
18124             <td class="entry_details" colspan="6">
18125               <p>The output streams must maintain square pixels at all
18126 times,<wbr/> no matter what the relative aspect ratios of the
18127 crop region and the stream are.<wbr/>  Negative values for
18128 corner are allowed for raw output if full pixel array is
18129 larger than active pixel array.<wbr/> Width and height may be
18130 rounded to nearest larger supportable width,<wbr/> especially
18131 for raw output,<wbr/> where only a few fixed scales may be
18132 possible.<wbr/></p>
18133 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18134 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18135 <ul>
18136 <li>
18137 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18138 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18139 <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>
18140 <ol>
18141 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18142 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18143 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18144 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18145 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18146 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18147 <li>Scale the width and height of requested cropRegion with scaling factor of
18148 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
18149 respectively.<wbr/>
18150 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18151 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18152 follow the general cropping rule for this new cropRegion and effective active
18153 array size.<wbr/></li>
18154 </ol>
18155 </li>
18156 <li>
18157 <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/>
18158 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18159 The reported cropRegion may be slightly different with the requested cropRegion since
18160 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18161 hardware limitations.<wbr/></p>
18162 </li>
18163 </ul>
18164 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18165             </td>
18166           </tr>
18167
18168           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18169            <!-- end of entry -->
18170         
18171         
18172
18173       <!-- end of kind -->
18174       </tbody>
18175       <tr><td colspan="7" class="kind">static</td></tr>
18176
18177       <thead class="entries_header">
18178         <tr>
18179           <th class="th_name">Property Name</th>
18180           <th class="th_type">Type</th>
18181           <th class="th_description">Description</th>
18182           <th class="th_units">Units</th>
18183           <th class="th_range">Range</th>
18184           <th class="th_hal_version">Initial HIDL HAL version</th>
18185           <th class="th_tags">Tags</th>
18186         </tr>
18187       </thead>
18188
18189       <tbody>
18190
18191         
18192
18193         
18194
18195         
18196
18197         
18198
18199                 
18200           <tr class="entry" id="static_android.scaler.availableFormats">
18201             <td class="entry_name
18202                 entry_name_deprecated
18203              " rowspan="5">
18204               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18205             </td>
18206             <td class="entry_type">
18207                 <span class="entry_type_name entry_type_name_enum">int32</span>
18208                 <span class="entry_type_container">x</span>
18209
18210                 <span class="entry_type_array">
18211                   n
18212                 </span>
18213               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18214
18215
18216
18217               <span class="entry_type_deprecated">[deprecated] </span>
18218
18219
18220                 <ul class="entry_type_enum">
18221                   <li>
18222                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18223                     <span class="entry_type_enum_optional">[optional]</span>
18224                     <span class="entry_type_enum_value">0x20</span>
18225                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18226 buffers with 16-bit pixels.<wbr/></p>
18227 <p>Buffers of this format are typically expected to have a
18228 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18229 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18230 CFAs that are not representable by a format in
18231 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18232 use this format.<wbr/></p>
18233 <p>Buffers of this format will also follow the constraints given for
18234 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18235 <p>This format is intended to give users access to the full contents
18236 of the buffers coming directly from the image sensor prior to any
18237 cropping or scaling operations,<wbr/> and all coordinate systems for
18238 metadata used for this format are relative to the size of the
18239 active region of the image sensor before any geometric distortion
18240 correction has been applied (i.<wbr/>e.<wbr/>
18241 <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
18242 dimensions for this format are limited to the full dimensions of
18243 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
18244 <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
18245 only supported output size).<wbr/></p>
18246 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18247 the full set of performance guarantees.<wbr/></p></span>
18248                   </li>
18249                   <li>
18250                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18251                     <span class="entry_type_enum_optional">[optional]</span>
18252                     <span class="entry_type_enum_value">0x24</span>
18253                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18254 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18255 as referred in public API) is a format for raw image buffers
18256 coming from an image sensor.<wbr/></p>
18257 <p>The actual structure of buffers of this format is
18258 platform-specific,<wbr/> but must follow several constraints:</p>
18259 <ol>
18260 <li>No image post-processing operations may have been applied to
18261 buffers of this type.<wbr/> These buffers contain raw image data coming
18262 directly from the image sensor.<wbr/></li>
18263 <li>If a buffer of this format is passed to the camera device for
18264 reprocessing,<wbr/> the resulting images will be identical to the images
18265 produced if the buffer had come directly from the sensor and was
18266 processed with the same settings.<wbr/></li>
18267 </ol>
18268 <p>The intended use for this format is to allow access to the native
18269 raw format buffers coming directly from the camera sensor without
18270 any additional conversions or decrease in framerate.<wbr/></p>
18271 <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
18272 performance guarantees.<wbr/></p></span>
18273                   </li>
18274                   <li>
18275                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
18276                     <span class="entry_type_enum_optional">[optional]</span>
18277                     <span class="entry_type_enum_value">0x32315659</span>
18278                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18279                   </li>
18280                   <li>
18281                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18282                     <span class="entry_type_enum_optional">[optional]</span>
18283                     <span class="entry_type_enum_value">0x11</span>
18284                     <span class="entry_type_enum_notes"><p>NV21</p></span>
18285                   </li>
18286                   <li>
18287                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18288                     <span class="entry_type_enum_value">0x22</span>
18289                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18290                   </li>
18291                   <li>
18292                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18293                     <span class="entry_type_enum_value">0x23</span>
18294                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18295                   </li>
18296                   <li>
18297                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
18298                     <span class="entry_type_enum_value">0x21</span>
18299                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18300                   </li>
18301                 </ul>
18302
18303             </td> <!-- entry_type -->
18304
18305             <td class="entry_description">
18306               <p>The list of image formats that are supported by this
18307 camera device for output streams.<wbr/></p>
18308             </td>
18309
18310             <td class="entry_units">
18311             </td>
18312
18313             <td class="entry_range">
18314               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18315             </td>
18316
18317             <td class="entry_hal_version">
18318               <p>3.<wbr/>2</p>
18319             </td>
18320
18321             <td class="entry_tags">
18322               <ul class="entry_tags">
18323                   <li><a href="#tag_BC">BC</a></li>
18324               </ul>
18325             </td>
18326
18327           </tr>
18328           <tr class="entries_header">
18329             <th class="th_details" colspan="6">Details</th>
18330           </tr>
18331           <tr class="entry_cont">
18332             <td class="entry_details" colspan="6">
18333               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18334 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18335             </td>
18336           </tr>
18337
18338           <tr class="entries_header">
18339             <th class="th_details" colspan="6">HAL Implementation Details</th>
18340           </tr>
18341           <tr class="entry_cont">
18342             <td class="entry_details" colspan="6">
18343               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18344 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18345 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18346 gralloc module will select a format based on the usage flags provided
18347 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18348 usually used by preview and recording streams,<wbr/> where the application doesn't
18349 need access the image data.<wbr/></p>
18350 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18351 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18352 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18353 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18354 recommended that any information used by the camera device when
18355 processing images is fully expressed by the result metadata
18356 for that image buffer.<wbr/></p>
18357             </td>
18358           </tr>
18359
18360           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18361            <!-- end of entry -->
18362         
18363                 
18364           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18365             <td class="entry_name
18366                 entry_name_deprecated
18367              " rowspan="3">
18368               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18369             </td>
18370             <td class="entry_type">
18371                 <span class="entry_type_name">int64</span>
18372                 <span class="entry_type_container">x</span>
18373
18374                 <span class="entry_type_array">
18375                   n
18376                 </span>
18377               <span class="entry_type_visibility"> [hidden]</span>
18378
18379
18380
18381               <span class="entry_type_deprecated">[deprecated] </span>
18382
18383
18384
18385             </td> <!-- entry_type -->
18386
18387             <td class="entry_description">
18388               <p>The minimum frame duration that is supported
18389 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18390             </td>
18391
18392             <td class="entry_units">
18393               Nanoseconds
18394             </td>
18395
18396             <td class="entry_range">
18397               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18398               <p>TODO: Remove property.<wbr/></p>
18399             </td>
18400
18401             <td class="entry_hal_version">
18402               <p>3.<wbr/>2</p>
18403             </td>
18404
18405             <td class="entry_tags">
18406               <ul class="entry_tags">
18407                   <li><a href="#tag_BC">BC</a></li>
18408               </ul>
18409             </td>
18410
18411           </tr>
18412           <tr class="entries_header">
18413             <th class="th_details" colspan="6">Details</th>
18414           </tr>
18415           <tr class="entry_cont">
18416             <td class="entry_details" colspan="6">
18417               <p>This corresponds to the minimum steady-state frame duration when only
18418 that JPEG stream is active and captured in a burst,<wbr/> with all
18419 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18420 <p>When multiple streams are configured,<wbr/> the minimum
18421 frame duration will be &gt;= max(individual stream min
18422 durations)</p>
18423             </td>
18424           </tr>
18425
18426
18427           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18428            <!-- end of entry -->
18429         
18430                 
18431           <tr class="entry" id="static_android.scaler.availableJpegSizes">
18432             <td class="entry_name
18433                 entry_name_deprecated
18434              " rowspan="5">
18435               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18436             </td>
18437             <td class="entry_type">
18438                 <span class="entry_type_name">int32</span>
18439                 <span class="entry_type_container">x</span>
18440
18441                 <span class="entry_type_array">
18442                   n x 2
18443                 </span>
18444               <span class="entry_type_visibility"> [hidden as size]</span>
18445
18446
18447
18448               <span class="entry_type_deprecated">[deprecated] </span>
18449
18450
18451
18452             </td> <!-- entry_type -->
18453
18454             <td class="entry_description">
18455               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18456             </td>
18457
18458             <td class="entry_units">
18459             </td>
18460
18461             <td class="entry_range">
18462               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18463               <p>TODO: Remove property.<wbr/></p>
18464             </td>
18465
18466             <td class="entry_hal_version">
18467               <p>3.<wbr/>2</p>
18468             </td>
18469
18470             <td class="entry_tags">
18471               <ul class="entry_tags">
18472                   <li><a href="#tag_BC">BC</a></li>
18473               </ul>
18474             </td>
18475
18476           </tr>
18477           <tr class="entries_header">
18478             <th class="th_details" colspan="6">Details</th>
18479           </tr>
18480           <tr class="entry_cont">
18481             <td class="entry_details" colspan="6">
18482               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18483 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>
18484             </td>
18485           </tr>
18486
18487           <tr class="entries_header">
18488             <th class="th_details" colspan="6">HAL Implementation Details</th>
18489           </tr>
18490           <tr class="entry_cont">
18491             <td class="entry_details" colspan="6">
18492               <p>The HAL must include sensor maximum resolution
18493 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18494 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18495             </td>
18496           </tr>
18497
18498           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18499            <!-- end of entry -->
18500         
18501                 
18502           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18503             <td class="entry_name
18504              " rowspan="3">
18505               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18506             </td>
18507             <td class="entry_type">
18508                 <span class="entry_type_name">float</span>
18509
18510               <span class="entry_type_visibility"> [public]</span>
18511
18512
18513               <span class="entry_type_hwlevel">[legacy] </span>
18514
18515
18516
18517
18518             </td> <!-- entry_type -->
18519
18520             <td class="entry_description">
18521               <p>The maximum ratio between both active area width
18522 and crop region width,<wbr/> and active area height and
18523 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18524             </td>
18525
18526             <td class="entry_units">
18527               Zoom scale factor
18528             </td>
18529
18530             <td class="entry_range">
18531               <p>&gt;=1</p>
18532             </td>
18533
18534             <td class="entry_hal_version">
18535               <p>3.<wbr/>2</p>
18536             </td>
18537
18538             <td class="entry_tags">
18539               <ul class="entry_tags">
18540                   <li><a href="#tag_BC">BC</a></li>
18541               </ul>
18542             </td>
18543
18544           </tr>
18545           <tr class="entries_header">
18546             <th class="th_details" colspan="6">Details</th>
18547           </tr>
18548           <tr class="entry_cont">
18549             <td class="entry_details" colspan="6">
18550               <p>This represents the maximum amount of zooming possible by
18551 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18552 window size.<wbr/></p>
18553 <p>Crop regions that have a width or height that is smaller
18554 than this ratio allows will be rounded up to the minimum
18555 allowed size by the camera device.<wbr/></p>
18556             </td>
18557           </tr>
18558
18559
18560           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18561            <!-- end of entry -->
18562         
18563                 
18564           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18565             <td class="entry_name
18566                 entry_name_deprecated
18567              " rowspan="3">
18568               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18569             </td>
18570             <td class="entry_type">
18571                 <span class="entry_type_name">int64</span>
18572                 <span class="entry_type_container">x</span>
18573
18574                 <span class="entry_type_array">
18575                   n
18576                 </span>
18577               <span class="entry_type_visibility"> [hidden]</span>
18578
18579
18580
18581               <span class="entry_type_deprecated">[deprecated] </span>
18582
18583
18584
18585             </td> <!-- entry_type -->
18586
18587             <td class="entry_description">
18588               <p>For each available processed output size (defined in
18589 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18590 minimum supportable frame duration for that size.<wbr/></p>
18591             </td>
18592
18593             <td class="entry_units">
18594               Nanoseconds
18595             </td>
18596
18597             <td class="entry_range">
18598               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18599             </td>
18600
18601             <td class="entry_hal_version">
18602               <p>3.<wbr/>2</p>
18603             </td>
18604
18605             <td class="entry_tags">
18606               <ul class="entry_tags">
18607                   <li><a href="#tag_BC">BC</a></li>
18608               </ul>
18609             </td>
18610
18611           </tr>
18612           <tr class="entries_header">
18613             <th class="th_details" colspan="6">Details</th>
18614           </tr>
18615           <tr class="entry_cont">
18616             <td class="entry_details" colspan="6">
18617               <p>This should correspond to the frame duration when only that processed
18618 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18619 set to FAST.<wbr/></p>
18620 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18621 be &gt;= max(individual stream min durations).<wbr/></p>
18622             </td>
18623           </tr>
18624
18625
18626           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18627            <!-- end of entry -->
18628         
18629                 
18630           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18631             <td class="entry_name
18632                 entry_name_deprecated
18633              " rowspan="5">
18634               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18635             </td>
18636             <td class="entry_type">
18637                 <span class="entry_type_name">int32</span>
18638                 <span class="entry_type_container">x</span>
18639
18640                 <span class="entry_type_array">
18641                   n x 2
18642                 </span>
18643               <span class="entry_type_visibility"> [hidden as size]</span>
18644
18645
18646
18647               <span class="entry_type_deprecated">[deprecated] </span>
18648
18649
18650
18651             </td> <!-- entry_type -->
18652
18653             <td class="entry_description">
18654               <p>The resolutions available for use with
18655 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18656 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18657 encoders.<wbr/></p>
18658             </td>
18659
18660             <td class="entry_units">
18661             </td>
18662
18663             <td class="entry_range">
18664               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18665             </td>
18666
18667             <td class="entry_hal_version">
18668               <p>3.<wbr/>2</p>
18669             </td>
18670
18671             <td class="entry_tags">
18672               <ul class="entry_tags">
18673                   <li><a href="#tag_BC">BC</a></li>
18674               </ul>
18675             </td>
18676
18677           </tr>
18678           <tr class="entries_header">
18679             <th class="th_details" colspan="6">Details</th>
18680           </tr>
18681           <tr class="entry_cont">
18682             <td class="entry_details" colspan="6">
18683               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18684 <p>For a given use case,<wbr/> the actual maximum supported resolution
18685 may be lower than what is listed here,<wbr/> depending on the destination
18686 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18687 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18688 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18689 can provide.<wbr/></p>
18690 <p>Please reference the documentation for the image data destination to
18691 check if it limits the maximum size for image data.<wbr/></p>
18692             </td>
18693           </tr>
18694
18695           <tr class="entries_header">
18696             <th class="th_details" colspan="6">HAL Implementation Details</th>
18697           </tr>
18698           <tr class="entry_cont">
18699             <td class="entry_details" colspan="6">
18700               <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/>
18701 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>
18702 and each below resolution if it is smaller than or equal to the sensor
18703 maximum resolution (if they are not listed in JPEG sizes already):</p>
18704 <ul>
18705 <li>240p (320 x 240)</li>
18706 <li>480p (640 x 480)</li>
18707 <li>720p (1280 x 720)</li>
18708 <li>1080p (1920 x 1080)</li>
18709 </ul>
18710 <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/>
18711 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18712             </td>
18713           </tr>
18714
18715           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18716            <!-- end of entry -->
18717         
18718                 
18719           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18720             <td class="entry_name
18721                 entry_name_deprecated
18722              " rowspan="3">
18723               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18724             </td>
18725             <td class="entry_type">
18726                 <span class="entry_type_name">int64</span>
18727                 <span class="entry_type_container">x</span>
18728
18729                 <span class="entry_type_array">
18730                   n
18731                 </span>
18732               <span class="entry_type_visibility"> [system]</span>
18733
18734
18735
18736               <span class="entry_type_deprecated">[deprecated] </span>
18737
18738
18739
18740             </td> <!-- entry_type -->
18741
18742             <td class="entry_description">
18743               <p>For each available raw output size (defined in
18744 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18745 supportable frame duration for that size.<wbr/></p>
18746             </td>
18747
18748             <td class="entry_units">
18749               Nanoseconds
18750             </td>
18751
18752             <td class="entry_range">
18753               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18754             </td>
18755
18756             <td class="entry_hal_version">
18757               <p>3.<wbr/>2</p>
18758             </td>
18759
18760             <td class="entry_tags">
18761               <ul class="entry_tags">
18762                   <li><a href="#tag_BC">BC</a></li>
18763               </ul>
18764             </td>
18765
18766           </tr>
18767           <tr class="entries_header">
18768             <th class="th_details" colspan="6">Details</th>
18769           </tr>
18770           <tr class="entry_cont">
18771             <td class="entry_details" colspan="6">
18772               <p>Should correspond to the frame duration when only the raw stream is
18773 active.<wbr/></p>
18774 <p>When multiple streams are configured,<wbr/> the minimum
18775 frame duration will be &gt;= max(individual stream min
18776 durations)</p>
18777             </td>
18778           </tr>
18779
18780
18781           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18782            <!-- end of entry -->
18783         
18784                 
18785           <tr class="entry" id="static_android.scaler.availableRawSizes">
18786             <td class="entry_name
18787                 entry_name_deprecated
18788              " rowspan="1">
18789               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18790             </td>
18791             <td class="entry_type">
18792                 <span class="entry_type_name">int32</span>
18793                 <span class="entry_type_container">x</span>
18794
18795                 <span class="entry_type_array">
18796                   n x 2
18797                 </span>
18798               <span class="entry_type_visibility"> [system as size]</span>
18799
18800
18801
18802               <span class="entry_type_deprecated">[deprecated] </span>
18803
18804
18805
18806             </td> <!-- entry_type -->
18807
18808             <td class="entry_description">
18809               <p>The resolutions available for use with raw
18810 sensor output streams,<wbr/> listed as width,<wbr/>
18811 height</p>
18812             </td>
18813
18814             <td class="entry_units">
18815             </td>
18816
18817             <td class="entry_range">
18818               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18819             </td>
18820
18821             <td class="entry_hal_version">
18822               <p>3.<wbr/>2</p>
18823             </td>
18824
18825             <td class="entry_tags">
18826             </td>
18827
18828           </tr>
18829
18830
18831           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18832            <!-- end of entry -->
18833         
18834                 
18835           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18836             <td class="entry_name
18837              " rowspan="5">
18838               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18839             </td>
18840             <td class="entry_type">
18841                 <span class="entry_type_name">int32</span>
18842
18843               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18844
18845
18846
18847
18848
18849
18850             </td> <!-- entry_type -->
18851
18852             <td class="entry_description">
18853               <p>The mapping of image formats that are supported by this
18854 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18855             </td>
18856
18857             <td class="entry_units">
18858             </td>
18859
18860             <td class="entry_range">
18861             </td>
18862
18863             <td class="entry_hal_version">
18864               <p>3.<wbr/>2</p>
18865             </td>
18866
18867             <td class="entry_tags">
18868               <ul class="entry_tags">
18869                   <li><a href="#tag_REPROC">REPROC</a></li>
18870               </ul>
18871             </td>
18872
18873           </tr>
18874           <tr class="entries_header">
18875             <th class="th_details" colspan="6">Details</th>
18876           </tr>
18877           <tr class="entry_cont">
18878             <td class="entry_details" colspan="6">
18879               <p>All camera devices with at least 1
18880 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18881 available input format.<wbr/></p>
18882 <p>The camera device will support the following map of formats,<wbr/>
18883 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18884 <table>
18885 <thead>
18886 <tr>
18887 <th align="left">Input Format</th>
18888 <th align="left">Output Format</th>
18889 <th align="left">Capability</th>
18890 </tr>
18891 </thead>
18892 <tbody>
18893 <tr>
18894 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18895 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18896 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18897 </tr>
18898 <tr>
18899 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18900 <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>
18901 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18902 </tr>
18903 <tr>
18904 <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>
18905 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18906 <td align="left">YUV_<wbr/>REPROCESSING</td>
18907 </tr>
18908 <tr>
18909 <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>
18910 <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>
18911 <td align="left">YUV_<wbr/>REPROCESSING</td>
18912 </tr>
18913 </tbody>
18914 </table>
18915 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18916 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18917 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18918 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18919 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>
18920 <p>Attempting to configure an input stream with output streams not
18921 listed as available in this map is not valid.<wbr/></p>
18922             </td>
18923           </tr>
18924
18925           <tr class="entries_header">
18926             <th class="th_details" colspan="6">HAL Implementation Details</th>
18927           </tr>
18928           <tr class="entry_cont">
18929             <td class="entry_details" colspan="6">
18930               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18931 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18932 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18933 the actual format by using the gralloc usage flags.<wbr/>
18934 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18935 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18936 See camera3.<wbr/>h for more details.<wbr/></p>
18937 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18938 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18939 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18940 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18941 <p>A code sample to read/<wbr/>write this encoding (with a device that
18942 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18943 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18944 <pre><code>//<wbr/> reading
18945 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18946 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18947     int32_<wbr/>t format = contents[i++];
18948     int32_<wbr/>t length = contents[i++];
18949     int32_<wbr/>t output_<wbr/>formats[length];
18950     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18951            length * sizeof(int32_<wbr/>t));
18952     i += length;
18953 }
18954
18955 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18956 int32_<wbr/>t[] contents = {
18957   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18958   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18959 };
18960 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18961       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18962 </code></pre>
18963 <p>If the HAL claims to support any of the capabilities listed in the
18964 above details,<wbr/> then it must also support all the input-output
18965 combinations listed for that capability.<wbr/> It can optionally support
18966 additional formats if it so chooses.<wbr/></p>
18967             </td>
18968           </tr>
18969
18970           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18971            <!-- end of entry -->
18972         
18973                 
18974           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18975             <td class="entry_name
18976              " rowspan="5">
18977               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18978             </td>
18979             <td class="entry_type">
18980                 <span class="entry_type_name entry_type_name_enum">int32</span>
18981                 <span class="entry_type_container">x</span>
18982
18983                 <span class="entry_type_array">
18984                   n x 4
18985                 </span>
18986               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18987
18988
18989               <span class="entry_type_hwlevel">[legacy] </span>
18990
18991
18992
18993                 <ul class="entry_type_enum">
18994                   <li>
18995                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18996                   </li>
18997                   <li>
18998                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18999                   </li>
19000                 </ul>
19001
19002             </td> <!-- entry_type -->
19003
19004             <td class="entry_description">
19005               <p>The available stream configurations that this
19006 camera device supports
19007 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
19008             </td>
19009
19010             <td class="entry_units">
19011             </td>
19012
19013             <td class="entry_range">
19014             </td>
19015
19016             <td class="entry_hal_version">
19017               <p>3.<wbr/>2</p>
19018             </td>
19019
19020             <td class="entry_tags">
19021             </td>
19022
19023           </tr>
19024           <tr class="entries_header">
19025             <th class="th_details" colspan="6">Details</th>
19026           </tr>
19027           <tr class="entry_cont">
19028             <td class="entry_details" colspan="6">
19029               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
19030 tuples.<wbr/></p>
19031 <p>For a given use case,<wbr/> the actual maximum supported resolution
19032 may be lower than what is listed here,<wbr/> depending on the destination
19033 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19034 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19035 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19036 can provide.<wbr/></p>
19037 <p>Please reference the documentation for the image data destination to
19038 check if it limits the maximum size for image data.<wbr/></p>
19039 <p>Not all output formats may be supported in a configuration with
19040 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19041 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19042 <p>The following table describes the minimum required output stream
19043 configurations based on the hardware level
19044 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19045 <table>
19046 <thead>
19047 <tr>
19048 <th align="center">Format</th>
19049 <th align="center">Size</th>
19050 <th align="center">Hardware Level</th>
19051 <th align="center">Notes</th>
19052 </tr>
19053 </thead>
19054 <tbody>
19055 <tr>
19056 <td align="center">JPEG</td>
19057 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19058 <td align="center">Any</td>
19059 <td align="center"></td>
19060 </tr>
19061 <tr>
19062 <td align="center">JPEG</td>
19063 <td align="center">1920x1080 (1080p)</td>
19064 <td align="center">Any</td>
19065 <td align="center">if 1080p &lt;= activeArraySize</td>
19066 </tr>
19067 <tr>
19068 <td align="center">JPEG</td>
19069 <td align="center">1280x720 (720)</td>
19070 <td align="center">Any</td>
19071 <td align="center">if 720p &lt;= activeArraySize</td>
19072 </tr>
19073 <tr>
19074 <td align="center">JPEG</td>
19075 <td align="center">640x480 (480p)</td>
19076 <td align="center">Any</td>
19077 <td align="center">if 480p &lt;= activeArraySize</td>
19078 </tr>
19079 <tr>
19080 <td align="center">JPEG</td>
19081 <td align="center">320x240 (240p)</td>
19082 <td align="center">Any</td>
19083 <td align="center">if 240p &lt;= activeArraySize</td>
19084 </tr>
19085 <tr>
19086 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19087 <td align="center">all output sizes available for JPEG</td>
19088 <td align="center">FULL</td>
19089 <td align="center"></td>
19090 </tr>
19091 <tr>
19092 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19093 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19094 <td align="center">LIMITED</td>
19095 <td align="center"></td>
19096 </tr>
19097 <tr>
19098 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19099 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19100 <td align="center">Any</td>
19101 <td align="center"></td>
19102 </tr>
19103 </tbody>
19104 </table>
19105 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19106 mandatory stream configurations on a per-capability basis.<wbr/></p>
19107             </td>
19108           </tr>
19109
19110           <tr class="entries_header">
19111             <th class="th_details" colspan="6">HAL Implementation Details</th>
19112           </tr>
19113           <tr class="entry_cont">
19114             <td class="entry_details" colspan="6">
19115               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19116 of sensor maximum resolution for JPEG formats (regardless of hardware
19117 level).<wbr/></p>
19118 <p>(The following is a rewording of the above required table):</p>
19119 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19120 <ul>
19121 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19122 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19123 (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/>
19124 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19125 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19126 the dimensions being a multiple of 16.<wbr/></li>
19127 </ul>
19128 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19129 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19130 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19131 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19132 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19133 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19134 3264x2448.<wbr/></p>
19135 <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/>
19136 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19137 here as output streams.<wbr/></p>
19138 <p>It must also include each below resolution if it is smaller than or
19139 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19140 formats),<wbr/> as output streams:</p>
19141 <ul>
19142 <li>240p (320 x 240)</li>
19143 <li>480p (640 x 480)</li>
19144 <li>720p (1280 x 720)</li>
19145 <li>1080p (1920 x 1080)</li>
19146 </ul>
19147 <p>For LIMITED capability devices
19148 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19149 the HAL only has to list up to the maximum video size
19150 supported by the device.<wbr/></p>
19151 <p>Regardless of hardware level,<wbr/> every output resolution available for
19152 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19153 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19154 <ul>
19155 <li>availableFormats</li>
19156 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19157 </ul>
19158             </td>
19159           </tr>
19160
19161           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19162            <!-- end of entry -->
19163         
19164                 
19165           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19166             <td class="entry_name
19167              " rowspan="3">
19168               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19169             </td>
19170             <td class="entry_type">
19171                 <span class="entry_type_name">int64</span>
19172                 <span class="entry_type_container">x</span>
19173
19174                 <span class="entry_type_array">
19175                   4 x n
19176                 </span>
19177               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19178
19179
19180               <span class="entry_type_hwlevel">[legacy] </span>
19181
19182
19183
19184
19185             </td> <!-- entry_type -->
19186
19187             <td class="entry_description">
19188               <p>This lists the minimum frame duration for each
19189 format/<wbr/>size combination.<wbr/></p>
19190             </td>
19191
19192             <td class="entry_units">
19193               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19194             </td>
19195
19196             <td class="entry_range">
19197             </td>
19198
19199             <td class="entry_hal_version">
19200               <p>3.<wbr/>2</p>
19201             </td>
19202
19203             <td class="entry_tags">
19204               <ul class="entry_tags">
19205                   <li><a href="#tag_V1">V1</a></li>
19206               </ul>
19207             </td>
19208
19209           </tr>
19210           <tr class="entries_header">
19211             <th class="th_details" colspan="6">Details</th>
19212           </tr>
19213           <tr class="entry_cont">
19214             <td class="entry_details" colspan="6">
19215               <p>This should correspond to the frame duration when only that
19216 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19217 set to either OFF or FAST.<wbr/></p>
19218 <p>When multiple streams are used in a request,<wbr/> the minimum frame
19219 duration will be max(individual stream min durations).<wbr/></p>
19220 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19221 is the same regardless of whether the stream is input or output.<wbr/></p>
19222 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19223 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19224 calculating the max frame rate.<wbr/></p>
19225             </td>
19226           </tr>
19227
19228
19229           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19230            <!-- end of entry -->
19231         
19232                 
19233           <tr class="entry" id="static_android.scaler.availableStallDurations">
19234             <td class="entry_name
19235              " rowspan="5">
19236               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19237             </td>
19238             <td class="entry_type">
19239                 <span class="entry_type_name">int64</span>
19240                 <span class="entry_type_container">x</span>
19241
19242                 <span class="entry_type_array">
19243                   4 x n
19244                 </span>
19245               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19246
19247
19248               <span class="entry_type_hwlevel">[legacy] </span>
19249
19250
19251
19252
19253             </td> <!-- entry_type -->
19254
19255             <td class="entry_description">
19256               <p>This lists the maximum stall duration for each
19257 output format/<wbr/>size combination.<wbr/></p>
19258             </td>
19259
19260             <td class="entry_units">
19261               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19262             </td>
19263
19264             <td class="entry_range">
19265             </td>
19266
19267             <td class="entry_hal_version">
19268               <p>3.<wbr/>2</p>
19269             </td>
19270
19271             <td class="entry_tags">
19272               <ul class="entry_tags">
19273                   <li><a href="#tag_V1">V1</a></li>
19274               </ul>
19275             </td>
19276
19277           </tr>
19278           <tr class="entries_header">
19279             <th class="th_details" colspan="6">Details</th>
19280           </tr>
19281           <tr class="entry_cont">
19282             <td class="entry_details" colspan="6">
19283               <p>A stall duration is how much extra time would get added
19284 to the normal minimum frame duration for a repeating request
19285 that has streams with non-zero stall.<wbr/></p>
19286 <p>For example,<wbr/> consider JPEG captures which have the following
19287 characteristics:</p>
19288 <ul>
19289 <li>JPEG streams act like processed YUV streams in requests for which
19290 they are not included; in requests in which they are directly
19291 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19292 JPEG stream requires the underlying YUV data to always be ready for
19293 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19294 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19295 <li>The JPEG processor can run concurrently to the rest of the camera
19296 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19297 </ul>
19298 <p>In other words,<wbr/> using a repeating YUV request would result
19299 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19300 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19301 at 30 FPS (as long as we wait for the previous JPEG to return each
19302 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19303 the frame rate will drop from 30 FPS.<wbr/></p>
19304 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19305 stream will <em>not</em> cause a frame rate drop unless there are still
19306 outstanding buffers for that stream from previous requests.<wbr/></p>
19307 <p>Submitting a repeating request with streams (call this <code>S</code>)
19308 is the same as setting the minimum frame duration from
19309 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19310 the maximum stall duration for <code>S</code>.<wbr/></p>
19311 <p>If interleaving requests with and without a stall duration,<wbr/>
19312 a request will stall by the maximum of the remaining times
19313 for each can-stall stream with outstanding buffers.<wbr/></p>
19314 <p>This means that a stalling request will not have an exposure start
19315 until the stall has completed.<wbr/></p>
19316 <p>This should correspond to the stall duration when only that stream is
19317 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19318 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19319 effectively results in an indeterminate stall duration for all
19320 streams in a request (the regular stall calculation rules are
19321 ignored).<wbr/></p>
19322 <p>The following formats may always have a stall duration:</p>
19323 <ul>
19324 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19325 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19326 </ul>
19327 <p>The following formats will never have a stall duration:</p>
19328 <ul>
19329 <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>
19330 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19331 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19332 </ul>
19333 <p>All other formats may or may not have an allowed stall duration on
19334 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19335 for more details.<wbr/></p>
19336 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19337 calculating the max frame rate (absent stalls).<wbr/></p>
19338             </td>
19339           </tr>
19340
19341           <tr class="entries_header">
19342             <th class="th_details" colspan="6">HAL Implementation Details</th>
19343           </tr>
19344           <tr class="entry_cont">
19345             <td class="entry_details" colspan="6">
19346               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19347 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19348 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19349             </td>
19350           </tr>
19351
19352           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19353            <!-- end of entry -->
19354         
19355                 
19356           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19357             <td class="entry_name
19358              " rowspan="5">
19359               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19360             </td>
19361             <td class="entry_type">
19362                 <span class="entry_type_name">int32</span>
19363
19364               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19365
19366               <span class="entry_type_synthetic">[synthetic] </span>
19367
19368               <span class="entry_type_hwlevel">[legacy] </span>
19369
19370
19371
19372
19373             </td> <!-- entry_type -->
19374
19375             <td class="entry_description">
19376               <p>The available stream configurations that this
19377 camera device supports; also includes the minimum frame durations
19378 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19379             </td>
19380
19381             <td class="entry_units">
19382             </td>
19383
19384             <td class="entry_range">
19385             </td>
19386
19387             <td class="entry_hal_version">
19388               <p>3.<wbr/>2</p>
19389             </td>
19390
19391             <td class="entry_tags">
19392             </td>
19393
19394           </tr>
19395           <tr class="entries_header">
19396             <th class="th_details" colspan="6">Details</th>
19397           </tr>
19398           <tr class="entry_cont">
19399             <td class="entry_details" colspan="6">
19400               <p>All camera devices will support sensor maximum resolution (defined by
19401 <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>
19402 <p>For a given use case,<wbr/> the actual maximum supported resolution
19403 may be lower than what is listed here,<wbr/> depending on the destination
19404 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19405 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19406 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19407 can provide.<wbr/></p>
19408 <p>Please reference the documentation for the image data destination to
19409 check if it limits the maximum size for image data.<wbr/></p>
19410 <p>The following table describes the minimum required output stream
19411 configurations based on the hardware level
19412 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19413 <table>
19414 <thead>
19415 <tr>
19416 <th align="center">Format</th>
19417 <th align="center">Size</th>
19418 <th align="center">Hardware Level</th>
19419 <th align="center">Notes</th>
19420 </tr>
19421 </thead>
19422 <tbody>
19423 <tr>
19424 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19425 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19426 <td align="center">Any</td>
19427 <td align="center"></td>
19428 </tr>
19429 <tr>
19430 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19431 <td align="center">1920x1080 (1080p)</td>
19432 <td align="center">Any</td>
19433 <td align="center">if 1080p &lt;= activeArraySize</td>
19434 </tr>
19435 <tr>
19436 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19437 <td align="center">1280x720 (720p)</td>
19438 <td align="center">Any</td>
19439 <td align="center">if 720p &lt;= activeArraySize</td>
19440 </tr>
19441 <tr>
19442 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19443 <td align="center">640x480 (480p)</td>
19444 <td align="center">Any</td>
19445 <td align="center">if 480p &lt;= activeArraySize</td>
19446 </tr>
19447 <tr>
19448 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19449 <td align="center">320x240 (240p)</td>
19450 <td align="center">Any</td>
19451 <td align="center">if 240p &lt;= activeArraySize</td>
19452 </tr>
19453 <tr>
19454 <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>
19455 <td align="center">all output sizes available for JPEG</td>
19456 <td align="center">FULL</td>
19457 <td align="center"></td>
19458 </tr>
19459 <tr>
19460 <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>
19461 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19462 <td align="center">LIMITED</td>
19463 <td align="center"></td>
19464 </tr>
19465 <tr>
19466 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19467 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19468 <td align="center">Any</td>
19469 <td align="center"></td>
19470 </tr>
19471 </tbody>
19472 </table>
19473 <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
19474 stream configurations on a per-capability basis.<wbr/></p>
19475 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19476 <ul>
19477 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19478 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19479 (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/>
19480 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19481 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19482 the dimensions being a multiple of 16.<wbr/>
19483 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19484 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19485 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19486 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19487 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19488 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19489 3264x2448.<wbr/></li>
19490 </ul>
19491             </td>
19492           </tr>
19493
19494           <tr class="entries_header">
19495             <th class="th_details" colspan="6">HAL Implementation Details</th>
19496           </tr>
19497           <tr class="entry_cont">
19498             <td class="entry_details" colspan="6">
19499               <p>Do not set this property directly
19500 (it is synthetic and will not be available at the HAL layer);
19501 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19502 <p>Not all output formats may be supported in a configuration with
19503 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19504 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19505 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19506 of sensor maximum resolution for JPEG formats (regardless of hardware
19507 level).<wbr/></p>
19508 <p>(The following is a rewording of the above required table):</p>
19509 <p>The HAL must include sensor maximum resolution (defined by
19510 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19511 <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/>
19512 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19513 here as output streams.<wbr/></p>
19514 <p>It must also include each below resolution if it is smaller than or
19515 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19516 formats),<wbr/> as output streams:</p>
19517 <ul>
19518 <li>240p (320 x 240)</li>
19519 <li>480p (640 x 480)</li>
19520 <li>720p (1280 x 720)</li>
19521 <li>1080p (1920 x 1080)</li>
19522 </ul>
19523 <p>For LIMITED capability devices
19524 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19525 the HAL only has to list up to the maximum video size
19526 supported by the device.<wbr/></p>
19527 <p>Regardless of hardware level,<wbr/> every output resolution available for
19528 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19529 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19530 <ul>
19531 <li>availableFormats</li>
19532 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19533 </ul>
19534             </td>
19535           </tr>
19536
19537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19538            <!-- end of entry -->
19539         
19540                 
19541           <tr class="entry" id="static_android.scaler.croppingType">
19542             <td class="entry_name
19543              " rowspan="3">
19544               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19545             </td>
19546             <td class="entry_type">
19547                 <span class="entry_type_name entry_type_name_enum">byte</span>
19548
19549               <span class="entry_type_visibility"> [public]</span>
19550
19551
19552               <span class="entry_type_hwlevel">[legacy] </span>
19553
19554
19555
19556                 <ul class="entry_type_enum">
19557                   <li>
19558                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19559                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19560                   </li>
19561                   <li>
19562                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19563                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19564                   </li>
19565                 </ul>
19566
19567             </td> <!-- entry_type -->
19568
19569             <td class="entry_description">
19570               <p>The crop type that this camera device supports.<wbr/></p>
19571             </td>
19572
19573             <td class="entry_units">
19574             </td>
19575
19576             <td class="entry_range">
19577             </td>
19578
19579             <td class="entry_hal_version">
19580               <p>3.<wbr/>2</p>
19581             </td>
19582
19583             <td class="entry_tags">
19584             </td>
19585
19586           </tr>
19587           <tr class="entries_header">
19588             <th class="th_details" colspan="6">Details</th>
19589           </tr>
19590           <tr class="entry_cont">
19591             <td class="entry_details" colspan="6">
19592               <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
19593 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19594 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>)
19595 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19596 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19597 <p>Camera devices that support FREEFORM cropping will support any crop region that
19598 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19599 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>
19600 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19601             </td>
19602           </tr>
19603
19604
19605           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19606            <!-- end of entry -->
19607         
19608         
19609
19610       <!-- end of kind -->
19611       </tbody>
19612       <tr><td colspan="7" class="kind">dynamic</td></tr>
19613
19614       <thead class="entries_header">
19615         <tr>
19616           <th class="th_name">Property Name</th>
19617           <th class="th_type">Type</th>
19618           <th class="th_description">Description</th>
19619           <th class="th_units">Units</th>
19620           <th class="th_range">Range</th>
19621           <th class="th_hal_version">Initial HIDL HAL version</th>
19622           <th class="th_tags">Tags</th>
19623         </tr>
19624       </thead>
19625
19626       <tbody>
19627
19628         
19629
19630         
19631
19632         
19633
19634         
19635
19636                 
19637           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19638             <td class="entry_name
19639              " rowspan="5">
19640               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19641             </td>
19642             <td class="entry_type">
19643                 <span class="entry_type_name">int32</span>
19644                 <span class="entry_type_container">x</span>
19645
19646                 <span class="entry_type_array">
19647                   4
19648                 </span>
19649               <span class="entry_type_visibility"> [public as rectangle]</span>
19650
19651
19652               <span class="entry_type_hwlevel">[legacy] </span>
19653
19654
19655
19656
19657             </td> <!-- entry_type -->
19658
19659             <td class="entry_description">
19660               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19661             </td>
19662
19663             <td class="entry_units">
19664               Pixel coordinates relative to
19665           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19666             </td>
19667
19668             <td class="entry_range">
19669             </td>
19670
19671             <td class="entry_hal_version">
19672               <p>3.<wbr/>2</p>
19673             </td>
19674
19675             <td class="entry_tags">
19676               <ul class="entry_tags">
19677                   <li><a href="#tag_BC">BC</a></li>
19678               </ul>
19679             </td>
19680
19681           </tr>
19682           <tr class="entries_header">
19683             <th class="th_details" colspan="6">Details</th>
19684           </tr>
19685           <tr class="entry_cont">
19686             <td class="entry_details" colspan="6">
19687               <p>This control can be used to implement digital zoom.<wbr/></p>
19688 <p>The crop region coordinate system is based off
19689 <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
19690 top-left corner of the sensor active array.<wbr/></p>
19691 <p>Output streams use this rectangle to produce their output,<wbr/>
19692 cropping to a smaller region if necessary to maintain the
19693 stream's aspect ratio,<wbr/> then scaling the sensor input to
19694 match the output's configured resolution.<wbr/></p>
19695 <p>The crop region is applied after the RAW to other color
19696 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19697 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19698 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19699 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19700 be done to maximize the final pixel area of the stream.<wbr/></p>
19701 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19702 ratio,<wbr/> then 4:3 streams will use the exact crop
19703 region.<wbr/> 16:9 streams will further crop vertically
19704 (letterbox).<wbr/></p>
19705 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19706 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19707 streams will match exactly.<wbr/> These additional crops will
19708 be centered within the crop region.<wbr/></p>
19709 <p>The width and height of the crop region cannot
19710 be set to be smaller than
19711 <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
19712 <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>
19713 <p>The camera device may adjust the crop region to account
19714 for rounding and other hardware requirements; the final
19715 crop region used will be included in the output capture
19716 result.<wbr/></p>
19717             </td>
19718           </tr>
19719
19720           <tr class="entries_header">
19721             <th class="th_details" colspan="6">HAL Implementation Details</th>
19722           </tr>
19723           <tr class="entry_cont">
19724             <td class="entry_details" colspan="6">
19725               <p>The output streams must maintain square pixels at all
19726 times,<wbr/> no matter what the relative aspect ratios of the
19727 crop region and the stream are.<wbr/>  Negative values for
19728 corner are allowed for raw output if full pixel array is
19729 larger than active pixel array.<wbr/> Width and height may be
19730 rounded to nearest larger supportable width,<wbr/> especially
19731 for raw output,<wbr/> where only a few fixed scales may be
19732 possible.<wbr/></p>
19733 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19734 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19735 <ul>
19736 <li>
19737 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19738 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19739 <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>
19740 <ol>
19741 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19742 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19743 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19744 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19745 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19746 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19747 <li>Scale the width and height of requested cropRegion with scaling factor of
19748 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
19749 respectively.<wbr/>
19750 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19751 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19752 follow the general cropping rule for this new cropRegion and effective active
19753 array size.<wbr/></li>
19754 </ol>
19755 </li>
19756 <li>
19757 <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/>
19758 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19759 The reported cropRegion may be slightly different with the requested cropRegion since
19760 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19761 hardware limitations.<wbr/></p>
19762 </li>
19763 </ul>
19764 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19765             </td>
19766           </tr>
19767
19768           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19769            <!-- end of entry -->
19770         
19771         
19772
19773       <!-- end of kind -->
19774       </tbody>
19775
19776   <!-- end of section -->
19777   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19778
19779
19780       <tr><td colspan="7" class="kind">controls</td></tr>
19781
19782       <thead class="entries_header">
19783         <tr>
19784           <th class="th_name">Property Name</th>
19785           <th class="th_type">Type</th>
19786           <th class="th_description">Description</th>
19787           <th class="th_units">Units</th>
19788           <th class="th_range">Range</th>
19789           <th class="th_hal_version">Initial HIDL HAL version</th>
19790           <th class="th_tags">Tags</th>
19791         </tr>
19792       </thead>
19793
19794       <tbody>
19795
19796         
19797
19798         
19799
19800         
19801
19802         
19803
19804                 
19805           <tr class="entry" id="controls_android.sensor.exposureTime">
19806             <td class="entry_name
19807              " rowspan="3">
19808               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19809             </td>
19810             <td class="entry_type">
19811                 <span class="entry_type_name">int64</span>
19812
19813               <span class="entry_type_visibility"> [public]</span>
19814
19815
19816               <span class="entry_type_hwlevel">[full] </span>
19817
19818
19819
19820
19821             </td> <!-- entry_type -->
19822
19823             <td class="entry_description">
19824               <p>Duration each pixel is exposed to
19825 light.<wbr/></p>
19826             </td>
19827
19828             <td class="entry_units">
19829               Nanoseconds
19830             </td>
19831
19832             <td class="entry_range">
19833               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19834             </td>
19835
19836             <td class="entry_hal_version">
19837               <p>3.<wbr/>2</p>
19838             </td>
19839
19840             <td class="entry_tags">
19841               <ul class="entry_tags">
19842                   <li><a href="#tag_V1">V1</a></li>
19843               </ul>
19844             </td>
19845
19846           </tr>
19847           <tr class="entries_header">
19848             <th class="th_details" colspan="6">Details</th>
19849           </tr>
19850           <tr class="entry_cont">
19851             <td class="entry_details" colspan="6">
19852               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19853 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19854 The final exposure time used will be available in the output capture result.<wbr/></p>
19855 <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
19856 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19857             </td>
19858           </tr>
19859
19860
19861           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19862            <!-- end of entry -->
19863         
19864                 
19865           <tr class="entry" id="controls_android.sensor.frameDuration">
19866             <td class="entry_name
19867              " rowspan="5">
19868               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19869             </td>
19870             <td class="entry_type">
19871                 <span class="entry_type_name">int64</span>
19872
19873               <span class="entry_type_visibility"> [public]</span>
19874
19875
19876               <span class="entry_type_hwlevel">[full] </span>
19877
19878
19879
19880
19881             </td> <!-- entry_type -->
19882
19883             <td class="entry_description">
19884               <p>Duration from start of frame exposure to
19885 start of next frame exposure.<wbr/></p>
19886             </td>
19887
19888             <td class="entry_units">
19889               Nanoseconds
19890             </td>
19891
19892             <td class="entry_range">
19893               <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/>
19894 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19895             </td>
19896
19897             <td class="entry_hal_version">
19898               <p>3.<wbr/>2</p>
19899             </td>
19900
19901             <td class="entry_tags">
19902               <ul class="entry_tags">
19903                   <li><a href="#tag_V1">V1</a></li>
19904               </ul>
19905             </td>
19906
19907           </tr>
19908           <tr class="entries_header">
19909             <th class="th_details" colspan="6">Details</th>
19910           </tr>
19911           <tr class="entry_cont">
19912             <td class="entry_details" colspan="6">
19913               <p>The maximum frame rate that can be supported by a camera subsystem is
19914 a function of many factors:</p>
19915 <ul>
19916 <li>Requested resolutions of output image streams</li>
19917 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19918 <li>The bandwidth of the imager interface</li>
19919 <li>The bandwidth of the various ISP processing blocks</li>
19920 </ul>
19921 <p>Since these factors can vary greatly between different ISPs and
19922 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19923 restrictions with as simple a model as possible.<wbr/></p>
19924 <p>The model presented has the following characteristics:</p>
19925 <ul>
19926 <li>The image sensor is always configured to output the smallest
19927 resolution possible given the application's requested output stream
19928 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19929 as the largest requested output stream size; the camera pipeline must
19930 never digitally upsample sensor data when the crop region covers the
19931 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19932 resolutions are configured,<wbr/> the sensor can provide a higher frame
19933 rate.<wbr/></li>
19934 <li>Since any request may use any or all the currently configured
19935 output streams,<wbr/> the sensor and ISP must be configured to support
19936 scaling a single capture to all the streams at the same time.<wbr/>  This
19937 means the camera pipeline must be ready to produce the largest
19938 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19939 frame rate of a given configured stream set is governed only by the
19940 largest requested stream resolution.<wbr/></li>
19941 <li>Using more than one output stream in a request does not affect the
19942 frame duration.<wbr/></li>
19943 <li>Certain format-streams may need to do additional background processing
19944 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19945 can run concurrently to the rest of the camera pipeline,<wbr/> but
19946 cannot process more than 1 capture at a time.<wbr/></li>
19947 </ul>
19948 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19949 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19950 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19951 possible for a given stream configuration.<wbr/></p>
19952 <p>Specifically,<wbr/> the application can use the following rules to
19953 determine the minimum frame duration it can request from the camera
19954 device:</p>
19955 <ol>
19956 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19957 <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>
19958 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19959 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19960 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>
19961 </ol>
19962 <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>
19963 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19964 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19965 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19966 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19967 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19968 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19969 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19970 <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>
19971 <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
19972 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19973             </td>
19974           </tr>
19975
19976           <tr class="entries_header">
19977             <th class="th_details" colspan="6">HAL Implementation Details</th>
19978           </tr>
19979           <tr class="entry_cont">
19980             <td class="entry_details" colspan="6">
19981               <p>For more details about stalling,<wbr/> see
19982 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19983             </td>
19984           </tr>
19985
19986           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19987            <!-- end of entry -->
19988         
19989                 
19990           <tr class="entry" id="controls_android.sensor.sensitivity">
19991             <td class="entry_name
19992              " rowspan="5">
19993               android.<wbr/>sensor.<wbr/>sensitivity
19994             </td>
19995             <td class="entry_type">
19996                 <span class="entry_type_name">int32</span>
19997
19998               <span class="entry_type_visibility"> [public]</span>
19999
20000
20001               <span class="entry_type_hwlevel">[full] </span>
20002
20003
20004
20005
20006             </td> <!-- entry_type -->
20007
20008             <td class="entry_description">
20009               <p>The amount of gain applied to sensor data
20010 before processing.<wbr/></p>
20011             </td>
20012
20013             <td class="entry_units">
20014               ISO arithmetic units
20015             </td>
20016
20017             <td class="entry_range">
20018               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20019             </td>
20020
20021             <td class="entry_hal_version">
20022               <p>3.<wbr/>2</p>
20023             </td>
20024
20025             <td class="entry_tags">
20026               <ul class="entry_tags">
20027                   <li><a href="#tag_V1">V1</a></li>
20028               </ul>
20029             </td>
20030
20031           </tr>
20032           <tr class="entries_header">
20033             <th class="th_details" colspan="6">Details</th>
20034           </tr>
20035           <tr class="entry_cont">
20036             <td class="entry_details" colspan="6">
20037               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20038 as defined in ISO 12232:2006.<wbr/></p>
20039 <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
20040 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
20041 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20042 <p>If the camera device cannot apply the exact sensitivity
20043 requested,<wbr/> it will reduce the gain to the nearest supported
20044 value.<wbr/> The final sensitivity used will be available in the
20045 output capture result.<wbr/></p>
20046 <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
20047 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20048             </td>
20049           </tr>
20050
20051           <tr class="entries_header">
20052             <th class="th_details" colspan="6">HAL Implementation Details</th>
20053           </tr>
20054           <tr class="entry_cont">
20055             <td class="entry_details" colspan="6">
20056               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20057             </td>
20058           </tr>
20059
20060           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20061            <!-- end of entry -->
20062         
20063                 
20064           <tr class="entry" id="controls_android.sensor.testPatternData">
20065             <td class="entry_name
20066              " rowspan="5">
20067               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20068             </td>
20069             <td class="entry_type">
20070                 <span class="entry_type_name">int32</span>
20071                 <span class="entry_type_container">x</span>
20072
20073                 <span class="entry_type_array">
20074                   4
20075                 </span>
20076               <span class="entry_type_visibility"> [public]</span>
20077
20078
20079
20080
20081
20082
20083             </td> <!-- entry_type -->
20084
20085             <td class="entry_description">
20086               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20087 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20088             </td>
20089
20090             <td class="entry_units">
20091             </td>
20092
20093             <td class="entry_range">
20094             </td>
20095
20096             <td class="entry_hal_version">
20097               <p>3.<wbr/>2</p>
20098             </td>
20099
20100             <td class="entry_tags">
20101             </td>
20102
20103           </tr>
20104           <tr class="entries_header">
20105             <th class="th_details" colspan="6">Details</th>
20106           </tr>
20107           <tr class="entry_cont">
20108             <td class="entry_details" colspan="6">
20109               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20110 The camera device then uses the most significant X bits
20111 that correspond to how many bits are in its Bayer raw sensor
20112 output.<wbr/></p>
20113 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20114 10 most significant bits from each color channel.<wbr/></p>
20115             </td>
20116           </tr>
20117
20118           <tr class="entries_header">
20119             <th class="th_details" colspan="6">HAL Implementation Details</th>
20120           </tr>
20121           <tr class="entry_cont">
20122             <td class="entry_details" colspan="6">
20123               
20124             </td>
20125           </tr>
20126
20127           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20128            <!-- end of entry -->
20129         
20130                 
20131           <tr class="entry" id="controls_android.sensor.testPatternMode">
20132             <td class="entry_name
20133              " rowspan="5">
20134               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20135             </td>
20136             <td class="entry_type">
20137                 <span class="entry_type_name entry_type_name_enum">int32</span>
20138
20139               <span class="entry_type_visibility"> [public]</span>
20140
20141
20142
20143
20144
20145                 <ul class="entry_type_enum">
20146                   <li>
20147                     <span class="entry_type_enum_name">OFF (v3.2)</span>
20148                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20149 device returns captures from the image sensor.<wbr/></p>
20150 <p>This is the default if the key is not set.<wbr/></p></span>
20151                   </li>
20152                   <li>
20153                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20154                     <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
20155 respective color channel provided in
20156 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20157 <p>For example:</p>
20158 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20159 </code></pre>
20160 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20161 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20162 </code></pre>
20163 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20164 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20165                   </li>
20166                   <li>
20167                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20168                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20169 <p>The vertical bars (left-to-right) are as follows:</p>
20170 <ul>
20171 <li>100% white</li>
20172 <li>yellow</li>
20173 <li>cyan</li>
20174 <li>green</li>
20175 <li>magenta</li>
20176 <li>red</li>
20177 <li>blue</li>
20178 <li>black</li>
20179 </ul>
20180 <p>In general the image would look like the following:</p>
20181 <pre><code>W Y C G M R B K
20182 W Y C G M R B K
20183 W Y C G M R B K
20184 W Y C G M R B K
20185 W Y C G M R B K
20186 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20187 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20188 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20189
20190 (B = Blue,<wbr/> K = Black)
20191 </code></pre>
20192 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20193 When this is not possible,<wbr/> the bar size should be rounded
20194 down to the nearest integer and the pattern can repeat
20195 on the right side.<wbr/></p>
20196 <p>Each bar's height must always take up the full sensor
20197 pixel array height.<wbr/></p>
20198 <p>Each pixel in this test pattern must be set to either
20199 0% intensity or 100% intensity.<wbr/></p></span>
20200                   </li>
20201                   <li>
20202                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20203                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20204 each bar should start at its specified color at the top,<wbr/>
20205 and fade to gray at the bottom.<wbr/></p>
20206 <p>Furthermore each bar is further subdivided into a left and
20207 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20208 and the right half should have a quantized gradient.<wbr/></p>
20209 <p>In particular,<wbr/> the right half's should consist of blocks of the
20210 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20211 <p>The least significant bits in the quantized gradient should
20212 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20213 <p>The height of each bar should always be a multiple of 128.<wbr/>
20214 When this is not the case,<wbr/> the pattern should repeat at the bottom
20215 of the image.<wbr/></p></span>
20216                   </li>
20217                   <li>
20218                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
20219                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20220 generated from a PN9 512-bit sequence (typically implemented
20221 in hardware with a linear feedback shift register).<wbr/></p>
20222 <p>The generator should be reset at the beginning of each frame,<wbr/>
20223 and thus each subsequent raw frame with this test pattern should
20224 be exactly the same as the last.<wbr/></p></span>
20225                   </li>
20226                   <li>
20227                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20228                     <span class="entry_type_enum_value">256</span>
20229                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20230 available only on this camera device are at least this numeric
20231 value.<wbr/></p>
20232 <p>All of the custom test patterns will be static
20233 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20234                   </li>
20235                 </ul>
20236
20237             </td> <!-- entry_type -->
20238
20239             <td class="entry_description">
20240               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20241 doing a real exposure from the camera.<wbr/></p>
20242             </td>
20243
20244             <td class="entry_units">
20245             </td>
20246
20247             <td class="entry_range">
20248               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20249             </td>
20250
20251             <td class="entry_hal_version">
20252               <p>3.<wbr/>2</p>
20253             </td>
20254
20255             <td class="entry_tags">
20256             </td>
20257
20258           </tr>
20259           <tr class="entries_header">
20260             <th class="th_details" colspan="6">Details</th>
20261           </tr>
20262           <tr class="entry_cont">
20263             <td class="entry_details" colspan="6">
20264               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20265 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20266 work as normal.<wbr/></p>
20267 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20268 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20269 would not actually affect it).<wbr/></p>
20270 <p>Defaults to OFF.<wbr/></p>
20271             </td>
20272           </tr>
20273
20274           <tr class="entries_header">
20275             <th class="th_details" colspan="6">HAL Implementation Details</th>
20276           </tr>
20277           <tr class="entry_cont">
20278             <td class="entry_details" colspan="6">
20279               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20280 <p>The HAL may choose to substitute test patterns from the sensor
20281 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20282 indistinguishable to the ISP whether the data came from the
20283 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20284             </td>
20285           </tr>
20286
20287           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20288            <!-- end of entry -->
20289         
20290         
20291
20292       <!-- end of kind -->
20293       </tbody>
20294       <tr><td colspan="7" class="kind">static</td></tr>
20295
20296       <thead class="entries_header">
20297         <tr>
20298           <th class="th_name">Property Name</th>
20299           <th class="th_type">Type</th>
20300           <th class="th_description">Description</th>
20301           <th class="th_units">Units</th>
20302           <th class="th_range">Range</th>
20303           <th class="th_hal_version">Initial HIDL HAL version</th>
20304           <th class="th_tags">Tags</th>
20305         </tr>
20306       </thead>
20307
20308       <tbody>
20309
20310         
20311
20312         
20313
20314         
20315
20316         
20317                 
20318             
20319
20320                 
20321           <tr class="entry" id="static_android.sensor.info.activeArraySize">
20322             <td class="entry_name
20323              " rowspan="5">
20324               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20325             </td>
20326             <td class="entry_type">
20327                 <span class="entry_type_name">int32</span>
20328                 <span class="entry_type_container">x</span>
20329
20330                 <span class="entry_type_array">
20331                   4
20332                 </span>
20333               <span class="entry_type_visibility"> [public as rectangle]</span>
20334
20335
20336               <span class="entry_type_hwlevel">[legacy] </span>
20337
20338
20339                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20340
20341
20342             </td> <!-- entry_type -->
20343
20344             <td class="entry_description">
20345               <p>The area of the image sensor which corresponds to active pixels after any geometric
20346 distortion correction has been applied.<wbr/></p>
20347             </td>
20348
20349             <td class="entry_units">
20350               Pixel coordinates on the image sensor
20351             </td>
20352
20353             <td class="entry_range">
20354             </td>
20355
20356             <td class="entry_hal_version">
20357               <p>3.<wbr/>2</p>
20358             </td>
20359
20360             <td class="entry_tags">
20361               <ul class="entry_tags">
20362                   <li><a href="#tag_RAW">RAW</a></li>
20363               </ul>
20364             </td>
20365
20366           </tr>
20367           <tr class="entries_header">
20368             <th class="th_details" colspan="6">Details</th>
20369           </tr>
20370           <tr class="entry_cont">
20371             <td class="entry_details" colspan="6">
20372               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20373 the region that actually receives light from the scene) after any geometric correction
20374 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20375 image output formats aside from the raw formats.<wbr/></p>
20376 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20377 the full pixel array,<wbr/> and the size of the full pixel array is given by
20378 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20379 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20380 <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
20381 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20382 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20383 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20384 resulting in scaling or cropping may have been applied.<wbr/></p>
20385             </td>
20386           </tr>
20387
20388           <tr class="entries_header">
20389             <th class="th_details" colspan="6">HAL Implementation Details</th>
20390           </tr>
20391           <tr class="entry_cont">
20392             <td class="entry_details" colspan="6">
20393               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20394 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20395 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>
20396             </td>
20397           </tr>
20398
20399           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20400            <!-- end of entry -->
20401         
20402                 
20403           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20404             <td class="entry_name
20405              " rowspan="3">
20406               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20407             </td>
20408             <td class="entry_type">
20409                 <span class="entry_type_name">int32</span>
20410                 <span class="entry_type_container">x</span>
20411
20412                 <span class="entry_type_array">
20413                   2
20414                 </span>
20415               <span class="entry_type_visibility"> [public as rangeInt]</span>
20416
20417
20418               <span class="entry_type_hwlevel">[full] </span>
20419
20420
20421                 <div class="entry_type_notes">Range of supported sensitivities</div>
20422
20423
20424             </td> <!-- entry_type -->
20425
20426             <td class="entry_description">
20427               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20428 camera device.<wbr/></p>
20429             </td>
20430
20431             <td class="entry_units">
20432             </td>
20433
20434             <td class="entry_range">
20435               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20436             </td>
20437
20438             <td class="entry_hal_version">
20439               <p>3.<wbr/>2</p>
20440             </td>
20441
20442             <td class="entry_tags">
20443               <ul class="entry_tags">
20444                   <li><a href="#tag_BC">BC</a></li>
20445                   <li><a href="#tag_V1">V1</a></li>
20446               </ul>
20447             </td>
20448
20449           </tr>
20450           <tr class="entries_header">
20451             <th class="th_details" colspan="6">Details</th>
20452           </tr>
20453           <tr class="entry_cont">
20454             <td class="entry_details" colspan="6">
20455               <p>The values are the standard ISO sensitivity values,<wbr/>
20456 as defined in ISO 12232:2006.<wbr/></p>
20457             </td>
20458           </tr>
20459
20460
20461           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20462            <!-- end of entry -->
20463         
20464                 
20465           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20466             <td class="entry_name
20467              " rowspan="1">
20468               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20469             </td>
20470             <td class="entry_type">
20471                 <span class="entry_type_name entry_type_name_enum">byte</span>
20472
20473               <span class="entry_type_visibility"> [public]</span>
20474
20475
20476               <span class="entry_type_hwlevel">[full] </span>
20477
20478
20479
20480                 <ul class="entry_type_enum">
20481                   <li>
20482                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
20483                   </li>
20484                   <li>
20485                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
20486                   </li>
20487                   <li>
20488                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
20489                   </li>
20490                   <li>
20491                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
20492                   </li>
20493                   <li>
20494                     <span class="entry_type_enum_name">RGB (v3.2)</span>
20495                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20496 values for each pixel,<wbr/> instead of just 1 16-bit value
20497 per pixel.<wbr/></p></span>
20498                   </li>
20499                 </ul>
20500
20501             </td> <!-- entry_type -->
20502
20503             <td class="entry_description">
20504               <p>The arrangement of color filters on sensor;
20505 represents the colors in the top-left 2x2 section of
20506 the sensor,<wbr/> in reading order.<wbr/></p>
20507             </td>
20508
20509             <td class="entry_units">
20510             </td>
20511
20512             <td class="entry_range">
20513             </td>
20514
20515             <td class="entry_hal_version">
20516               <p>3.<wbr/>2</p>
20517             </td>
20518
20519             <td class="entry_tags">
20520               <ul class="entry_tags">
20521                   <li><a href="#tag_RAW">RAW</a></li>
20522               </ul>
20523             </td>
20524
20525           </tr>
20526
20527
20528           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20529            <!-- end of entry -->
20530         
20531                 
20532           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20533             <td class="entry_name
20534              " rowspan="3">
20535               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20536             </td>
20537             <td class="entry_type">
20538                 <span class="entry_type_name">int64</span>
20539                 <span class="entry_type_container">x</span>
20540
20541                 <span class="entry_type_array">
20542                   2
20543                 </span>
20544               <span class="entry_type_visibility"> [public as rangeLong]</span>
20545
20546
20547               <span class="entry_type_hwlevel">[full] </span>
20548
20549
20550                 <div class="entry_type_notes">nanoseconds</div>
20551
20552
20553             </td> <!-- entry_type -->
20554
20555             <td class="entry_description">
20556               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20557 by this camera device.<wbr/></p>
20558             </td>
20559
20560             <td class="entry_units">
20561               Nanoseconds
20562             </td>
20563
20564             <td class="entry_range">
20565               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20566 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20567 the maximum exposure time will be greater than 100ms.<wbr/></p>
20568             </td>
20569
20570             <td class="entry_hal_version">
20571               <p>3.<wbr/>2</p>
20572             </td>
20573
20574             <td class="entry_tags">
20575               <ul class="entry_tags">
20576                   <li><a href="#tag_V1">V1</a></li>
20577               </ul>
20578             </td>
20579
20580           </tr>
20581
20582           <tr class="entries_header">
20583             <th class="th_details" colspan="6">HAL Implementation Details</th>
20584           </tr>
20585           <tr class="entry_cont">
20586             <td class="entry_details" colspan="6">
20587               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20588 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20589 100ms.<wbr/></p>
20590             </td>
20591           </tr>
20592
20593           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20594            <!-- end of entry -->
20595         
20596                 
20597           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20598             <td class="entry_name
20599              " rowspan="5">
20600               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20601             </td>
20602             <td class="entry_type">
20603                 <span class="entry_type_name">int64</span>
20604
20605               <span class="entry_type_visibility"> [public]</span>
20606
20607
20608               <span class="entry_type_hwlevel">[full] </span>
20609
20610
20611
20612
20613             </td> <!-- entry_type -->
20614
20615             <td class="entry_description">
20616               <p>The maximum possible frame duration (minimum frame rate) for
20617 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20618             </td>
20619
20620             <td class="entry_units">
20621               Nanoseconds
20622             </td>
20623
20624             <td class="entry_range">
20625               <p>For FULL capability devices
20626 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20627             </td>
20628
20629             <td class="entry_hal_version">
20630               <p>3.<wbr/>2</p>
20631             </td>
20632
20633             <td class="entry_tags">
20634               <ul class="entry_tags">
20635                   <li><a href="#tag_V1">V1</a></li>
20636               </ul>
20637             </td>
20638
20639           </tr>
20640           <tr class="entries_header">
20641             <th class="th_details" colspan="6">Details</th>
20642           </tr>
20643           <tr class="entry_cont">
20644             <td class="entry_details" colspan="6">
20645               <p>Attempting to use frame durations beyond the maximum will result in the frame
20646 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20647 durations.<wbr/></p>
20648 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20649 for the minimum frame duration values.<wbr/></p>
20650             </td>
20651           </tr>
20652
20653           <tr class="entries_header">
20654             <th class="th_details" colspan="6">HAL Implementation Details</th>
20655           </tr>
20656           <tr class="entry_cont">
20657             <td class="entry_details" colspan="6">
20658               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20659 The maximum of the range SHOULD be at least
20660 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20661 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20662 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20663 value (since exposure time overrides frame duration).<wbr/></p>
20664 <p>Available minimum frame durations for JPEG must be no greater
20665 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20666 minimum frame durations (for that respective size).<wbr/></p>
20667 <p>Since JPEG processing is considered offline and can take longer than
20668 a single uncompressed capture,<wbr/> refer to
20669 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20670 for details about encoding this scenario.<wbr/></p>
20671             </td>
20672           </tr>
20673
20674           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20675            <!-- end of entry -->
20676         
20677                 
20678           <tr class="entry" id="static_android.sensor.info.physicalSize">
20679             <td class="entry_name
20680              " rowspan="5">
20681               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20682             </td>
20683             <td class="entry_type">
20684                 <span class="entry_type_name">float</span>
20685                 <span class="entry_type_container">x</span>
20686
20687                 <span class="entry_type_array">
20688                   2
20689                 </span>
20690               <span class="entry_type_visibility"> [public as sizeF]</span>
20691
20692
20693               <span class="entry_type_hwlevel">[legacy] </span>
20694
20695
20696                 <div class="entry_type_notes">width x height</div>
20697
20698
20699             </td> <!-- entry_type -->
20700
20701             <td class="entry_description">
20702               <p>The physical dimensions of the full pixel
20703 array.<wbr/></p>
20704             </td>
20705
20706             <td class="entry_units">
20707               Millimeters
20708             </td>
20709
20710             <td class="entry_range">
20711             </td>
20712
20713             <td class="entry_hal_version">
20714               <p>3.<wbr/>2</p>
20715             </td>
20716
20717             <td class="entry_tags">
20718               <ul class="entry_tags">
20719                   <li><a href="#tag_V1">V1</a></li>
20720                   <li><a href="#tag_BC">BC</a></li>
20721               </ul>
20722             </td>
20723
20724           </tr>
20725           <tr class="entries_header">
20726             <th class="th_details" colspan="6">Details</th>
20727           </tr>
20728           <tr class="entry_cont">
20729             <td class="entry_details" colspan="6">
20730               <p>This is the physical size of the sensor pixel
20731 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20732             </td>
20733           </tr>
20734
20735           <tr class="entries_header">
20736             <th class="th_details" colspan="6">HAL Implementation Details</th>
20737           </tr>
20738           <tr class="entry_cont">
20739             <td class="entry_details" colspan="6">
20740               <p>Needed for FOV calculation for old API</p>
20741             </td>
20742           </tr>
20743
20744           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20745            <!-- end of entry -->
20746         
20747                 
20748           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20749             <td class="entry_name
20750              " rowspan="3">
20751               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20752             </td>
20753             <td class="entry_type">
20754                 <span class="entry_type_name">int32</span>
20755                 <span class="entry_type_container">x</span>
20756
20757                 <span class="entry_type_array">
20758                   2
20759                 </span>
20760               <span class="entry_type_visibility"> [public as size]</span>
20761
20762
20763               <span class="entry_type_hwlevel">[legacy] </span>
20764
20765
20766
20767
20768             </td> <!-- entry_type -->
20769
20770             <td class="entry_description">
20771               <p>Dimensions of the full pixel array,<wbr/> possibly
20772 including black calibration pixels.<wbr/></p>
20773             </td>
20774
20775             <td class="entry_units">
20776               Pixels
20777             </td>
20778
20779             <td class="entry_range">
20780             </td>
20781
20782             <td class="entry_hal_version">
20783               <p>3.<wbr/>2</p>
20784             </td>
20785
20786             <td class="entry_tags">
20787               <ul class="entry_tags">
20788                   <li><a href="#tag_RAW">RAW</a></li>
20789                   <li><a href="#tag_BC">BC</a></li>
20790               </ul>
20791             </td>
20792
20793           </tr>
20794           <tr class="entries_header">
20795             <th class="th_details" colspan="6">Details</th>
20796           </tr>
20797           <tr class="entry_cont">
20798             <td class="entry_details" colspan="6">
20799               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20800 <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
20801 the raw buffers produced by this sensor.<wbr/></p>
20802 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20803 <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
20804 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20805 (this depends on whether or not the image sensor returns buffers containing pixels that
20806 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20807 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20808 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
20809 defines the rectangle of active pixels that will be included in processed image
20810 formats.<wbr/></p>
20811             </td>
20812           </tr>
20813
20814
20815           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20816            <!-- end of entry -->
20817         
20818                 
20819           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20820             <td class="entry_name
20821              " rowspan="5">
20822               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20823             </td>
20824             <td class="entry_type">
20825                 <span class="entry_type_name">int32</span>
20826
20827               <span class="entry_type_visibility"> [public]</span>
20828
20829
20830
20831
20832
20833
20834             </td> <!-- entry_type -->
20835
20836             <td class="entry_description">
20837               <p>Maximum raw value output by sensor.<wbr/></p>
20838             </td>
20839
20840             <td class="entry_units">
20841             </td>
20842
20843             <td class="entry_range">
20844               <p>&gt; 255 (8-bit output)</p>
20845             </td>
20846
20847             <td class="entry_hal_version">
20848               <p>3.<wbr/>2</p>
20849             </td>
20850
20851             <td class="entry_tags">
20852               <ul class="entry_tags">
20853                   <li><a href="#tag_RAW">RAW</a></li>
20854               </ul>
20855             </td>
20856
20857           </tr>
20858           <tr class="entries_header">
20859             <th class="th_details" colspan="6">Details</th>
20860           </tr>
20861           <tr class="entry_cont">
20862             <td class="entry_details" colspan="6">
20863               <p>This specifies the fully-saturated encoding level for the raw
20864 sample values from the sensor.<wbr/>  This is typically caused by the
20865 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20866 each channel is specified by the offset in the
20867 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20868 <p>The white level is typically determined either by sensor bit depth
20869 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20870 becomes too non-linear to be useful.<wbr/>  The default value for this is
20871 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20872 <p>The white level values of captured images may vary for different
20873 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20874 represents a coarse approximation for such case.<wbr/> It is recommended
20875 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20876 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20877             </td>
20878           </tr>
20879
20880           <tr class="entries_header">
20881             <th class="th_details" colspan="6">HAL Implementation Details</th>
20882           </tr>
20883           <tr class="entry_cont">
20884             <td class="entry_details" colspan="6">
20885               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20886 so the value for linear sensors should not be significantly lower
20887 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20888             </td>
20889           </tr>
20890
20891           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20892            <!-- end of entry -->
20893         
20894                 
20895           <tr class="entry" id="static_android.sensor.info.timestampSource">
20896             <td class="entry_name
20897              " rowspan="5">
20898               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20899             </td>
20900             <td class="entry_type">
20901                 <span class="entry_type_name entry_type_name_enum">byte</span>
20902
20903               <span class="entry_type_visibility"> [public]</span>
20904
20905
20906               <span class="entry_type_hwlevel">[legacy] </span>
20907
20908
20909
20910                 <ul class="entry_type_enum">
20911                   <li>
20912                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20913                     <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/>
20914 but can not be compared to timestamps from other subsystems
20915 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20916 camera devices in the same system.<wbr/> Timestamps between streams and results for
20917 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20918 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20919                   </li>
20920                   <li>
20921                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20922                     <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
20923 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20924 and they can be compared to other timestamps using that base.<wbr/></p></span>
20925                   </li>
20926                 </ul>
20927
20928             </td> <!-- entry_type -->
20929
20930             <td class="entry_description">
20931               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20932             </td>
20933
20934             <td class="entry_units">
20935             </td>
20936
20937             <td class="entry_range">
20938             </td>
20939
20940             <td class="entry_hal_version">
20941               <p>3.<wbr/>2</p>
20942             </td>
20943
20944             <td class="entry_tags">
20945               <ul class="entry_tags">
20946                   <li><a href="#tag_V1">V1</a></li>
20947               </ul>
20948             </td>
20949
20950           </tr>
20951           <tr class="entries_header">
20952             <th class="th_details" colspan="6">Details</th>
20953           </tr>
20954           <tr class="entry_cont">
20955             <td class="entry_details" colspan="6">
20956               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20957 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20958 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20959 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20960             </td>
20961           </tr>
20962
20963           <tr class="entries_header">
20964             <th class="th_details" colspan="6">HAL Implementation Details</th>
20965           </tr>
20966           <tr class="entry_cont">
20967             <td class="entry_details" colspan="6">
20968               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20969 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20970 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20971 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20972 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20973 recording might suffer unexpected behavior.<wbr/></p>
20974 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20975 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20976             </td>
20977           </tr>
20978
20979           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20980            <!-- end of entry -->
20981         
20982                 
20983           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20984             <td class="entry_name
20985              " rowspan="3">
20986               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20987             </td>
20988             <td class="entry_type">
20989                 <span class="entry_type_name entry_type_name_enum">byte</span>
20990
20991               <span class="entry_type_visibility"> [public as boolean]</span>
20992
20993
20994
20995
20996
20997                 <ul class="entry_type_enum">
20998                   <li>
20999                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
21000                   </li>
21001                   <li>
21002                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
21003                   </li>
21004                 </ul>
21005
21006             </td> <!-- entry_type -->
21007
21008             <td class="entry_description">
21009               <p>Whether the RAW images output from this camera device are subject to
21010 lens shading correction.<wbr/></p>
21011             </td>
21012
21013             <td class="entry_units">
21014             </td>
21015
21016             <td class="entry_range">
21017             </td>
21018
21019             <td class="entry_hal_version">
21020               <p>3.<wbr/>2</p>
21021             </td>
21022
21023             <td class="entry_tags">
21024             </td>
21025
21026           </tr>
21027           <tr class="entries_header">
21028             <th class="th_details" colspan="6">Details</th>
21029           </tr>
21030           <tr class="entry_cont">
21031             <td class="entry_details" colspan="6">
21032               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21033 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21034 not be adjusted for lens shading correction.<wbr/>
21035 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>
21036 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21037 Devices with RAW capability will always report this information in this key.<wbr/></p>
21038             </td>
21039           </tr>
21040
21041
21042           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21043            <!-- end of entry -->
21044         
21045                 
21046           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21047             <td class="entry_name
21048              " rowspan="5">
21049               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21050             </td>
21051             <td class="entry_type">
21052                 <span class="entry_type_name">int32</span>
21053                 <span class="entry_type_container">x</span>
21054
21055                 <span class="entry_type_array">
21056                   4
21057                 </span>
21058               <span class="entry_type_visibility"> [public as rectangle]</span>
21059
21060
21061               <span class="entry_type_hwlevel">[legacy] </span>
21062
21063
21064                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21065
21066
21067             </td> <!-- entry_type -->
21068
21069             <td class="entry_description">
21070               <p>The area of the image sensor which corresponds to active pixels prior to the
21071 application of any geometric distortion correction.<wbr/></p>
21072             </td>
21073
21074             <td class="entry_units">
21075               Pixel coordinates on the image sensor
21076             </td>
21077
21078             <td class="entry_range">
21079             </td>
21080
21081             <td class="entry_hal_version">
21082               <p>3.<wbr/>2</p>
21083             </td>
21084
21085             <td class="entry_tags">
21086               <ul class="entry_tags">
21087                   <li><a href="#tag_RAW">RAW</a></li>
21088               </ul>
21089             </td>
21090
21091           </tr>
21092           <tr class="entries_header">
21093             <th class="th_details" colspan="6">Details</th>
21094           </tr>
21095           <tr class="entry_cont">
21096             <td class="entry_details" colspan="6">
21097               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21098 the region that actually receives light from the scene) before any geometric correction
21099 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21100 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21101 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21102 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21103 <p>The size of this region determines the maximum field of view and the maximum number of
21104 pixels that an image from this sensor can contain,<wbr/> prior to the application of
21105 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21106 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>
21107 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21108 can be calculated by applying the geometric distortion correction fields to this
21109 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>
21110 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21111 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/>
21112 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21113 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21114 <ol>
21115 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21116 <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
21117 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21118 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21119 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21120 buffers is defined relative to the top,<wbr/> left of the
21121 <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>
21122 <li>If the resulting corrected pixel coordinate is within the region given in
21123 <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
21124 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21125 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21126 </ol>
21127 <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>
21128 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/>
21129 <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
21130 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21131 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21132 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)
21133 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21134 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21135 <p>The currently supported fields that correct for geometric distortion are:</p>
21136 <ol>
21137 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21138 </ol>
21139 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21140 as the post-distortion-corrected rectangle given in
21141 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21142 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21143 the full pixel array,<wbr/> and the size of the full pixel array is given by
21144 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21145 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21146 full array may include black calibration pixels or other inactive regions.<wbr/></p>
21147             </td>
21148           </tr>
21149
21150           <tr class="entries_header">
21151             <th class="th_details" colspan="6">HAL Implementation Details</th>
21152           </tr>
21153           <tr class="entry_cont">
21154             <td class="entry_details" colspan="6">
21155               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21156 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
21157 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>
21158 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21159 the same as the post-correction active array region given in
21160 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21161             </td>
21162           </tr>
21163
21164           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21165            <!-- end of entry -->
21166         
21167         
21168         
21169
21170                 
21171           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21172             <td class="entry_name
21173              " rowspan="5">
21174               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21175             </td>
21176             <td class="entry_type">
21177                 <span class="entry_type_name entry_type_name_enum">byte</span>
21178
21179               <span class="entry_type_visibility"> [public]</span>
21180
21181
21182
21183
21184
21185                 <ul class="entry_type_enum">
21186                   <li>
21187                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21188                     <span class="entry_type_enum_value">1</span>
21189                   </li>
21190                   <li>
21191                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21192                     <span class="entry_type_enum_value">2</span>
21193                   </li>
21194                   <li>
21195                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21196                     <span class="entry_type_enum_value">3</span>
21197                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21198                   </li>
21199                   <li>
21200                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
21201                     <span class="entry_type_enum_value">4</span>
21202                   </li>
21203                   <li>
21204                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21205                     <span class="entry_type_enum_value">9</span>
21206                   </li>
21207                   <li>
21208                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21209                     <span class="entry_type_enum_value">10</span>
21210                   </li>
21211                   <li>
21212                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
21213                     <span class="entry_type_enum_value">11</span>
21214                   </li>
21215                   <li>
21216                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21217                     <span class="entry_type_enum_value">12</span>
21218                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21219                   </li>
21220                   <li>
21221                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21222                     <span class="entry_type_enum_value">13</span>
21223                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21224                   </li>
21225                   <li>
21226                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21227                     <span class="entry_type_enum_value">14</span>
21228                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21229                   </li>
21230                   <li>
21231                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21232                     <span class="entry_type_enum_value">15</span>
21233                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21234                   </li>
21235                   <li>
21236                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21237                     <span class="entry_type_enum_value">17</span>
21238                   </li>
21239                   <li>
21240                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21241                     <span class="entry_type_enum_value">18</span>
21242                   </li>
21243                   <li>
21244                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21245                     <span class="entry_type_enum_value">19</span>
21246                   </li>
21247                   <li>
21248                     <span class="entry_type_enum_name">D55 (v3.2)</span>
21249                     <span class="entry_type_enum_value">20</span>
21250                   </li>
21251                   <li>
21252                     <span class="entry_type_enum_name">D65 (v3.2)</span>
21253                     <span class="entry_type_enum_value">21</span>
21254                   </li>
21255                   <li>
21256                     <span class="entry_type_enum_name">D75 (v3.2)</span>
21257                     <span class="entry_type_enum_value">22</span>
21258                   </li>
21259                   <li>
21260                     <span class="entry_type_enum_name">D50 (v3.2)</span>
21261                     <span class="entry_type_enum_value">23</span>
21262                   </li>
21263                   <li>
21264                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21265                     <span class="entry_type_enum_value">24</span>
21266                   </li>
21267                 </ul>
21268
21269             </td> <!-- entry_type -->
21270
21271             <td class="entry_description">
21272               <p>The standard reference illuminant used as the scene light source when
21273 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21274 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21275 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21276             </td>
21277
21278             <td class="entry_units">
21279             </td>
21280
21281             <td class="entry_range">
21282             </td>
21283
21284             <td class="entry_hal_version">
21285               <p>3.<wbr/>2</p>
21286             </td>
21287
21288             <td class="entry_tags">
21289               <ul class="entry_tags">
21290                   <li><a href="#tag_RAW">RAW</a></li>
21291               </ul>
21292             </td>
21293
21294           </tr>
21295           <tr class="entries_header">
21296             <th class="th_details" colspan="6">Details</th>
21297           </tr>
21298           <tr class="entry_cont">
21299             <td class="entry_details" colspan="6">
21300               <p>The values in this key correspond to the values defined for the
21301 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21302 that are often used calibrating camera devices.<wbr/></p>
21303 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21304 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21305 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21306 <p>Some devices may choose to provide a second set of calibration
21307 information for improved quality,<wbr/> including
21308 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21309             </td>
21310           </tr>
21311
21312           <tr class="entries_header">
21313             <th class="th_details" colspan="6">HAL Implementation Details</th>
21314           </tr>
21315           <tr class="entry_cont">
21316             <td class="entry_details" colspan="6">
21317               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21318 and corresponding matrices must be present to support the RAW capability
21319 and DNG output.<wbr/></p>
21320 <p>When producing raw images with a color profile that has only been
21321 calibrated against a single light source,<wbr/> it is valid to omit
21322 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21323 <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/>
21324 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21325 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21326 chosen so that it is representative of typical scene lighting.<wbr/>  In
21327 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21328 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21329 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21330 chosen to represent the typical range of scene lighting conditions.<wbr/>
21331 In general,<wbr/> low color temperature illuminant such as Standard-A will
21332 be chosen for the first reference illuminant and a higher color
21333 temperature illuminant such as D65 will be chosen for the second
21334 reference illuminant.<wbr/></p>
21335             </td>
21336           </tr>
21337
21338           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21339            <!-- end of entry -->
21340         
21341                 
21342           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21343             <td class="entry_name
21344              " rowspan="3">
21345               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21346             </td>
21347             <td class="entry_type">
21348                 <span class="entry_type_name">byte</span>
21349
21350               <span class="entry_type_visibility"> [public]</span>
21351
21352
21353
21354
21355
21356
21357             </td> <!-- entry_type -->
21358
21359             <td class="entry_description">
21360               <p>The standard reference illuminant used as the scene light source when
21361 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21362 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21363 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21364             </td>
21365
21366             <td class="entry_units">
21367             </td>
21368
21369             <td class="entry_range">
21370               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21371             </td>
21372
21373             <td class="entry_hal_version">
21374               <p>3.<wbr/>2</p>
21375             </td>
21376
21377             <td class="entry_tags">
21378               <ul class="entry_tags">
21379                   <li><a href="#tag_RAW">RAW</a></li>
21380               </ul>
21381             </td>
21382
21383           </tr>
21384           <tr class="entries_header">
21385             <th class="th_details" colspan="6">Details</th>
21386           </tr>
21387           <tr class="entry_cont">
21388             <td class="entry_details" colspan="6">
21389               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21390 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21391 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21392 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21393             </td>
21394           </tr>
21395
21396
21397           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21398            <!-- end of entry -->
21399         
21400                 
21401           <tr class="entry" id="static_android.sensor.calibrationTransform1">
21402             <td class="entry_name
21403              " rowspan="3">
21404               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21405             </td>
21406             <td class="entry_type">
21407                 <span class="entry_type_name">rational</span>
21408                 <span class="entry_type_container">x</span>
21409
21410                 <span class="entry_type_array">
21411                   3 x 3
21412                 </span>
21413               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21414
21415
21416
21417
21418                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21419
21420
21421             </td> <!-- entry_type -->
21422
21423             <td class="entry_description">
21424               <p>A per-device calibration transform matrix that maps from the
21425 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21426             </td>
21427
21428             <td class="entry_units">
21429             </td>
21430
21431             <td class="entry_range">
21432             </td>
21433
21434             <td class="entry_hal_version">
21435               <p>3.<wbr/>2</p>
21436             </td>
21437
21438             <td class="entry_tags">
21439               <ul class="entry_tags">
21440                   <li><a href="#tag_RAW">RAW</a></li>
21441               </ul>
21442             </td>
21443
21444           </tr>
21445           <tr class="entries_header">
21446             <th class="th_details" colspan="6">Details</th>
21447           </tr>
21448           <tr class="entry_cont">
21449             <td class="entry_details" colspan="6">
21450               <p>This matrix is used to correct for per-device variations in the
21451 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21452 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21453 contains a per-device calibration transform that maps colors
21454 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21455 colorspace) into this camera device's native sensor color
21456 space under the first reference illuminant
21457 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21458             </td>
21459           </tr>
21460
21461
21462           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21463            <!-- end of entry -->
21464         
21465                 
21466           <tr class="entry" id="static_android.sensor.calibrationTransform2">
21467             <td class="entry_name
21468              " rowspan="3">
21469               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21470             </td>
21471             <td class="entry_type">
21472                 <span class="entry_type_name">rational</span>
21473                 <span class="entry_type_container">x</span>
21474
21475                 <span class="entry_type_array">
21476                   3 x 3
21477                 </span>
21478               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21479
21480
21481
21482
21483                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21484
21485
21486             </td> <!-- entry_type -->
21487
21488             <td class="entry_description">
21489               <p>A per-device calibration transform matrix that maps from the
21490 reference sensor colorspace to the actual device sensor colorspace
21491 (this is the colorspace of the raw buffer data).<wbr/></p>
21492             </td>
21493
21494             <td class="entry_units">
21495             </td>
21496
21497             <td class="entry_range">
21498             </td>
21499
21500             <td class="entry_hal_version">
21501               <p>3.<wbr/>2</p>
21502             </td>
21503
21504             <td class="entry_tags">
21505               <ul class="entry_tags">
21506                   <li><a href="#tag_RAW">RAW</a></li>
21507               </ul>
21508             </td>
21509
21510           </tr>
21511           <tr class="entries_header">
21512             <th class="th_details" colspan="6">Details</th>
21513           </tr>
21514           <tr class="entry_cont">
21515             <td class="entry_details" colspan="6">
21516               <p>This matrix is used to correct for per-device variations in the
21517 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21518 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21519 contains a per-device calibration transform that maps colors
21520 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21521 colorspace) into this camera device's native sensor color
21522 space under the second reference illuminant
21523 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21524 <p>This matrix will only be present if the second reference
21525 illuminant is present.<wbr/></p>
21526             </td>
21527           </tr>
21528
21529
21530           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21531            <!-- end of entry -->
21532         
21533                 
21534           <tr class="entry" id="static_android.sensor.colorTransform1">
21535             <td class="entry_name
21536              " rowspan="3">
21537               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21538             </td>
21539             <td class="entry_type">
21540                 <span class="entry_type_name">rational</span>
21541                 <span class="entry_type_container">x</span>
21542
21543                 <span class="entry_type_array">
21544                   3 x 3
21545                 </span>
21546               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21547
21548
21549
21550
21551                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21552
21553
21554             </td> <!-- entry_type -->
21555
21556             <td class="entry_description">
21557               <p>A matrix that transforms color values from CIE XYZ color space to
21558 reference sensor color space.<wbr/></p>
21559             </td>
21560
21561             <td class="entry_units">
21562             </td>
21563
21564             <td class="entry_range">
21565             </td>
21566
21567             <td class="entry_hal_version">
21568               <p>3.<wbr/>2</p>
21569             </td>
21570
21571             <td class="entry_tags">
21572               <ul class="entry_tags">
21573                   <li><a href="#tag_RAW">RAW</a></li>
21574               </ul>
21575             </td>
21576
21577           </tr>
21578           <tr class="entries_header">
21579             <th class="th_details" colspan="6">Details</th>
21580           </tr>
21581           <tr class="entry_cont">
21582             <td class="entry_details" colspan="6">
21583               <p>This matrix is used to convert from the standard CIE XYZ color
21584 space to the reference sensor colorspace,<wbr/> and is used when processing
21585 raw buffer data.<wbr/></p>
21586 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21587 contains a color transform matrix that maps colors from the CIE
21588 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21589 "golden module" colorspace) under the first reference illuminant
21590 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21591 <p>The white points chosen in both the reference sensor color space
21592 and the CIE XYZ colorspace when calculating this transform will
21593 match the standard white point for the first reference illuminant
21594 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21595             </td>
21596           </tr>
21597
21598
21599           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21600            <!-- end of entry -->
21601         
21602                 
21603           <tr class="entry" id="static_android.sensor.colorTransform2">
21604             <td class="entry_name
21605              " rowspan="3">
21606               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21607             </td>
21608             <td class="entry_type">
21609                 <span class="entry_type_name">rational</span>
21610                 <span class="entry_type_container">x</span>
21611
21612                 <span class="entry_type_array">
21613                   3 x 3
21614                 </span>
21615               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21616
21617
21618
21619
21620                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21621
21622
21623             </td> <!-- entry_type -->
21624
21625             <td class="entry_description">
21626               <p>A matrix that transforms color values from CIE XYZ color space to
21627 reference sensor color space.<wbr/></p>
21628             </td>
21629
21630             <td class="entry_units">
21631             </td>
21632
21633             <td class="entry_range">
21634             </td>
21635
21636             <td class="entry_hal_version">
21637               <p>3.<wbr/>2</p>
21638             </td>
21639
21640             <td class="entry_tags">
21641               <ul class="entry_tags">
21642                   <li><a href="#tag_RAW">RAW</a></li>
21643               </ul>
21644             </td>
21645
21646           </tr>
21647           <tr class="entries_header">
21648             <th class="th_details" colspan="6">Details</th>
21649           </tr>
21650           <tr class="entry_cont">
21651             <td class="entry_details" colspan="6">
21652               <p>This matrix is used to convert from the standard CIE XYZ color
21653 space to the reference sensor colorspace,<wbr/> and is used when processing
21654 raw buffer data.<wbr/></p>
21655 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21656 contains a color transform matrix that maps colors from the CIE
21657 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21658 "golden module" colorspace) under the second reference illuminant
21659 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21660 <p>The white points chosen in both the reference sensor color space
21661 and the CIE XYZ colorspace when calculating this transform will
21662 match the standard white point for the second reference illuminant
21663 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21664 <p>This matrix will only be present if the second reference
21665 illuminant is present.<wbr/></p>
21666             </td>
21667           </tr>
21668
21669
21670           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21671            <!-- end of entry -->
21672         
21673                 
21674           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21675             <td class="entry_name
21676              " rowspan="3">
21677               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21678             </td>
21679             <td class="entry_type">
21680                 <span class="entry_type_name">rational</span>
21681                 <span class="entry_type_container">x</span>
21682
21683                 <span class="entry_type_array">
21684                   3 x 3
21685                 </span>
21686               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21687
21688
21689
21690
21691                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21692
21693
21694             </td> <!-- entry_type -->
21695
21696             <td class="entry_description">
21697               <p>A matrix that transforms white balanced camera colors from the reference
21698 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21699             </td>
21700
21701             <td class="entry_units">
21702             </td>
21703
21704             <td class="entry_range">
21705             </td>
21706
21707             <td class="entry_hal_version">
21708               <p>3.<wbr/>2</p>
21709             </td>
21710
21711             <td class="entry_tags">
21712               <ul class="entry_tags">
21713                   <li><a href="#tag_RAW">RAW</a></li>
21714               </ul>
21715             </td>
21716
21717           </tr>
21718           <tr class="entries_header">
21719             <th class="th_details" colspan="6">Details</th>
21720           </tr>
21721           <tr class="entry_cont">
21722             <td class="entry_details" colspan="6">
21723               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21724 is used when processing raw buffer data.<wbr/></p>
21725 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21726 a color transform matrix that maps white balanced colors from the
21727 reference sensor color space to the CIE XYZ color space with a D50 white
21728 point.<wbr/></p>
21729 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21730 this matrix is chosen so that the standard white point for this reference
21731 illuminant in the reference sensor colorspace is mapped to D50 in the
21732 CIE XYZ colorspace.<wbr/></p>
21733             </td>
21734           </tr>
21735
21736
21737           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21738            <!-- end of entry -->
21739         
21740                 
21741           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21742             <td class="entry_name
21743              " rowspan="3">
21744               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21745             </td>
21746             <td class="entry_type">
21747                 <span class="entry_type_name">rational</span>
21748                 <span class="entry_type_container">x</span>
21749
21750                 <span class="entry_type_array">
21751                   3 x 3
21752                 </span>
21753               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21754
21755
21756
21757
21758                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21759
21760
21761             </td> <!-- entry_type -->
21762
21763             <td class="entry_description">
21764               <p>A matrix that transforms white balanced camera colors from the reference
21765 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21766             </td>
21767
21768             <td class="entry_units">
21769             </td>
21770
21771             <td class="entry_range">
21772             </td>
21773
21774             <td class="entry_hal_version">
21775               <p>3.<wbr/>2</p>
21776             </td>
21777
21778             <td class="entry_tags">
21779               <ul class="entry_tags">
21780                   <li><a href="#tag_RAW">RAW</a></li>
21781               </ul>
21782             </td>
21783
21784           </tr>
21785           <tr class="entries_header">
21786             <th class="th_details" colspan="6">Details</th>
21787           </tr>
21788           <tr class="entry_cont">
21789             <td class="entry_details" colspan="6">
21790               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21791 is used when processing raw buffer data.<wbr/></p>
21792 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21793 a color transform matrix that maps white balanced colors from the
21794 reference sensor color space to the CIE XYZ color space with a D50 white
21795 point.<wbr/></p>
21796 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21797 this matrix is chosen so that the standard white point for this reference
21798 illuminant in the reference sensor colorspace is mapped to D50 in the
21799 CIE XYZ colorspace.<wbr/></p>
21800 <p>This matrix will only be present if the second reference
21801 illuminant is present.<wbr/></p>
21802             </td>
21803           </tr>
21804
21805
21806           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21807            <!-- end of entry -->
21808         
21809                 
21810           <tr class="entry" id="static_android.sensor.baseGainFactor">
21811             <td class="entry_name
21812              " rowspan="1">
21813               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21814             </td>
21815             <td class="entry_type">
21816                 <span class="entry_type_name">rational</span>
21817
21818               <span class="entry_type_visibility"> [system]</span>
21819
21820
21821
21822
21823
21824
21825             </td> <!-- entry_type -->
21826
21827             <td class="entry_description">
21828               <p>Gain factor from electrons to raw units when
21829 ISO=100</p>
21830             </td>
21831
21832             <td class="entry_units">
21833             </td>
21834
21835             <td class="entry_range">
21836             </td>
21837
21838             <td class="entry_hal_version">
21839               <p>3.<wbr/>2</p>
21840             </td>
21841
21842             <td class="entry_tags">
21843               <ul class="entry_tags">
21844                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21845               </ul>
21846             </td>
21847
21848           </tr>
21849
21850
21851           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21852            <!-- end of entry -->
21853         
21854                 
21855           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21856             <td class="entry_name
21857              " rowspan="5">
21858               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21859             </td>
21860             <td class="entry_type">
21861                 <span class="entry_type_name">int32</span>
21862                 <span class="entry_type_container">x</span>
21863
21864                 <span class="entry_type_array">
21865                   4
21866                 </span>
21867               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21868
21869
21870
21871
21872                 <div class="entry_type_notes">2x2 raw count block</div>
21873
21874
21875             </td> <!-- entry_type -->
21876
21877             <td class="entry_description">
21878               <p>A fixed black level offset for each of the color filter arrangement
21879 (CFA) mosaic channels.<wbr/></p>
21880             </td>
21881
21882             <td class="entry_units">
21883             </td>
21884
21885             <td class="entry_range">
21886               <p>&gt;= 0 for each.<wbr/></p>
21887             </td>
21888
21889             <td class="entry_hal_version">
21890               <p>3.<wbr/>2</p>
21891             </td>
21892
21893             <td class="entry_tags">
21894               <ul class="entry_tags">
21895                   <li><a href="#tag_RAW">RAW</a></li>
21896               </ul>
21897             </td>
21898
21899           </tr>
21900           <tr class="entries_header">
21901             <th class="th_details" colspan="6">Details</th>
21902           </tr>
21903           <tr class="entry_cont">
21904             <td class="entry_details" colspan="6">
21905               <p>This key specifies the zero light value for each of the CFA mosaic
21906 channels in the camera sensor.<wbr/>  The maximal value output by the
21907 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>
21908 <p>The values are given in the same order as channels listed for the CFA
21909 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
21910 nth value given corresponds to the black level offset for the nth
21911 color channel listed in the CFA.<wbr/></p>
21912 <p>The black level values of captured images may vary for different
21913 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21914 represents a coarse approximation for such case.<wbr/> It is recommended to
21915 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21916 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21917 supported by the camera device,<wbr/> which provides more accurate black
21918 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21919 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21920 level values for each frame.<wbr/></p>
21921             </td>
21922           </tr>
21923
21924           <tr class="entries_header">
21925             <th class="th_details" colspan="6">HAL Implementation Details</th>
21926           </tr>
21927           <tr class="entry_cont">
21928             <td class="entry_details" colspan="6">
21929               <p>The values are given in row-column scan order,<wbr/> with the first value
21930 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21931             </td>
21932           </tr>
21933
21934           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21935            <!-- end of entry -->
21936         
21937                 
21938           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21939             <td class="entry_name
21940              " rowspan="3">
21941               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21942             </td>
21943             <td class="entry_type">
21944                 <span class="entry_type_name">int32</span>
21945
21946               <span class="entry_type_visibility"> [public]</span>
21947
21948
21949               <span class="entry_type_hwlevel">[full] </span>
21950
21951
21952
21953
21954             </td> <!-- entry_type -->
21955
21956             <td class="entry_description">
21957               <p>Maximum sensitivity that is implemented
21958 purely through analog gain.<wbr/></p>
21959             </td>
21960
21961             <td class="entry_units">
21962             </td>
21963
21964             <td class="entry_range">
21965             </td>
21966
21967             <td class="entry_hal_version">
21968               <p>3.<wbr/>2</p>
21969             </td>
21970
21971             <td class="entry_tags">
21972               <ul class="entry_tags">
21973                   <li><a href="#tag_V1">V1</a></li>
21974                   <li><a href="#tag_FULL">FULL</a></li>
21975               </ul>
21976             </td>
21977
21978           </tr>
21979           <tr class="entries_header">
21980             <th class="th_details" colspan="6">Details</th>
21981           </tr>
21982           <tr class="entry_cont">
21983             <td class="entry_details" colspan="6">
21984               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21985 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21986 values above this,<wbr/> the gain applied can be a mix of analog and
21987 digital.<wbr/></p>
21988             </td>
21989           </tr>
21990
21991
21992           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21993            <!-- end of entry -->
21994         
21995                 
21996           <tr class="entry" id="static_android.sensor.orientation">
21997             <td class="entry_name
21998              " rowspan="3">
21999               android.<wbr/>sensor.<wbr/>orientation
22000             </td>
22001             <td class="entry_type">
22002                 <span class="entry_type_name">int32</span>
22003
22004               <span class="entry_type_visibility"> [public]</span>
22005
22006
22007               <span class="entry_type_hwlevel">[legacy] </span>
22008
22009
22010
22011
22012             </td> <!-- entry_type -->
22013
22014             <td class="entry_description">
22015               <p>Clockwise angle through which the output image needs to be rotated to be
22016 upright on the device screen in its native orientation.<wbr/></p>
22017             </td>
22018
22019             <td class="entry_units">
22020               Degrees of clockwise rotation; always a multiple of
22021           90
22022             </td>
22023
22024             <td class="entry_range">
22025               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
22026             </td>
22027
22028             <td class="entry_hal_version">
22029               <p>3.<wbr/>2</p>
22030             </td>
22031
22032             <td class="entry_tags">
22033               <ul class="entry_tags">
22034                   <li><a href="#tag_BC">BC</a></li>
22035               </ul>
22036             </td>
22037
22038           </tr>
22039           <tr class="entries_header">
22040             <th class="th_details" colspan="6">Details</th>
22041           </tr>
22042           <tr class="entry_cont">
22043             <td class="entry_details" colspan="6">
22044               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22045 the sensor's coordinate system.<wbr/></p>
22046             </td>
22047           </tr>
22048
22049
22050           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22051            <!-- end of entry -->
22052         
22053                 
22054           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22055             <td class="entry_name
22056              " rowspan="3">
22057               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22058             </td>
22059             <td class="entry_type">
22060                 <span class="entry_type_name">int32</span>
22061                 <span class="entry_type_container">x</span>
22062
22063                 <span class="entry_type_array">
22064                   3
22065                 </span>
22066               <span class="entry_type_visibility"> [system]</span>
22067
22068
22069
22070
22071                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22072
22073
22074             </td> <!-- entry_type -->
22075
22076             <td class="entry_description">
22077               <p>The number of input samples for each dimension of
22078 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22079             </td>
22080
22081             <td class="entry_units">
22082             </td>
22083
22084             <td class="entry_range">
22085               <p>Hue &gt;= 1,<wbr/>
22086 Saturation &gt;= 2,<wbr/>
22087 Value &gt;= 1</p>
22088             </td>
22089
22090             <td class="entry_hal_version">
22091               <p>3.<wbr/>2</p>
22092             </td>
22093
22094             <td class="entry_tags">
22095               <ul class="entry_tags">
22096                   <li><a href="#tag_RAW">RAW</a></li>
22097               </ul>
22098             </td>
22099
22100           </tr>
22101           <tr class="entries_header">
22102             <th class="th_details" colspan="6">Details</th>
22103           </tr>
22104           <tr class="entry_cont">
22105             <td class="entry_details" colspan="6">
22106               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22107 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
22108 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22109 element.<wbr/></p>
22110             </td>
22111           </tr>
22112
22113
22114           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22115            <!-- end of entry -->
22116         
22117                 
22118           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22119             <td class="entry_name
22120              " rowspan="5">
22121               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22122             </td>
22123             <td class="entry_type">
22124                 <span class="entry_type_name">int32</span>
22125                 <span class="entry_type_container">x</span>
22126
22127                 <span class="entry_type_array">
22128                   n
22129                 </span>
22130               <span class="entry_type_visibility"> [public]</span>
22131
22132
22133
22134
22135                 <div class="entry_type_notes">list of enums</div>
22136
22137
22138             </td> <!-- entry_type -->
22139
22140             <td class="entry_description">
22141               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22142 supported by this camera device.<wbr/></p>
22143             </td>
22144
22145             <td class="entry_units">
22146             </td>
22147
22148             <td class="entry_range">
22149               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22150             </td>
22151
22152             <td class="entry_hal_version">
22153               <p>3.<wbr/>2</p>
22154             </td>
22155
22156             <td class="entry_tags">
22157             </td>
22158
22159           </tr>
22160           <tr class="entries_header">
22161             <th class="th_details" colspan="6">Details</th>
22162           </tr>
22163           <tr class="entry_cont">
22164             <td class="entry_details" colspan="6">
22165               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22166             </td>
22167           </tr>
22168
22169           <tr class="entries_header">
22170             <th class="th_details" colspan="6">HAL Implementation Details</th>
22171           </tr>
22172           <tr class="entry_cont">
22173             <td class="entry_details" colspan="6">
22174               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
22175             </td>
22176           </tr>
22177
22178           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22179            <!-- end of entry -->
22180         
22181                 
22182           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22183             <td class="entry_name
22184              " rowspan="5">
22185               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22186             </td>
22187             <td class="entry_type">
22188                 <span class="entry_type_name">int32</span>
22189                 <span class="entry_type_container">x</span>
22190
22191                 <span class="entry_type_array">
22192                   4 x num_regions
22193                 </span>
22194               <span class="entry_type_visibility"> [public as rectangle]</span>
22195
22196
22197
22198
22199
22200
22201             </td> <!-- entry_type -->
22202
22203             <td class="entry_description">
22204               <p>List of disjoint rectangles indicating the sensor
22205 optically shielded black pixel regions.<wbr/></p>
22206             </td>
22207
22208             <td class="entry_units">
22209             </td>
22210
22211             <td class="entry_range">
22212             </td>
22213
22214             <td class="entry_hal_version">
22215               <p>3.<wbr/>2</p>
22216             </td>
22217
22218             <td class="entry_tags">
22219             </td>
22220
22221           </tr>
22222           <tr class="entries_header">
22223             <th class="th_details" colspan="6">Details</th>
22224           </tr>
22225           <tr class="entry_cont">
22226             <td class="entry_details" colspan="6">
22227               <p>In most camera sensors,<wbr/> the active array is surrounded by some
22228 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22229 provides a reliable black reference for black level compensation
22230 in active array region.<wbr/></p>
22231 <p>This key provides a list of disjoint rectangles specifying the
22232 regions of optically shielded (with metal shield) black pixel
22233 regions if the camera device is capable of reading out these black
22234 pixels in the output raw images.<wbr/> In comparison to the fixed black
22235 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22236 may provide a more accurate way for the application to calculate
22237 black level of each captured raw images.<wbr/></p>
22238 <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
22239 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22240             </td>
22241           </tr>
22242
22243           <tr class="entries_header">
22244             <th class="th_details" colspan="6">HAL Implementation Details</th>
22245           </tr>
22246           <tr class="entry_cont">
22247             <td class="entry_details" colspan="6">
22248               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22249 must be &gt;= (0,<wbr/>0) and &lt;=
22250 <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
22251 &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
22252 outside the region reported by
22253 <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>
22254 <p>The HAL must report minimal number of disjoint regions for the
22255 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22256 be covered by one rectangle,<wbr/> the HAL must not split this region into
22257 multiple rectangles.<wbr/></p>
22258             </td>
22259           </tr>
22260
22261           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22262            <!-- end of entry -->
22263         
22264                 
22265           <tr class="entry" id="static_android.sensor.opaqueRawSize">
22266             <td class="entry_name
22267              " rowspan="5">
22268               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22269             </td>
22270             <td class="entry_type">
22271                 <span class="entry_type_name">int32</span>
22272                 <span class="entry_type_container">x</span>
22273
22274                 <span class="entry_type_array">
22275                   n x 3
22276                 </span>
22277               <span class="entry_type_visibility"> [system]</span>
22278
22279
22280
22281
22282
22283
22284             </td> <!-- entry_type -->
22285
22286             <td class="entry_description">
22287               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22288             </td>
22289
22290             <td class="entry_units">
22291             </td>
22292
22293             <td class="entry_range">
22294               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22295 the camera</p>
22296             </td>
22297
22298             <td class="entry_hal_version">
22299               <p>3.<wbr/>2</p>
22300             </td>
22301
22302             <td class="entry_tags">
22303             </td>
22304
22305           </tr>
22306           <tr class="entries_header">
22307             <th class="th_details" colspan="6">Details</th>
22308           </tr>
22309           <tr class="entry_cont">
22310             <td class="entry_details" colspan="6">
22311               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22312 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22313 All RAW_<wbr/>OPAQUE output stream configuration listed in
22314 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22315 this key.<wbr/></p>
22316             </td>
22317           </tr>
22318
22319           <tr class="entries_header">
22320             <th class="th_details" colspan="6">HAL Implementation Details</th>
22321           </tr>
22322           <tr class="entry_cont">
22323             <td class="entry_details" colspan="6">
22324               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22325 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22326 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22327 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22328 between rows.<wbr/></p>
22329             </td>
22330           </tr>
22331
22332           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22333            <!-- end of entry -->
22334         
22335         
22336
22337       <!-- end of kind -->
22338       </tbody>
22339       <tr><td colspan="7" class="kind">dynamic</td></tr>
22340
22341       <thead class="entries_header">
22342         <tr>
22343           <th class="th_name">Property Name</th>
22344           <th class="th_type">Type</th>
22345           <th class="th_description">Description</th>
22346           <th class="th_units">Units</th>
22347           <th class="th_range">Range</th>
22348           <th class="th_hal_version">Initial HIDL HAL version</th>
22349           <th class="th_tags">Tags</th>
22350         </tr>
22351       </thead>
22352
22353       <tbody>
22354
22355         
22356
22357         
22358
22359         
22360
22361         
22362
22363                 
22364           <tr class="entry" id="dynamic_android.sensor.exposureTime">
22365             <td class="entry_name
22366              " rowspan="3">
22367               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22368             </td>
22369             <td class="entry_type">
22370                 <span class="entry_type_name">int64</span>
22371
22372               <span class="entry_type_visibility"> [public]</span>
22373
22374
22375               <span class="entry_type_hwlevel">[full] </span>
22376
22377
22378
22379
22380             </td> <!-- entry_type -->
22381
22382             <td class="entry_description">
22383               <p>Duration each pixel is exposed to
22384 light.<wbr/></p>
22385             </td>
22386
22387             <td class="entry_units">
22388               Nanoseconds
22389             </td>
22390
22391             <td class="entry_range">
22392               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22393             </td>
22394
22395             <td class="entry_hal_version">
22396               <p>3.<wbr/>2</p>
22397             </td>
22398
22399             <td class="entry_tags">
22400               <ul class="entry_tags">
22401                   <li><a href="#tag_V1">V1</a></li>
22402               </ul>
22403             </td>
22404
22405           </tr>
22406           <tr class="entries_header">
22407             <th class="th_details" colspan="6">Details</th>
22408           </tr>
22409           <tr class="entry_cont">
22410             <td class="entry_details" colspan="6">
22411               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22412 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22413 The final exposure time used will be available in the output capture result.<wbr/></p>
22414 <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
22415 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22416             </td>
22417           </tr>
22418
22419
22420           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22421            <!-- end of entry -->
22422         
22423                 
22424           <tr class="entry" id="dynamic_android.sensor.frameDuration">
22425             <td class="entry_name
22426              " rowspan="5">
22427               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22428             </td>
22429             <td class="entry_type">
22430                 <span class="entry_type_name">int64</span>
22431
22432               <span class="entry_type_visibility"> [public]</span>
22433
22434
22435               <span class="entry_type_hwlevel">[full] </span>
22436
22437
22438
22439
22440             </td> <!-- entry_type -->
22441
22442             <td class="entry_description">
22443               <p>Duration from start of frame exposure to
22444 start of next frame exposure.<wbr/></p>
22445             </td>
22446
22447             <td class="entry_units">
22448               Nanoseconds
22449             </td>
22450
22451             <td class="entry_range">
22452               <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/>
22453 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22454             </td>
22455
22456             <td class="entry_hal_version">
22457               <p>3.<wbr/>2</p>
22458             </td>
22459
22460             <td class="entry_tags">
22461               <ul class="entry_tags">
22462                   <li><a href="#tag_V1">V1</a></li>
22463               </ul>
22464             </td>
22465
22466           </tr>
22467           <tr class="entries_header">
22468             <th class="th_details" colspan="6">Details</th>
22469           </tr>
22470           <tr class="entry_cont">
22471             <td class="entry_details" colspan="6">
22472               <p>The maximum frame rate that can be supported by a camera subsystem is
22473 a function of many factors:</p>
22474 <ul>
22475 <li>Requested resolutions of output image streams</li>
22476 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22477 <li>The bandwidth of the imager interface</li>
22478 <li>The bandwidth of the various ISP processing blocks</li>
22479 </ul>
22480 <p>Since these factors can vary greatly between different ISPs and
22481 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22482 restrictions with as simple a model as possible.<wbr/></p>
22483 <p>The model presented has the following characteristics:</p>
22484 <ul>
22485 <li>The image sensor is always configured to output the smallest
22486 resolution possible given the application's requested output stream
22487 sizes.<wbr/>  The smallest resolution is defined as being at least as large
22488 as the largest requested output stream size; the camera pipeline must
22489 never digitally upsample sensor data when the crop region covers the
22490 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22491 resolutions are configured,<wbr/> the sensor can provide a higher frame
22492 rate.<wbr/></li>
22493 <li>Since any request may use any or all the currently configured
22494 output streams,<wbr/> the sensor and ISP must be configured to support
22495 scaling a single capture to all the streams at the same time.<wbr/>  This
22496 means the camera pipeline must be ready to produce the largest
22497 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22498 frame rate of a given configured stream set is governed only by the
22499 largest requested stream resolution.<wbr/></li>
22500 <li>Using more than one output stream in a request does not affect the
22501 frame duration.<wbr/></li>
22502 <li>Certain format-streams may need to do additional background processing
22503 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22504 can run concurrently to the rest of the camera pipeline,<wbr/> but
22505 cannot process more than 1 capture at a time.<wbr/></li>
22506 </ul>
22507 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22508 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22509 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22510 possible for a given stream configuration.<wbr/></p>
22511 <p>Specifically,<wbr/> the application can use the following rules to
22512 determine the minimum frame duration it can request from the camera
22513 device:</p>
22514 <ol>
22515 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22516 <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>
22517 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22518 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22519 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>
22520 </ol>
22521 <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>
22522 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22523 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22524 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22525 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22526 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22527 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22528 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22529 <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>
22530 <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
22531 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22532             </td>
22533           </tr>
22534
22535           <tr class="entries_header">
22536             <th class="th_details" colspan="6">HAL Implementation Details</th>
22537           </tr>
22538           <tr class="entry_cont">
22539             <td class="entry_details" colspan="6">
22540               <p>For more details about stalling,<wbr/> see
22541 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22542             </td>
22543           </tr>
22544
22545           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22546            <!-- end of entry -->
22547         
22548                 
22549           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22550             <td class="entry_name
22551              " rowspan="5">
22552               android.<wbr/>sensor.<wbr/>sensitivity
22553             </td>
22554             <td class="entry_type">
22555                 <span class="entry_type_name">int32</span>
22556
22557               <span class="entry_type_visibility"> [public]</span>
22558
22559
22560               <span class="entry_type_hwlevel">[full] </span>
22561
22562
22563
22564
22565             </td> <!-- entry_type -->
22566
22567             <td class="entry_description">
22568               <p>The amount of gain applied to sensor data
22569 before processing.<wbr/></p>
22570             </td>
22571
22572             <td class="entry_units">
22573               ISO arithmetic units
22574             </td>
22575
22576             <td class="entry_range">
22577               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22578             </td>
22579
22580             <td class="entry_hal_version">
22581               <p>3.<wbr/>2</p>
22582             </td>
22583
22584             <td class="entry_tags">
22585               <ul class="entry_tags">
22586                   <li><a href="#tag_V1">V1</a></li>
22587               </ul>
22588             </td>
22589
22590           </tr>
22591           <tr class="entries_header">
22592             <th class="th_details" colspan="6">Details</th>
22593           </tr>
22594           <tr class="entry_cont">
22595             <td class="entry_details" colspan="6">
22596               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22597 as defined in ISO 12232:2006.<wbr/></p>
22598 <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
22599 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
22600 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22601 <p>If the camera device cannot apply the exact sensitivity
22602 requested,<wbr/> it will reduce the gain to the nearest supported
22603 value.<wbr/> The final sensitivity used will be available in the
22604 output capture result.<wbr/></p>
22605 <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
22606 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22607             </td>
22608           </tr>
22609
22610           <tr class="entries_header">
22611             <th class="th_details" colspan="6">HAL Implementation Details</th>
22612           </tr>
22613           <tr class="entry_cont">
22614             <td class="entry_details" colspan="6">
22615               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22616             </td>
22617           </tr>
22618
22619           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22620            <!-- end of entry -->
22621         
22622                 
22623           <tr class="entry" id="dynamic_android.sensor.timestamp">
22624             <td class="entry_name
22625              " rowspan="5">
22626               android.<wbr/>sensor.<wbr/>timestamp
22627             </td>
22628             <td class="entry_type">
22629                 <span class="entry_type_name">int64</span>
22630
22631               <span class="entry_type_visibility"> [public]</span>
22632
22633
22634               <span class="entry_type_hwlevel">[legacy] </span>
22635
22636
22637
22638
22639             </td> <!-- entry_type -->
22640
22641             <td class="entry_description">
22642               <p>Time at start of exposure of first
22643 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22644             </td>
22645
22646             <td class="entry_units">
22647               Nanoseconds
22648             </td>
22649
22650             <td class="entry_range">
22651               <p>&gt; 0</p>
22652             </td>
22653
22654             <td class="entry_hal_version">
22655               <p>3.<wbr/>2</p>
22656             </td>
22657
22658             <td class="entry_tags">
22659               <ul class="entry_tags">
22660                   <li><a href="#tag_BC">BC</a></li>
22661               </ul>
22662             </td>
22663
22664           </tr>
22665           <tr class="entries_header">
22666             <th class="th_details" colspan="6">Details</th>
22667           </tr>
22668           <tr class="entry_cont">
22669             <td class="entry_details" colspan="6">
22670               <p>The timestamps are also included in all image
22671 buffers produced for the same capture,<wbr/> and will be identical
22672 on all the outputs.<wbr/></p>
22673 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22674 the timestamps measure time since an unspecified starting point,<wbr/>
22675 and are monotonically increasing.<wbr/> They can be compared with the
22676 timestamps for other captures from the same camera device,<wbr/> but are
22677 not guaranteed to be comparable to any other time source.<wbr/></p>
22678 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22679 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
22680 be compared to other timestamps from other subsystems that
22681 are using that base.<wbr/></p>
22682 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22683 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22684 timestamp</a> in the TotalCaptureResult that was used to create the
22685 reprocess capture request.<wbr/></p>
22686             </td>
22687           </tr>
22688
22689           <tr class="entries_header">
22690             <th class="th_details" colspan="6">HAL Implementation Details</th>
22691           </tr>
22692           <tr class="entry_cont">
22693             <td class="entry_details" colspan="6">
22694               <p>All timestamps must be in reference to the kernel's
22695 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22696 time spent asleep.<wbr/> This allows for synchronization with
22697 sensors that continue to operate while the system is
22698 otherwise asleep.<wbr/></p>
22699 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22700 The timestamp must be synchronized with the timestamps from other
22701 sensor subsystems that are using the same timebase.<wbr/></p>
22702 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22703 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22704 capture request.<wbr/></p>
22705             </td>
22706           </tr>
22707
22708           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22709            <!-- end of entry -->
22710         
22711                 
22712           <tr class="entry" id="dynamic_android.sensor.temperature">
22713             <td class="entry_name
22714              " rowspan="1">
22715               android.<wbr/>sensor.<wbr/>temperature
22716             </td>
22717             <td class="entry_type">
22718                 <span class="entry_type_name">float</span>
22719
22720               <span class="entry_type_visibility"> [system]</span>
22721
22722
22723
22724
22725
22726
22727             </td> <!-- entry_type -->
22728
22729             <td class="entry_description">
22730               <p>The temperature of the sensor,<wbr/> sampled at the time
22731 exposure began for this frame.<wbr/></p>
22732 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22733 somewhere close to it.<wbr/></p>
22734             </td>
22735
22736             <td class="entry_units">
22737               Celsius
22738             </td>
22739
22740             <td class="entry_range">
22741               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22742             </td>
22743
22744             <td class="entry_hal_version">
22745               <p>3.<wbr/>2</p>
22746             </td>
22747
22748             <td class="entry_tags">
22749               <ul class="entry_tags">
22750                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22751               </ul>
22752             </td>
22753
22754           </tr>
22755
22756
22757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22758            <!-- end of entry -->
22759         
22760                 
22761           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22762             <td class="entry_name
22763              " rowspan="3">
22764               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22765             </td>
22766             <td class="entry_type">
22767                 <span class="entry_type_name">rational</span>
22768                 <span class="entry_type_container">x</span>
22769
22770                 <span class="entry_type_array">
22771                   3
22772                 </span>
22773               <span class="entry_type_visibility"> [public]</span>
22774
22775
22776
22777
22778
22779
22780             </td> <!-- entry_type -->
22781
22782             <td class="entry_description">
22783               <p>The estimated camera neutral color in the native sensor colorspace at
22784 the time of capture.<wbr/></p>
22785             </td>
22786
22787             <td class="entry_units">
22788             </td>
22789
22790             <td class="entry_range">
22791             </td>
22792
22793             <td class="entry_hal_version">
22794               <p>3.<wbr/>2</p>
22795             </td>
22796
22797             <td class="entry_tags">
22798               <ul class="entry_tags">
22799                   <li><a href="#tag_RAW">RAW</a></li>
22800               </ul>
22801             </td>
22802
22803           </tr>
22804           <tr class="entries_header">
22805             <th class="th_details" colspan="6">Details</th>
22806           </tr>
22807           <tr class="entry_cont">
22808             <td class="entry_details" colspan="6">
22809               <p>This value gives the neutral color point encoded as an RGB value in the
22810 native sensor color space.<wbr/>  The neutral color point indicates the
22811 currently estimated white point of the scene illumination.<wbr/>  It can be
22812 used to interpolate between the provided color transforms when
22813 processing raw sensor data.<wbr/></p>
22814 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22815             </td>
22816           </tr>
22817
22818
22819           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22820            <!-- end of entry -->
22821         
22822                 
22823           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22824             <td class="entry_name
22825              " rowspan="5">
22826               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22827             </td>
22828             <td class="entry_type">
22829                 <span class="entry_type_name">double</span>
22830                 <span class="entry_type_container">x</span>
22831
22832                 <span class="entry_type_array">
22833                   2 x CFA Channels
22834                 </span>
22835               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22836
22837
22838
22839
22840                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22841
22842
22843             </td> <!-- entry_type -->
22844
22845             <td class="entry_description">
22846               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22847             </td>
22848
22849             <td class="entry_units">
22850             </td>
22851
22852             <td class="entry_range">
22853             </td>
22854
22855             <td class="entry_hal_version">
22856               <p>3.<wbr/>2</p>
22857             </td>
22858
22859             <td class="entry_tags">
22860               <ul class="entry_tags">
22861                   <li><a href="#tag_RAW">RAW</a></li>
22862               </ul>
22863             </td>
22864
22865           </tr>
22866           <tr class="entries_header">
22867             <th class="th_details" colspan="6">Details</th>
22868           </tr>
22869           <tr class="entry_cont">
22870             <td class="entry_details" colspan="6">
22871               <p>This key contains two noise model coefficients for each CFA channel
22872 corresponding to the sensor amplification (S) and sensor readout
22873 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22874 in the same order as channels listed for the CFA layout key
22875 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22876 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22877 the first member of the Pair at index n is the S coefficient and the
22878 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22879 <p>These coefficients are used in a two parameter noise model to describe
22880 the amount of noise present in the image for each CFA channel.<wbr/>  The
22881 noise model used here is:</p>
22882 <p>N(x) = sqrt(Sx + O)</p>
22883 <p>Where x represents the recorded signal of a CFA channel normalized to
22884 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22885 that channel.<wbr/></p>
22886 <p>A more detailed description of the noise model can be found in the
22887 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22888             </td>
22889           </tr>
22890
22891           <tr class="entries_header">
22892             <th class="th_details" colspan="6">HAL Implementation Details</th>
22893           </tr>
22894           <tr class="entry_cont">
22895             <td class="entry_details" colspan="6">
22896               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22897 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22898 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22899 channel,<wbr/> etc.<wbr/></p>
22900             </td>
22901           </tr>
22902
22903           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22904            <!-- end of entry -->
22905         
22906                 
22907           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22908             <td class="entry_name
22909              " rowspan="3">
22910               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22911             </td>
22912             <td class="entry_type">
22913                 <span class="entry_type_name">float</span>
22914                 <span class="entry_type_container">x</span>
22915
22916                 <span class="entry_type_array">
22917                   hue_samples x saturation_samples x value_samples x 3
22918                 </span>
22919               <span class="entry_type_visibility"> [system]</span>
22920
22921
22922
22923
22924                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22925
22926
22927             </td> <!-- entry_type -->
22928
22929             <td class="entry_description">
22930               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22931 for each pixel.<wbr/></p>
22932             </td>
22933
22934             <td class="entry_units">
22935               
22936           The hue shift is given in degrees; saturation and value scale factors are
22937           unitless and are between 0 and 1 inclusive
22938           
22939             </td>
22940
22941             <td class="entry_range">
22942             </td>
22943
22944             <td class="entry_hal_version">
22945               <p>3.<wbr/>2</p>
22946             </td>
22947
22948             <td class="entry_tags">
22949               <ul class="entry_tags">
22950                   <li><a href="#tag_RAW">RAW</a></li>
22951               </ul>
22952             </td>
22953
22954           </tr>
22955           <tr class="entries_header">
22956             <th class="th_details" colspan="6">Details</th>
22957           </tr>
22958           <tr class="entry_cont">
22959             <td class="entry_details" colspan="6">
22960               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22961 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22962 <p>Each entry of this map contains three floats corresponding to the
22963 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22964 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22965 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22966 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22967 inner loop.<wbr/> All zero input saturation entries are required to have a
22968 value scale factor of 1.<wbr/>0.<wbr/></p>
22969             </td>
22970           </tr>
22971
22972
22973           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22974            <!-- end of entry -->
22975         
22976                 
22977           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22978             <td class="entry_name
22979              " rowspan="3">
22980               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22981             </td>
22982             <td class="entry_type">
22983                 <span class="entry_type_name">float</span>
22984                 <span class="entry_type_container">x</span>
22985
22986                 <span class="entry_type_array">
22987                   samples x 2
22988                 </span>
22989               <span class="entry_type_visibility"> [system]</span>
22990
22991
22992
22993
22994                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22995
22996
22997             </td> <!-- entry_type -->
22998
22999             <td class="entry_description">
23000               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
23001             </td>
23002
23003             <td class="entry_units">
23004             </td>
23005
23006             <td class="entry_range">
23007               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
23008 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
23009 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
23010             </td>
23011
23012             <td class="entry_hal_version">
23013               <p>3.<wbr/>2</p>
23014             </td>
23015
23016             <td class="entry_tags">
23017               <ul class="entry_tags">
23018                   <li><a href="#tag_RAW">RAW</a></li>
23019               </ul>
23020             </td>
23021
23022           </tr>
23023           <tr class="entries_header">
23024             <th class="th_details" colspan="6">Details</th>
23025           </tr>
23026           <tr class="entry_cont">
23027             <td class="entry_details" colspan="6">
23028               <p>This key contains a default tone curve that can be applied while
23029 processing the image as a starting point for user adjustments.<wbr/>
23030 The curve is specified as a list of value pairs in linear gamma.<wbr/>
23031 The curve is interpolated using a cubic spline.<wbr/></p>
23032             </td>
23033           </tr>
23034
23035
23036           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23037            <!-- end of entry -->
23038         
23039                 
23040           <tr class="entry" id="dynamic_android.sensor.greenSplit">
23041             <td class="entry_name
23042              " rowspan="5">
23043               android.<wbr/>sensor.<wbr/>green<wbr/>Split
23044             </td>
23045             <td class="entry_type">
23046                 <span class="entry_type_name">float</span>
23047
23048               <span class="entry_type_visibility"> [public]</span>
23049
23050
23051
23052
23053
23054
23055             </td> <!-- entry_type -->
23056
23057             <td class="entry_description">
23058               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23059             </td>
23060
23061             <td class="entry_units">
23062             </td>
23063
23064             <td class="entry_range">
23065               <p>&gt;= 0</p>
23066             </td>
23067
23068             <td class="entry_hal_version">
23069               <p>3.<wbr/>2</p>
23070             </td>
23071
23072             <td class="entry_tags">
23073               <ul class="entry_tags">
23074                   <li><a href="#tag_RAW">RAW</a></li>
23075               </ul>
23076             </td>
23077
23078           </tr>
23079           <tr class="entries_header">
23080             <th class="th_details" colspan="6">Details</th>
23081           </tr>
23082           <tr class="entry_cont">
23083             <td class="entry_details" colspan="6">
23084               <p>This value is an estimate of the worst case split between the
23085 Bayer green channels in the red and blue rows in the sensor color
23086 filter array.<wbr/></p>
23087 <p>The green split is calculated as follows:</p>
23088 <ol>
23089 <li>A 5x5 pixel (or larger) window W within the active sensor array is
23090 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23091 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
23092 chosen is implementation defined,<wbr/> and should be chosen to provide a
23093 green split estimate that is both representative of the entire image
23094 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23095 <li>The arithmetic mean of the green channels from the red
23096 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23097 <li>The arithmetic mean of the green channels from the blue
23098 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23099 <li>The maximum ratio R of the two means is computed as follows:
23100 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23101 </ol>
23102 <p>The ratio R is the green split divergence reported for this property,<wbr/>
23103 which represents how much the green channels differ in the mosaic
23104 pattern.<wbr/>  This value is typically used to determine the treatment of
23105 the green mosaic channels when demosaicing.<wbr/></p>
23106 <p>The green split value can be roughly interpreted as follows:</p>
23107 <ul>
23108 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
23109 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
23110 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23111 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
23112 a usuable image (&gt;20% divergence).<wbr/></li>
23113 </ul>
23114             </td>
23115           </tr>
23116
23117           <tr class="entries_header">
23118             <th class="th_details" colspan="6">HAL Implementation Details</th>
23119           </tr>
23120           <tr class="entry_cont">
23121             <td class="entry_details" colspan="6">
23122               <p>The green split given may be a static value based on prior
23123 characterization of the camera sensor using the green split
23124 calculation method given here over a large,<wbr/> representative,<wbr/> sample
23125 set of images.<wbr/>  Other methods of calculation that produce equivalent
23126 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23127             </td>
23128           </tr>
23129
23130           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23131            <!-- end of entry -->
23132         
23133                 
23134           <tr class="entry" id="dynamic_android.sensor.testPatternData">
23135             <td class="entry_name
23136              " rowspan="5">
23137               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23138             </td>
23139             <td class="entry_type">
23140                 <span class="entry_type_name">int32</span>
23141                 <span class="entry_type_container">x</span>
23142
23143                 <span class="entry_type_array">
23144                   4
23145                 </span>
23146               <span class="entry_type_visibility"> [public]</span>
23147
23148
23149
23150
23151
23152
23153             </td> <!-- entry_type -->
23154
23155             <td class="entry_description">
23156               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23157 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23158             </td>
23159
23160             <td class="entry_units">
23161             </td>
23162
23163             <td class="entry_range">
23164             </td>
23165
23166             <td class="entry_hal_version">
23167               <p>3.<wbr/>2</p>
23168             </td>
23169
23170             <td class="entry_tags">
23171             </td>
23172
23173           </tr>
23174           <tr class="entries_header">
23175             <th class="th_details" colspan="6">Details</th>
23176           </tr>
23177           <tr class="entry_cont">
23178             <td class="entry_details" colspan="6">
23179               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23180 The camera device then uses the most significant X bits
23181 that correspond to how many bits are in its Bayer raw sensor
23182 output.<wbr/></p>
23183 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
23184 10 most significant bits from each color channel.<wbr/></p>
23185             </td>
23186           </tr>
23187
23188           <tr class="entries_header">
23189             <th class="th_details" colspan="6">HAL Implementation Details</th>
23190           </tr>
23191           <tr class="entry_cont">
23192             <td class="entry_details" colspan="6">
23193               
23194             </td>
23195           </tr>
23196
23197           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23198            <!-- end of entry -->
23199         
23200                 
23201           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23202             <td class="entry_name
23203              " rowspan="5">
23204               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23205             </td>
23206             <td class="entry_type">
23207                 <span class="entry_type_name entry_type_name_enum">int32</span>
23208
23209               <span class="entry_type_visibility"> [public]</span>
23210
23211
23212
23213
23214
23215                 <ul class="entry_type_enum">
23216                   <li>
23217                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23218                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23219 device returns captures from the image sensor.<wbr/></p>
23220 <p>This is the default if the key is not set.<wbr/></p></span>
23221                   </li>
23222                   <li>
23223                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23224                     <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
23225 respective color channel provided in
23226 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23227 <p>For example:</p>
23228 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23229 </code></pre>
23230 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23231 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23232 </code></pre>
23233 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23234 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23235                   </li>
23236                   <li>
23237                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23238                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23239 <p>The vertical bars (left-to-right) are as follows:</p>
23240 <ul>
23241 <li>100% white</li>
23242 <li>yellow</li>
23243 <li>cyan</li>
23244 <li>green</li>
23245 <li>magenta</li>
23246 <li>red</li>
23247 <li>blue</li>
23248 <li>black</li>
23249 </ul>
23250 <p>In general the image would look like the following:</p>
23251 <pre><code>W Y C G M R B K
23252 W Y C G M R B K
23253 W Y C G M R B K
23254 W Y C G M R B K
23255 W Y C G M R B K
23256 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23257 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23258 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23259
23260 (B = Blue,<wbr/> K = Black)
23261 </code></pre>
23262 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23263 When this is not possible,<wbr/> the bar size should be rounded
23264 down to the nearest integer and the pattern can repeat
23265 on the right side.<wbr/></p>
23266 <p>Each bar's height must always take up the full sensor
23267 pixel array height.<wbr/></p>
23268 <p>Each pixel in this test pattern must be set to either
23269 0% intensity or 100% intensity.<wbr/></p></span>
23270                   </li>
23271                   <li>
23272                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23273                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23274 each bar should start at its specified color at the top,<wbr/>
23275 and fade to gray at the bottom.<wbr/></p>
23276 <p>Furthermore each bar is further subdivided into a left and
23277 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23278 and the right half should have a quantized gradient.<wbr/></p>
23279 <p>In particular,<wbr/> the right half's should consist of blocks of the
23280 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23281 <p>The least significant bits in the quantized gradient should
23282 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23283 <p>The height of each bar should always be a multiple of 128.<wbr/>
23284 When this is not the case,<wbr/> the pattern should repeat at the bottom
23285 of the image.<wbr/></p></span>
23286                   </li>
23287                   <li>
23288                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
23289                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23290 generated from a PN9 512-bit sequence (typically implemented
23291 in hardware with a linear feedback shift register).<wbr/></p>
23292 <p>The generator should be reset at the beginning of each frame,<wbr/>
23293 and thus each subsequent raw frame with this test pattern should
23294 be exactly the same as the last.<wbr/></p></span>
23295                   </li>
23296                   <li>
23297                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23298                     <span class="entry_type_enum_value">256</span>
23299                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23300 available only on this camera device are at least this numeric
23301 value.<wbr/></p>
23302 <p>All of the custom test patterns will be static
23303 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23304                   </li>
23305                 </ul>
23306
23307             </td> <!-- entry_type -->
23308
23309             <td class="entry_description">
23310               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23311 doing a real exposure from the camera.<wbr/></p>
23312             </td>
23313
23314             <td class="entry_units">
23315             </td>
23316
23317             <td class="entry_range">
23318               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23319             </td>
23320
23321             <td class="entry_hal_version">
23322               <p>3.<wbr/>2</p>
23323             </td>
23324
23325             <td class="entry_tags">
23326             </td>
23327
23328           </tr>
23329           <tr class="entries_header">
23330             <th class="th_details" colspan="6">Details</th>
23331           </tr>
23332           <tr class="entry_cont">
23333             <td class="entry_details" colspan="6">
23334               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23335 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23336 work as normal.<wbr/></p>
23337 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23338 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23339 would not actually affect it).<wbr/></p>
23340 <p>Defaults to OFF.<wbr/></p>
23341             </td>
23342           </tr>
23343
23344           <tr class="entries_header">
23345             <th class="th_details" colspan="6">HAL Implementation Details</th>
23346           </tr>
23347           <tr class="entry_cont">
23348             <td class="entry_details" colspan="6">
23349               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23350 <p>The HAL may choose to substitute test patterns from the sensor
23351 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23352 indistinguishable to the ISP whether the data came from the
23353 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23354             </td>
23355           </tr>
23356
23357           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23358            <!-- end of entry -->
23359         
23360                 
23361           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23362             <td class="entry_name
23363              " rowspan="5">
23364               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23365             </td>
23366             <td class="entry_type">
23367                 <span class="entry_type_name">int64</span>
23368
23369               <span class="entry_type_visibility"> [public]</span>
23370
23371
23372               <span class="entry_type_hwlevel">[limited] </span>
23373
23374
23375
23376
23377             </td> <!-- entry_type -->
23378
23379             <td class="entry_description">
23380               <p>Duration between the start of first row exposure
23381 and the start of last row exposure.<wbr/></p>
23382             </td>
23383
23384             <td class="entry_units">
23385               Nanoseconds
23386             </td>
23387
23388             <td class="entry_range">
23389               <p>&gt;= 0 and &lt;
23390 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23391             </td>
23392
23393             <td class="entry_hal_version">
23394               <p>3.<wbr/>2</p>
23395             </td>
23396
23397             <td class="entry_tags">
23398               <ul class="entry_tags">
23399                   <li><a href="#tag_V1">V1</a></li>
23400               </ul>
23401             </td>
23402
23403           </tr>
23404           <tr class="entries_header">
23405             <th class="th_details" colspan="6">Details</th>
23406           </tr>
23407           <tr class="entry_cont">
23408             <td class="entry_details" colspan="6">
23409               <p>This is the exposure time skew between the first and last
23410 row exposure start times.<wbr/> The first row and the last row are
23411 the first and last rows inside of the
23412 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23413 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23414 to the frame readout time.<wbr/></p>
23415             </td>
23416           </tr>
23417
23418           <tr class="entries_header">
23419             <th class="th_details" colspan="6">HAL Implementation Details</th>
23420           </tr>
23421           <tr class="entry_cont">
23422             <td class="entry_details" colspan="6">
23423               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23424 exposure at the same time.<wbr/></p>
23425             </td>
23426           </tr>
23427
23428           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23429            <!-- end of entry -->
23430         
23431                 
23432           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23433             <td class="entry_name
23434              " rowspan="5">
23435               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23436             </td>
23437             <td class="entry_type">
23438                 <span class="entry_type_name">float</span>
23439                 <span class="entry_type_container">x</span>
23440
23441                 <span class="entry_type_array">
23442                   4
23443                 </span>
23444               <span class="entry_type_visibility"> [public]</span>
23445
23446
23447
23448
23449                 <div class="entry_type_notes">2x2 raw count block</div>
23450
23451
23452             </td> <!-- entry_type -->
23453
23454             <td class="entry_description">
23455               <p>A per-frame dynamic black level offset for each of the color filter
23456 arrangement (CFA) mosaic channels.<wbr/></p>
23457             </td>
23458
23459             <td class="entry_units">
23460             </td>
23461
23462             <td class="entry_range">
23463               <p>&gt;= 0 for each.<wbr/></p>
23464             </td>
23465
23466             <td class="entry_hal_version">
23467               <p>3.<wbr/>2</p>
23468             </td>
23469
23470             <td class="entry_tags">
23471               <ul class="entry_tags">
23472                   <li><a href="#tag_RAW">RAW</a></li>
23473               </ul>
23474             </td>
23475
23476           </tr>
23477           <tr class="entries_header">
23478             <th class="th_details" colspan="6">Details</th>
23479           </tr>
23480           <tr class="entry_cont">
23481             <td class="entry_details" colspan="6">
23482               <p>Camera sensor black levels may vary dramatically for different
23483 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23484 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23485 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23486 camera device internal pipeline relies on reliable black level values
23487 to process the raw images appropriately.<wbr/> To get the best image
23488 quality,<wbr/> the camera device may choose to estimate the per frame black
23489 level values either based on optically shielded black regions
23490 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23491 <p>This key reports the camera device estimated per-frame zero light
23492 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23493 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23494 approximation of the actual black level values.<wbr/> This value is the
23495 black level used in camera device internal image processing pipeline
23496 and generally more accurate than the fixed black level values.<wbr/>
23497 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23498 may not be as accurate as the black level values calculated from the
23499 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23500 <p>The values are given in the same order as channels listed for the CFA
23501 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
23502 nth value given corresponds to the black level offset for the nth
23503 color channel listed in the CFA.<wbr/></p>
23504 <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
23505 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23506             </td>
23507           </tr>
23508
23509           <tr class="entries_header">
23510             <th class="th_details" colspan="6">HAL Implementation Details</th>
23511           </tr>
23512           <tr class="entry_cont">
23513             <td class="entry_details" colspan="6">
23514               <p>The values are given in row-column scan order,<wbr/> with the first value
23515 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23516             </td>
23517           </tr>
23518
23519           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23520            <!-- end of entry -->
23521         
23522                 
23523           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23524             <td class="entry_name
23525              " rowspan="5">
23526               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23527             </td>
23528             <td class="entry_type">
23529                 <span class="entry_type_name">int32</span>
23530
23531               <span class="entry_type_visibility"> [public]</span>
23532
23533
23534
23535
23536
23537
23538             </td> <!-- entry_type -->
23539
23540             <td class="entry_description">
23541               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23542             </td>
23543
23544             <td class="entry_units">
23545             </td>
23546
23547             <td class="entry_range">
23548               <p>&gt;= 0</p>
23549             </td>
23550
23551             <td class="entry_hal_version">
23552               <p>3.<wbr/>2</p>
23553             </td>
23554
23555             <td class="entry_tags">
23556               <ul class="entry_tags">
23557                   <li><a href="#tag_RAW">RAW</a></li>
23558               </ul>
23559             </td>
23560
23561           </tr>
23562           <tr class="entries_header">
23563             <th class="th_details" colspan="6">Details</th>
23564           </tr>
23565           <tr class="entry_cont">
23566             <td class="entry_details" colspan="6">
23567               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23568 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23569 level will change accordingly.<wbr/> This key is similar to
23570 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23571 estimated white level for each frame.<wbr/></p>
23572 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23573 available or the camera device advertises this key via
23574 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23575             </td>
23576           </tr>
23577
23578           <tr class="entries_header">
23579             <th class="th_details" colspan="6">HAL Implementation Details</th>
23580           </tr>
23581           <tr class="entry_cont">
23582             <td class="entry_details" colspan="6">
23583               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23584 so the value for linear sensors should not be significantly lower
23585 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23586             </td>
23587           </tr>
23588
23589           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23590            <!-- end of entry -->
23591         
23592         
23593
23594       <!-- end of kind -->
23595       </tbody>
23596
23597   <!-- end of section -->
23598   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23599
23600
23601       <tr><td colspan="7" class="kind">controls</td></tr>
23602
23603       <thead class="entries_header">
23604         <tr>
23605           <th class="th_name">Property Name</th>
23606           <th class="th_type">Type</th>
23607           <th class="th_description">Description</th>
23608           <th class="th_units">Units</th>
23609           <th class="th_range">Range</th>
23610           <th class="th_hal_version">Initial HIDL HAL version</th>
23611           <th class="th_tags">Tags</th>
23612         </tr>
23613       </thead>
23614
23615       <tbody>
23616
23617         
23618
23619         
23620
23621         
23622
23623         
23624
23625                 
23626           <tr class="entry" id="controls_android.shading.mode">
23627             <td class="entry_name
23628              " rowspan="3">
23629               android.<wbr/>shading.<wbr/>mode
23630             </td>
23631             <td class="entry_type">
23632                 <span class="entry_type_name entry_type_name_enum">byte</span>
23633
23634               <span class="entry_type_visibility"> [public]</span>
23635
23636
23637               <span class="entry_type_hwlevel">[full] </span>
23638
23639
23640
23641                 <ul class="entry_type_enum">
23642                   <li>
23643                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23644                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23645                   </li>
23646                   <li>
23647                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23648                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23649 frame rate relative to sensor raw output</p></span>
23650                   </li>
23651                   <li>
23652                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23653                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23654 cost of possibly reduced frame rate.<wbr/></p></span>
23655                   </li>
23656                 </ul>
23657
23658             </td> <!-- entry_type -->
23659
23660             <td class="entry_description">
23661               <p>Quality of lens shading correction applied
23662 to the image data.<wbr/></p>
23663             </td>
23664
23665             <td class="entry_units">
23666             </td>
23667
23668             <td class="entry_range">
23669               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23670             </td>
23671
23672             <td class="entry_hal_version">
23673               <p>3.<wbr/>2</p>
23674             </td>
23675
23676             <td class="entry_tags">
23677             </td>
23678
23679           </tr>
23680           <tr class="entries_header">
23681             <th class="th_details" colspan="6">Details</th>
23682           </tr>
23683           <tr class="entry_cont">
23684             <td class="entry_details" colspan="6">
23685               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23686 camera device,<wbr/> and an identity lens shading map data will be provided
23687 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
23688 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23689 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
23690 map shown below:</p>
23691 <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/>
23692  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/>
23693  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/>
23694  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/>
23695  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/>
23696  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 ]
23697 </code></pre>
23698 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23699 device.<wbr/> Applications can request lens shading map data by setting
23700 <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
23701 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
23702 data will be the one applied by the camera device for this capture request.<wbr/></p>
23703 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23704 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23705 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>
23706 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23707 to be converged before using the returned shading map data.<wbr/></p>
23708             </td>
23709           </tr>
23710
23711
23712           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23713            <!-- end of entry -->
23714         
23715                 
23716           <tr class="entry" id="controls_android.shading.strength">
23717             <td class="entry_name
23718              " rowspan="1">
23719               android.<wbr/>shading.<wbr/>strength
23720             </td>
23721             <td class="entry_type">
23722                 <span class="entry_type_name">byte</span>
23723
23724               <span class="entry_type_visibility"> [system]</span>
23725
23726
23727
23728
23729
23730
23731             </td> <!-- entry_type -->
23732
23733             <td class="entry_description">
23734               <p>Control the amount of shading correction
23735 applied to the images</p>
23736             </td>
23737
23738             <td class="entry_units">
23739               unitless: 1-10; 10 is full shading
23740           compensation
23741             </td>
23742
23743             <td class="entry_range">
23744             </td>
23745
23746             <td class="entry_hal_version">
23747               <p>3.<wbr/>2</p>
23748             </td>
23749
23750             <td class="entry_tags">
23751               <ul class="entry_tags">
23752                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23753               </ul>
23754             </td>
23755
23756           </tr>
23757
23758
23759           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23760            <!-- end of entry -->
23761         
23762         
23763
23764       <!-- end of kind -->
23765       </tbody>
23766       <tr><td colspan="7" class="kind">dynamic</td></tr>
23767
23768       <thead class="entries_header">
23769         <tr>
23770           <th class="th_name">Property Name</th>
23771           <th class="th_type">Type</th>
23772           <th class="th_description">Description</th>
23773           <th class="th_units">Units</th>
23774           <th class="th_range">Range</th>
23775           <th class="th_hal_version">Initial HIDL HAL version</th>
23776           <th class="th_tags">Tags</th>
23777         </tr>
23778       </thead>
23779
23780       <tbody>
23781
23782         
23783
23784         
23785
23786         
23787
23788         
23789
23790                 
23791           <tr class="entry" id="dynamic_android.shading.mode">
23792             <td class="entry_name
23793              " rowspan="3">
23794               android.<wbr/>shading.<wbr/>mode
23795             </td>
23796             <td class="entry_type">
23797                 <span class="entry_type_name entry_type_name_enum">byte</span>
23798
23799               <span class="entry_type_visibility"> [public]</span>
23800
23801
23802               <span class="entry_type_hwlevel">[full] </span>
23803
23804
23805
23806                 <ul class="entry_type_enum">
23807                   <li>
23808                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23809                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23810                   </li>
23811                   <li>
23812                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23813                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23814 frame rate relative to sensor raw output</p></span>
23815                   </li>
23816                   <li>
23817                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23818                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23819 cost of possibly reduced frame rate.<wbr/></p></span>
23820                   </li>
23821                 </ul>
23822
23823             </td> <!-- entry_type -->
23824
23825             <td class="entry_description">
23826               <p>Quality of lens shading correction applied
23827 to the image data.<wbr/></p>
23828             </td>
23829
23830             <td class="entry_units">
23831             </td>
23832
23833             <td class="entry_range">
23834               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23835             </td>
23836
23837             <td class="entry_hal_version">
23838               <p>3.<wbr/>2</p>
23839             </td>
23840
23841             <td class="entry_tags">
23842             </td>
23843
23844           </tr>
23845           <tr class="entries_header">
23846             <th class="th_details" colspan="6">Details</th>
23847           </tr>
23848           <tr class="entry_cont">
23849             <td class="entry_details" colspan="6">
23850               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23851 camera device,<wbr/> and an identity lens shading map data will be provided
23852 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
23853 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23854 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
23855 map shown below:</p>
23856 <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/>
23857  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/>
23858  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/>
23859  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/>
23860  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/>
23861  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 ]
23862 </code></pre>
23863 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23864 device.<wbr/> Applications can request lens shading map data by setting
23865 <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
23866 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
23867 data will be the one applied by the camera device for this capture request.<wbr/></p>
23868 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23869 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23870 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>
23871 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23872 to be converged before using the returned shading map data.<wbr/></p>
23873             </td>
23874           </tr>
23875
23876
23877           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23878            <!-- end of entry -->
23879         
23880         
23881
23882       <!-- end of kind -->
23883       </tbody>
23884       <tr><td colspan="7" class="kind">static</td></tr>
23885
23886       <thead class="entries_header">
23887         <tr>
23888           <th class="th_name">Property Name</th>
23889           <th class="th_type">Type</th>
23890           <th class="th_description">Description</th>
23891           <th class="th_units">Units</th>
23892           <th class="th_range">Range</th>
23893           <th class="th_hal_version">Initial HIDL HAL version</th>
23894           <th class="th_tags">Tags</th>
23895         </tr>
23896       </thead>
23897
23898       <tbody>
23899
23900         
23901
23902         
23903
23904         
23905
23906         
23907
23908                 
23909           <tr class="entry" id="static_android.shading.availableModes">
23910             <td class="entry_name
23911              " rowspan="5">
23912               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23913             </td>
23914             <td class="entry_type">
23915                 <span class="entry_type_name">byte</span>
23916                 <span class="entry_type_container">x</span>
23917
23918                 <span class="entry_type_array">
23919                   n
23920                 </span>
23921               <span class="entry_type_visibility"> [public as enumList]</span>
23922
23923
23924               <span class="entry_type_hwlevel">[legacy] </span>
23925
23926
23927                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23928
23929
23930             </td> <!-- entry_type -->
23931
23932             <td class="entry_description">
23933               <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>
23934             </td>
23935
23936             <td class="entry_units">
23937             </td>
23938
23939             <td class="entry_range">
23940               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23941             </td>
23942
23943             <td class="entry_hal_version">
23944               <p>3.<wbr/>2</p>
23945             </td>
23946
23947             <td class="entry_tags">
23948             </td>
23949
23950           </tr>
23951           <tr class="entries_header">
23952             <th class="th_details" colspan="6">Details</th>
23953           </tr>
23954           <tr class="entry_cont">
23955             <td class="entry_details" colspan="6">
23956               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23957 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23958 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23959 LEGACY devices will always only support FAST mode.<wbr/></p>
23960             </td>
23961           </tr>
23962
23963           <tr class="entries_header">
23964             <th class="th_details" colspan="6">HAL Implementation Details</th>
23965           </tr>
23966           <tr class="entry_cont">
23967             <td class="entry_details" colspan="6">
23968               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23969 available on the camera device,<wbr/> but the underlying implementation can be the same for
23970 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23971 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23972             </td>
23973           </tr>
23974
23975           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23976            <!-- end of entry -->
23977         
23978         
23979
23980       <!-- end of kind -->
23981       </tbody>
23982
23983   <!-- end of section -->
23984   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23985
23986
23987       <tr><td colspan="7" class="kind">controls</td></tr>
23988
23989       <thead class="entries_header">
23990         <tr>
23991           <th class="th_name">Property Name</th>
23992           <th class="th_type">Type</th>
23993           <th class="th_description">Description</th>
23994           <th class="th_units">Units</th>
23995           <th class="th_range">Range</th>
23996           <th class="th_hal_version">Initial HIDL HAL version</th>
23997           <th class="th_tags">Tags</th>
23998         </tr>
23999       </thead>
24000
24001       <tbody>
24002
24003         
24004
24005         
24006
24007         
24008
24009         
24010
24011                 
24012           <tr class="entry" id="controls_android.statistics.faceDetectMode">
24013             <td class="entry_name
24014              " rowspan="5">
24015               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24016             </td>
24017             <td class="entry_type">
24018                 <span class="entry_type_name entry_type_name_enum">byte</span>
24019
24020               <span class="entry_type_visibility"> [public]</span>
24021
24022
24023               <span class="entry_type_hwlevel">[legacy] </span>
24024
24025
24026
24027                 <ul class="entry_type_enum">
24028                   <li>
24029                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24030                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24031 results.<wbr/></p></span>
24032                   </li>
24033                   <li>
24034                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24035                     <span class="entry_type_enum_optional">[optional]</span>
24036                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24037                   </li>
24038                   <li>
24039                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24040                     <span class="entry_type_enum_optional">[optional]</span>
24041                     <span class="entry_type_enum_notes"><p>Return all face
24042 metadata.<wbr/></p>
24043 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24044                   </li>
24045                 </ul>
24046
24047             </td> <!-- entry_type -->
24048
24049             <td class="entry_description">
24050               <p>Operating mode for the face detector
24051 unit.<wbr/></p>
24052             </td>
24053
24054             <td class="entry_units">
24055             </td>
24056
24057             <td class="entry_range">
24058               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24059             </td>
24060
24061             <td class="entry_hal_version">
24062               <p>3.<wbr/>2</p>
24063             </td>
24064
24065             <td class="entry_tags">
24066               <ul class="entry_tags">
24067                   <li><a href="#tag_BC">BC</a></li>
24068               </ul>
24069             </td>
24070
24071           </tr>
24072           <tr class="entries_header">
24073             <th class="th_details" colspan="6">Details</th>
24074           </tr>
24075           <tr class="entry_cont">
24076             <td class="entry_details" colspan="6">
24077               <p>Whether face detection is enabled,<wbr/> and whether it
24078 should output just the basic fields or the full set of
24079 fields.<wbr/></p>
24080             </td>
24081           </tr>
24082
24083           <tr class="entries_header">
24084             <th class="th_details" colspan="6">HAL Implementation Details</th>
24085           </tr>
24086           <tr class="entry_cont">
24087             <td class="entry_details" colspan="6">
24088               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24089 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24090 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24091 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24092             </td>
24093           </tr>
24094
24095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24096            <!-- end of entry -->
24097         
24098                 
24099           <tr class="entry" id="controls_android.statistics.histogramMode">
24100             <td class="entry_name
24101              " rowspan="1">
24102               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24103             </td>
24104             <td class="entry_type">
24105                 <span class="entry_type_name entry_type_name_enum">byte</span>
24106
24107               <span class="entry_type_visibility"> [system as boolean]</span>
24108
24109
24110
24111
24112
24113                 <ul class="entry_type_enum">
24114                   <li>
24115                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24116                   </li>
24117                   <li>
24118                     <span class="entry_type_enum_name">ON (v3.2)</span>
24119                   </li>
24120                 </ul>
24121
24122             </td> <!-- entry_type -->
24123
24124             <td class="entry_description">
24125               <p>Operating mode for histogram
24126 generation</p>
24127             </td>
24128
24129             <td class="entry_units">
24130             </td>
24131
24132             <td class="entry_range">
24133             </td>
24134
24135             <td class="entry_hal_version">
24136               <p>3.<wbr/>2</p>
24137             </td>
24138
24139             <td class="entry_tags">
24140               <ul class="entry_tags">
24141                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24142               </ul>
24143             </td>
24144
24145           </tr>
24146
24147
24148           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24149            <!-- end of entry -->
24150         
24151                 
24152           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24153             <td class="entry_name
24154              " rowspan="1">
24155               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24156             </td>
24157             <td class="entry_type">
24158                 <span class="entry_type_name entry_type_name_enum">byte</span>
24159
24160               <span class="entry_type_visibility"> [system as boolean]</span>
24161
24162
24163
24164
24165
24166                 <ul class="entry_type_enum">
24167                   <li>
24168                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24169                   </li>
24170                   <li>
24171                     <span class="entry_type_enum_name">ON (v3.2)</span>
24172                   </li>
24173                 </ul>
24174
24175             </td> <!-- entry_type -->
24176
24177             <td class="entry_description">
24178               <p>Operating mode for sharpness map
24179 generation</p>
24180             </td>
24181
24182             <td class="entry_units">
24183             </td>
24184
24185             <td class="entry_range">
24186             </td>
24187
24188             <td class="entry_hal_version">
24189               <p>3.<wbr/>2</p>
24190             </td>
24191
24192             <td class="entry_tags">
24193               <ul class="entry_tags">
24194                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24195               </ul>
24196             </td>
24197
24198           </tr>
24199
24200
24201           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24202            <!-- end of entry -->
24203         
24204                 
24205           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24206             <td class="entry_name
24207              " rowspan="3">
24208               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24209             </td>
24210             <td class="entry_type">
24211                 <span class="entry_type_name entry_type_name_enum">byte</span>
24212
24213               <span class="entry_type_visibility"> [public as boolean]</span>
24214
24215
24216
24217
24218
24219                 <ul class="entry_type_enum">
24220                   <li>
24221                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24222                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24223                   </li>
24224                   <li>
24225                     <span class="entry_type_enum_name">ON (v3.2)</span>
24226                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24227                   </li>
24228                 </ul>
24229
24230             </td> <!-- entry_type -->
24231
24232             <td class="entry_description">
24233               <p>Operating mode for hot pixel map generation.<wbr/></p>
24234             </td>
24235
24236             <td class="entry_units">
24237             </td>
24238
24239             <td class="entry_range">
24240               <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>
24241             </td>
24242
24243             <td class="entry_hal_version">
24244               <p>3.<wbr/>2</p>
24245             </td>
24246
24247             <td class="entry_tags">
24248               <ul class="entry_tags">
24249                   <li><a href="#tag_V1">V1</a></li>
24250                   <li><a href="#tag_RAW">RAW</a></li>
24251               </ul>
24252             </td>
24253
24254           </tr>
24255           <tr class="entries_header">
24256             <th class="th_details" colspan="6">Details</th>
24257           </tr>
24258           <tr class="entry_cont">
24259             <td class="entry_details" colspan="6">
24260               <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/>
24261 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24262             </td>
24263           </tr>
24264
24265
24266           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24267            <!-- end of entry -->
24268         
24269                 
24270           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24271             <td class="entry_name
24272              " rowspan="3">
24273               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24274             </td>
24275             <td class="entry_type">
24276                 <span class="entry_type_name entry_type_name_enum">byte</span>
24277
24278               <span class="entry_type_visibility"> [public]</span>
24279
24280
24281               <span class="entry_type_hwlevel">[full] </span>
24282
24283
24284
24285                 <ul class="entry_type_enum">
24286                   <li>
24287                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24288                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24289                   </li>
24290                   <li>
24291                     <span class="entry_type_enum_name">ON (v3.2)</span>
24292                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24293                   </li>
24294                 </ul>
24295
24296             </td> <!-- entry_type -->
24297
24298             <td class="entry_description">
24299               <p>Whether the camera device will output the lens
24300 shading map in output result metadata.<wbr/></p>
24301             </td>
24302
24303             <td class="entry_units">
24304             </td>
24305
24306             <td class="entry_range">
24307               <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>
24308             </td>
24309
24310             <td class="entry_hal_version">
24311               <p>3.<wbr/>2</p>
24312             </td>
24313
24314             <td class="entry_tags">
24315               <ul class="entry_tags">
24316                   <li><a href="#tag_RAW">RAW</a></li>
24317               </ul>
24318             </td>
24319
24320           </tr>
24321           <tr class="entries_header">
24322             <th class="th_details" colspan="6">Details</th>
24323           </tr>
24324           <tr class="entry_cont">
24325             <td class="entry_details" colspan="6">
24326               <p>When set to ON,<wbr/>
24327 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24328 the output result metadata.<wbr/></p>
24329 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24330             </td>
24331           </tr>
24332
24333
24334           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24335            <!-- end of entry -->
24336         
24337                 
24338           <tr class="entry" id="controls_android.statistics.oisDataMode">
24339             <td class="entry_name
24340              " rowspan="1">
24341               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24342             </td>
24343             <td class="entry_type">
24344                 <span class="entry_type_name entry_type_name_enum">byte</span>
24345
24346               <span class="entry_type_visibility"> [public]</span>
24347
24348
24349
24350
24351
24352                 <ul class="entry_type_enum">
24353                   <li>
24354                     <span class="entry_type_enum_name">OFF (v3.3)</span>
24355                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24356                   </li>
24357                   <li>
24358                     <span class="entry_type_enum_name">ON (v3.3)</span>
24359                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24360                   </li>
24361                 </ul>
24362
24363             </td> <!-- entry_type -->
24364
24365             <td class="entry_description">
24366               <p>A control for selecting whether OIS position information is included in output
24367 result metadata.<wbr/></p>
24368             </td>
24369
24370             <td class="entry_units">
24371             </td>
24372
24373             <td class="entry_range">
24374               <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24375             </td>
24376
24377             <td class="entry_hal_version">
24378               <p>3.<wbr/>3</p>
24379             </td>
24380
24381             <td class="entry_tags">
24382             </td>
24383
24384           </tr>
24385
24386
24387           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24388            <!-- end of entry -->
24389         
24390         
24391
24392       <!-- end of kind -->
24393       </tbody>
24394       <tr><td colspan="7" class="kind">static</td></tr>
24395
24396       <thead class="entries_header">
24397         <tr>
24398           <th class="th_name">Property Name</th>
24399           <th class="th_type">Type</th>
24400           <th class="th_description">Description</th>
24401           <th class="th_units">Units</th>
24402           <th class="th_range">Range</th>
24403           <th class="th_hal_version">Initial HIDL HAL version</th>
24404           <th class="th_tags">Tags</th>
24405         </tr>
24406       </thead>
24407
24408       <tbody>
24409
24410         
24411
24412         
24413
24414         
24415
24416         
24417                 
24418             
24419
24420                 
24421           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24422             <td class="entry_name
24423              " rowspan="3">
24424               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24425             </td>
24426             <td class="entry_type">
24427                 <span class="entry_type_name">byte</span>
24428                 <span class="entry_type_container">x</span>
24429
24430                 <span class="entry_type_array">
24431                   n
24432                 </span>
24433               <span class="entry_type_visibility"> [public as enumList]</span>
24434
24435
24436               <span class="entry_type_hwlevel">[legacy] </span>
24437
24438
24439                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24440
24441
24442             </td> <!-- entry_type -->
24443
24444             <td class="entry_description">
24445               <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
24446 supported by this camera device.<wbr/></p>
24447             </td>
24448
24449             <td class="entry_units">
24450             </td>
24451
24452             <td class="entry_range">
24453               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24454             </td>
24455
24456             <td class="entry_hal_version">
24457               <p>3.<wbr/>2</p>
24458             </td>
24459
24460             <td class="entry_tags">
24461             </td>
24462
24463           </tr>
24464           <tr class="entries_header">
24465             <th class="th_details" colspan="6">Details</th>
24466           </tr>
24467           <tr class="entry_cont">
24468             <td class="entry_details" colspan="6">
24469               <p>OFF is always supported.<wbr/></p>
24470             </td>
24471           </tr>
24472
24473
24474           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24475            <!-- end of entry -->
24476         
24477                 
24478           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24479             <td class="entry_name
24480              " rowspan="1">
24481               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24482             </td>
24483             <td class="entry_type">
24484                 <span class="entry_type_name">int32</span>
24485
24486               <span class="entry_type_visibility"> [system]</span>
24487
24488
24489
24490
24491
24492
24493             </td> <!-- entry_type -->
24494
24495             <td class="entry_description">
24496               <p>Number of histogram buckets
24497 supported</p>
24498             </td>
24499
24500             <td class="entry_units">
24501             </td>
24502
24503             <td class="entry_range">
24504               <p>&gt;= 64</p>
24505             </td>
24506
24507             <td class="entry_hal_version">
24508               <p>3.<wbr/>2</p>
24509             </td>
24510
24511             <td class="entry_tags">
24512               <ul class="entry_tags">
24513                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24514               </ul>
24515             </td>
24516
24517           </tr>
24518
24519
24520           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24521            <!-- end of entry -->
24522         
24523                 
24524           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24525             <td class="entry_name
24526              " rowspan="1">
24527               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24528             </td>
24529             <td class="entry_type">
24530                 <span class="entry_type_name">int32</span>
24531
24532               <span class="entry_type_visibility"> [public]</span>
24533
24534
24535               <span class="entry_type_hwlevel">[legacy] </span>
24536
24537
24538
24539
24540             </td> <!-- entry_type -->
24541
24542             <td class="entry_description">
24543               <p>The maximum number of simultaneously detectable
24544 faces.<wbr/></p>
24545             </td>
24546
24547             <td class="entry_units">
24548             </td>
24549
24550             <td class="entry_range">
24551               <p>0 for cameras without available face detection; otherwise:
24552 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24553 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
24554             </td>
24555
24556             <td class="entry_hal_version">
24557               <p>3.<wbr/>2</p>
24558             </td>
24559
24560             <td class="entry_tags">
24561               <ul class="entry_tags">
24562                   <li><a href="#tag_BC">BC</a></li>
24563               </ul>
24564             </td>
24565
24566           </tr>
24567
24568
24569           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24570            <!-- end of entry -->
24571         
24572                 
24573           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24574             <td class="entry_name
24575              " rowspan="1">
24576               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24577             </td>
24578             <td class="entry_type">
24579                 <span class="entry_type_name">int32</span>
24580
24581               <span class="entry_type_visibility"> [system]</span>
24582
24583
24584
24585
24586
24587
24588             </td> <!-- entry_type -->
24589
24590             <td class="entry_description">
24591               <p>Maximum value possible for a histogram
24592 bucket</p>
24593             </td>
24594
24595             <td class="entry_units">
24596             </td>
24597
24598             <td class="entry_range">
24599             </td>
24600
24601             <td class="entry_hal_version">
24602               <p>3.<wbr/>2</p>
24603             </td>
24604
24605             <td class="entry_tags">
24606               <ul class="entry_tags">
24607                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24608               </ul>
24609             </td>
24610
24611           </tr>
24612
24613
24614           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24615            <!-- end of entry -->
24616         
24617                 
24618           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24619             <td class="entry_name
24620              " rowspan="1">
24621               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24622             </td>
24623             <td class="entry_type">
24624                 <span class="entry_type_name">int32</span>
24625
24626               <span class="entry_type_visibility"> [system]</span>
24627
24628
24629
24630
24631
24632
24633             </td> <!-- entry_type -->
24634
24635             <td class="entry_description">
24636               <p>Maximum value possible for a sharpness map
24637 region.<wbr/></p>
24638             </td>
24639
24640             <td class="entry_units">
24641             </td>
24642
24643             <td class="entry_range">
24644             </td>
24645
24646             <td class="entry_hal_version">
24647               <p>3.<wbr/>2</p>
24648             </td>
24649
24650             <td class="entry_tags">
24651               <ul class="entry_tags">
24652                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24653               </ul>
24654             </td>
24655
24656           </tr>
24657
24658
24659           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24660            <!-- end of entry -->
24661         
24662                 
24663           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24664             <td class="entry_name
24665              " rowspan="1">
24666               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24667             </td>
24668             <td class="entry_type">
24669                 <span class="entry_type_name">int32</span>
24670                 <span class="entry_type_container">x</span>
24671
24672                 <span class="entry_type_array">
24673                   2
24674                 </span>
24675               <span class="entry_type_visibility"> [system as size]</span>
24676
24677
24678
24679
24680                 <div class="entry_type_notes">width x height</div>
24681
24682
24683             </td> <!-- entry_type -->
24684
24685             <td class="entry_description">
24686               <p>Dimensions of the sharpness
24687 map</p>
24688             </td>
24689
24690             <td class="entry_units">
24691             </td>
24692
24693             <td class="entry_range">
24694               <p>Must be at least 32 x 32</p>
24695             </td>
24696
24697             <td class="entry_hal_version">
24698               <p>3.<wbr/>2</p>
24699             </td>
24700
24701             <td class="entry_tags">
24702               <ul class="entry_tags">
24703                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24704               </ul>
24705             </td>
24706
24707           </tr>
24708
24709
24710           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24711            <!-- end of entry -->
24712         
24713                 
24714           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24715             <td class="entry_name
24716              " rowspan="3">
24717               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24718             </td>
24719             <td class="entry_type">
24720                 <span class="entry_type_name">byte</span>
24721                 <span class="entry_type_container">x</span>
24722
24723                 <span class="entry_type_array">
24724                   n
24725                 </span>
24726               <span class="entry_type_visibility"> [public as boolean]</span>
24727
24728
24729
24730
24731                 <div class="entry_type_notes">list of enums</div>
24732
24733
24734             </td> <!-- entry_type -->
24735
24736             <td class="entry_description">
24737               <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
24738 supported by this camera device.<wbr/></p>
24739             </td>
24740
24741             <td class="entry_units">
24742             </td>
24743
24744             <td class="entry_range">
24745               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24746             </td>
24747
24748             <td class="entry_hal_version">
24749               <p>3.<wbr/>2</p>
24750             </td>
24751
24752             <td class="entry_tags">
24753               <ul class="entry_tags">
24754                   <li><a href="#tag_V1">V1</a></li>
24755                   <li><a href="#tag_RAW">RAW</a></li>
24756               </ul>
24757             </td>
24758
24759           </tr>
24760           <tr class="entries_header">
24761             <th class="th_details" colspan="6">Details</th>
24762           </tr>
24763           <tr class="entry_cont">
24764             <td class="entry_details" colspan="6">
24765               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24766 <code>false</code>.<wbr/></p>
24767 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24768             </td>
24769           </tr>
24770
24771
24772           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24773            <!-- end of entry -->
24774         
24775                 
24776           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24777             <td class="entry_name
24778              " rowspan="3">
24779               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24780             </td>
24781             <td class="entry_type">
24782                 <span class="entry_type_name">byte</span>
24783                 <span class="entry_type_container">x</span>
24784
24785                 <span class="entry_type_array">
24786                   n
24787                 </span>
24788               <span class="entry_type_visibility"> [public as enumList]</span>
24789
24790
24791
24792
24793                 <div class="entry_type_notes">list of enums</div>
24794
24795
24796             </td> <!-- entry_type -->
24797
24798             <td class="entry_description">
24799               <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
24800 are supported by this camera device.<wbr/></p>
24801             </td>
24802
24803             <td class="entry_units">
24804             </td>
24805
24806             <td class="entry_range">
24807               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24808             </td>
24809
24810             <td class="entry_hal_version">
24811               <p>3.<wbr/>2</p>
24812             </td>
24813
24814             <td class="entry_tags">
24815             </td>
24816
24817           </tr>
24818           <tr class="entries_header">
24819             <th class="th_details" colspan="6">Details</th>
24820           </tr>
24821           <tr class="entry_cont">
24822             <td class="entry_details" colspan="6">
24823               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24824 contain only OFF.<wbr/></p>
24825 <p>ON is always supported on devices with the RAW capability.<wbr/>
24826 LEGACY mode devices will always only support OFF.<wbr/></p>
24827             </td>
24828           </tr>
24829
24830
24831           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24832            <!-- end of entry -->
24833         
24834                 
24835           <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24836             <td class="entry_name
24837              " rowspan="3">
24838               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24839             </td>
24840             <td class="entry_type">
24841                 <span class="entry_type_name">byte</span>
24842                 <span class="entry_type_container">x</span>
24843
24844                 <span class="entry_type_array">
24845                   n
24846                 </span>
24847               <span class="entry_type_visibility"> [public as enumList]</span>
24848
24849
24850
24851
24852                 <div class="entry_type_notes">list of enums</div>
24853
24854
24855             </td> <!-- entry_type -->
24856
24857             <td class="entry_description">
24858               <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
24859 are supported by this camera device.<wbr/></p>
24860             </td>
24861
24862             <td class="entry_units">
24863             </td>
24864
24865             <td class="entry_range">
24866               <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24867             </td>
24868
24869             <td class="entry_hal_version">
24870               <p>3.<wbr/>3</p>
24871             </td>
24872
24873             <td class="entry_tags">
24874             </td>
24875
24876           </tr>
24877           <tr class="entries_header">
24878             <th class="th_details" colspan="6">Details</th>
24879           </tr>
24880           <tr class="entry_cont">
24881             <td class="entry_details" colspan="6">
24882               <p>If no OIS data output is available for this camera device,<wbr/> this key will
24883 contain only OFF.<wbr/></p>
24884             </td>
24885           </tr>
24886
24887
24888           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24889            <!-- end of entry -->
24890         
24891         
24892         
24893
24894         
24895
24896       <!-- end of kind -->
24897       </tbody>
24898       <tr><td colspan="7" class="kind">dynamic</td></tr>
24899
24900       <thead class="entries_header">
24901         <tr>
24902           <th class="th_name">Property Name</th>
24903           <th class="th_type">Type</th>
24904           <th class="th_description">Description</th>
24905           <th class="th_units">Units</th>
24906           <th class="th_range">Range</th>
24907           <th class="th_hal_version">Initial HIDL HAL version</th>
24908           <th class="th_tags">Tags</th>
24909         </tr>
24910       </thead>
24911
24912       <tbody>
24913
24914         
24915
24916         
24917
24918         
24919
24920         
24921
24922                 
24923           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24924             <td class="entry_name
24925              " rowspan="5">
24926               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24927             </td>
24928             <td class="entry_type">
24929                 <span class="entry_type_name entry_type_name_enum">byte</span>
24930
24931               <span class="entry_type_visibility"> [public]</span>
24932
24933
24934               <span class="entry_type_hwlevel">[legacy] </span>
24935
24936
24937
24938                 <ul class="entry_type_enum">
24939                   <li>
24940                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24941                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24942 results.<wbr/></p></span>
24943                   </li>
24944                   <li>
24945                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24946                     <span class="entry_type_enum_optional">[optional]</span>
24947                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24948                   </li>
24949                   <li>
24950                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24951                     <span class="entry_type_enum_optional">[optional]</span>
24952                     <span class="entry_type_enum_notes"><p>Return all face
24953 metadata.<wbr/></p>
24954 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24955                   </li>
24956                 </ul>
24957
24958             </td> <!-- entry_type -->
24959
24960             <td class="entry_description">
24961               <p>Operating mode for the face detector
24962 unit.<wbr/></p>
24963             </td>
24964
24965             <td class="entry_units">
24966             </td>
24967
24968             <td class="entry_range">
24969               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24970             </td>
24971
24972             <td class="entry_hal_version">
24973               <p>3.<wbr/>2</p>
24974             </td>
24975
24976             <td class="entry_tags">
24977               <ul class="entry_tags">
24978                   <li><a href="#tag_BC">BC</a></li>
24979               </ul>
24980             </td>
24981
24982           </tr>
24983           <tr class="entries_header">
24984             <th class="th_details" colspan="6">Details</th>
24985           </tr>
24986           <tr class="entry_cont">
24987             <td class="entry_details" colspan="6">
24988               <p>Whether face detection is enabled,<wbr/> and whether it
24989 should output just the basic fields or the full set of
24990 fields.<wbr/></p>
24991             </td>
24992           </tr>
24993
24994           <tr class="entries_header">
24995             <th class="th_details" colspan="6">HAL Implementation Details</th>
24996           </tr>
24997           <tr class="entry_cont">
24998             <td class="entry_details" colspan="6">
24999               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
25000 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
25001 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
25002 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25003             </td>
25004           </tr>
25005
25006           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25007            <!-- end of entry -->
25008         
25009                 
25010           <tr class="entry" id="dynamic_android.statistics.faceIds">
25011             <td class="entry_name
25012              " rowspan="3">
25013               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
25014             </td>
25015             <td class="entry_type">
25016                 <span class="entry_type_name">int32</span>
25017                 <span class="entry_type_container">x</span>
25018
25019                 <span class="entry_type_array">
25020                   n
25021                 </span>
25022               <span class="entry_type_visibility"> [ndk_public]</span>
25023
25024
25025               <span class="entry_type_hwlevel">[legacy] </span>
25026
25027
25028
25029
25030             </td> <!-- entry_type -->
25031
25032             <td class="entry_description">
25033               <p>List of unique IDs for detected faces.<wbr/></p>
25034             </td>
25035
25036             <td class="entry_units">
25037             </td>
25038
25039             <td class="entry_range">
25040             </td>
25041
25042             <td class="entry_hal_version">
25043               <p>3.<wbr/>2</p>
25044             </td>
25045
25046             <td class="entry_tags">
25047               <ul class="entry_tags">
25048                   <li><a href="#tag_BC">BC</a></li>
25049               </ul>
25050             </td>
25051
25052           </tr>
25053           <tr class="entries_header">
25054             <th class="th_details" colspan="6">Details</th>
25055           </tr>
25056           <tr class="entry_cont">
25057             <td class="entry_details" colspan="6">
25058               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25059 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
25060 assigned a new ID.<wbr/></p>
25061 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25062             </td>
25063           </tr>
25064
25065
25066           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25067            <!-- end of entry -->
25068         
25069                 
25070           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25071             <td class="entry_name
25072              " rowspan="3">
25073               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25074             </td>
25075             <td class="entry_type">
25076                 <span class="entry_type_name">int32</span>
25077                 <span class="entry_type_container">x</span>
25078
25079                 <span class="entry_type_array">
25080                   n x 6
25081                 </span>
25082               <span class="entry_type_visibility"> [ndk_public]</span>
25083
25084
25085               <span class="entry_type_hwlevel">[legacy] </span>
25086
25087
25088                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25089
25090
25091             </td> <!-- entry_type -->
25092
25093             <td class="entry_description">
25094               <p>List of landmarks for detected
25095 faces.<wbr/></p>
25096             </td>
25097
25098             <td class="entry_units">
25099             </td>
25100
25101             <td class="entry_range">
25102             </td>
25103
25104             <td class="entry_hal_version">
25105               <p>3.<wbr/>2</p>
25106             </td>
25107
25108             <td class="entry_tags">
25109               <ul class="entry_tags">
25110                   <li><a href="#tag_BC">BC</a></li>
25111               </ul>
25112             </td>
25113
25114           </tr>
25115           <tr class="entries_header">
25116             <th class="th_details" colspan="6">Details</th>
25117           </tr>
25118           <tr class="entry_cont">
25119             <td class="entry_details" colspan="6">
25120               <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
25121 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25122 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25123             </td>
25124           </tr>
25125
25126
25127           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25128            <!-- end of entry -->
25129         
25130                 
25131           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25132             <td class="entry_name
25133              " rowspan="3">
25134               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25135             </td>
25136             <td class="entry_type">
25137                 <span class="entry_type_name">int32</span>
25138                 <span class="entry_type_container">x</span>
25139
25140                 <span class="entry_type_array">
25141                   n x 4
25142                 </span>
25143               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25144
25145
25146               <span class="entry_type_hwlevel">[legacy] </span>
25147
25148
25149                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25150
25151
25152             </td> <!-- entry_type -->
25153
25154             <td class="entry_description">
25155               <p>List of the bounding rectangles for detected
25156 faces.<wbr/></p>
25157             </td>
25158
25159             <td class="entry_units">
25160             </td>
25161
25162             <td class="entry_range">
25163             </td>
25164
25165             <td class="entry_hal_version">
25166               <p>3.<wbr/>2</p>
25167             </td>
25168
25169             <td class="entry_tags">
25170               <ul class="entry_tags">
25171                   <li><a href="#tag_BC">BC</a></li>
25172               </ul>
25173             </td>
25174
25175           </tr>
25176           <tr class="entries_header">
25177             <th class="th_details" colspan="6">Details</th>
25178           </tr>
25179           <tr class="entry_cont">
25180             <td class="entry_details" colspan="6">
25181               <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
25182 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25183 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25184             </td>
25185           </tr>
25186
25187
25188           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25189            <!-- end of entry -->
25190         
25191                 
25192           <tr class="entry" id="dynamic_android.statistics.faceScores">
25193             <td class="entry_name
25194              " rowspan="5">
25195               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25196             </td>
25197             <td class="entry_type">
25198                 <span class="entry_type_name">byte</span>
25199                 <span class="entry_type_container">x</span>
25200
25201                 <span class="entry_type_array">
25202                   n
25203                 </span>
25204               <span class="entry_type_visibility"> [ndk_public]</span>
25205
25206
25207               <span class="entry_type_hwlevel">[legacy] </span>
25208
25209
25210
25211
25212             </td> <!-- entry_type -->
25213
25214             <td class="entry_description">
25215               <p>List of the face confidence scores for
25216 detected faces</p>
25217             </td>
25218
25219             <td class="entry_units">
25220             </td>
25221
25222             <td class="entry_range">
25223               <p>1-100</p>
25224             </td>
25225
25226             <td class="entry_hal_version">
25227               <p>3.<wbr/>2</p>
25228             </td>
25229
25230             <td class="entry_tags">
25231               <ul class="entry_tags">
25232                   <li><a href="#tag_BC">BC</a></li>
25233               </ul>
25234             </td>
25235
25236           </tr>
25237           <tr class="entries_header">
25238             <th class="th_details" colspan="6">Details</th>
25239           </tr>
25240           <tr class="entry_cont">
25241             <td class="entry_details" colspan="6">
25242               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25243             </td>
25244           </tr>
25245
25246           <tr class="entries_header">
25247             <th class="th_details" colspan="6">HAL Implementation Details</th>
25248           </tr>
25249           <tr class="entry_cont">
25250             <td class="entry_details" colspan="6">
25251               <p>The value should be meaningful (for example,<wbr/> setting 100 at
25252 all times is illegal).<wbr/></p>
25253             </td>
25254           </tr>
25255
25256           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25257            <!-- end of entry -->
25258         
25259                 
25260           <tr class="entry" id="dynamic_android.statistics.faces">
25261             <td class="entry_name
25262              " rowspan="3">
25263               android.<wbr/>statistics.<wbr/>faces
25264             </td>
25265             <td class="entry_type">
25266                 <span class="entry_type_name">int32</span>
25267                 <span class="entry_type_container">x</span>
25268
25269                 <span class="entry_type_array">
25270                   n
25271                 </span>
25272               <span class="entry_type_visibility"> [java_public as face]</span>
25273
25274               <span class="entry_type_synthetic">[synthetic] </span>
25275
25276               <span class="entry_type_hwlevel">[legacy] </span>
25277
25278
25279
25280
25281             </td> <!-- entry_type -->
25282
25283             <td class="entry_description">
25284               <p>List of the faces detected through camera face detection
25285 in this capture.<wbr/></p>
25286             </td>
25287
25288             <td class="entry_units">
25289             </td>
25290
25291             <td class="entry_range">
25292             </td>
25293
25294             <td class="entry_hal_version">
25295               <p>3.<wbr/>2</p>
25296             </td>
25297
25298             <td class="entry_tags">
25299             </td>
25300
25301           </tr>
25302           <tr class="entries_header">
25303             <th class="th_details" colspan="6">Details</th>
25304           </tr>
25305           <tr class="entry_cont">
25306             <td class="entry_details" colspan="6">
25307               <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>
25308             </td>
25309           </tr>
25310
25311
25312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25313            <!-- end of entry -->
25314         
25315                 
25316           <tr class="entry" id="dynamic_android.statistics.histogram">
25317             <td class="entry_name
25318              " rowspan="3">
25319               android.<wbr/>statistics.<wbr/>histogram
25320             </td>
25321             <td class="entry_type">
25322                 <span class="entry_type_name">int32</span>
25323                 <span class="entry_type_container">x</span>
25324
25325                 <span class="entry_type_array">
25326                   n x 3
25327                 </span>
25328               <span class="entry_type_visibility"> [system]</span>
25329
25330
25331
25332
25333                 <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>
25334
25335
25336             </td> <!-- entry_type -->
25337
25338             <td class="entry_description">
25339               <p>A 3-channel histogram based on the raw
25340 sensor data</p>
25341             </td>
25342
25343             <td class="entry_units">
25344             </td>
25345
25346             <td class="entry_range">
25347             </td>
25348
25349             <td class="entry_hal_version">
25350               <p>3.<wbr/>2</p>
25351             </td>
25352
25353             <td class="entry_tags">
25354               <ul class="entry_tags">
25355                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25356               </ul>
25357             </td>
25358
25359           </tr>
25360           <tr class="entries_header">
25361             <th class="th_details" colspan="6">Details</th>
25362           </tr>
25363           <tr class="entry_cont">
25364             <td class="entry_details" colspan="6">
25365               <p>The k'th bucket (0-based) covers the input range
25366 (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/>
25367 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25368 supported,<wbr/> all channels should have the same data</p>
25369             </td>
25370           </tr>
25371
25372
25373           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25374            <!-- end of entry -->
25375         
25376                 
25377           <tr class="entry" id="dynamic_android.statistics.histogramMode">
25378             <td class="entry_name
25379              " rowspan="1">
25380               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25381             </td>
25382             <td class="entry_type">
25383                 <span class="entry_type_name entry_type_name_enum">byte</span>
25384
25385               <span class="entry_type_visibility"> [system as boolean]</span>
25386
25387
25388
25389
25390
25391                 <ul class="entry_type_enum">
25392                   <li>
25393                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25394                   </li>
25395                   <li>
25396                     <span class="entry_type_enum_name">ON (v3.2)</span>
25397                   </li>
25398                 </ul>
25399
25400             </td> <!-- entry_type -->
25401
25402             <td class="entry_description">
25403               <p>Operating mode for histogram
25404 generation</p>
25405             </td>
25406
25407             <td class="entry_units">
25408             </td>
25409
25410             <td class="entry_range">
25411             </td>
25412
25413             <td class="entry_hal_version">
25414               <p>3.<wbr/>2</p>
25415             </td>
25416
25417             <td class="entry_tags">
25418               <ul class="entry_tags">
25419                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25420               </ul>
25421             </td>
25422
25423           </tr>
25424
25425
25426           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25427            <!-- end of entry -->
25428         
25429                 
25430           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25431             <td class="entry_name
25432              " rowspan="3">
25433               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25434             </td>
25435             <td class="entry_type">
25436                 <span class="entry_type_name">int32</span>
25437                 <span class="entry_type_container">x</span>
25438
25439                 <span class="entry_type_array">
25440                   n x m x 3
25441                 </span>
25442               <span class="entry_type_visibility"> [system]</span>
25443
25444
25445
25446
25447                 <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>
25448
25449
25450             </td> <!-- entry_type -->
25451
25452             <td class="entry_description">
25453               <p>A 3-channel sharpness map,<wbr/> based on the raw
25454 sensor data</p>
25455             </td>
25456
25457             <td class="entry_units">
25458             </td>
25459
25460             <td class="entry_range">
25461             </td>
25462
25463             <td class="entry_hal_version">
25464               <p>3.<wbr/>2</p>
25465             </td>
25466
25467             <td class="entry_tags">
25468               <ul class="entry_tags">
25469                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25470               </ul>
25471             </td>
25472
25473           </tr>
25474           <tr class="entries_header">
25475             <th class="th_details" colspan="6">Details</th>
25476           </tr>
25477           <tr class="entry_cont">
25478             <td class="entry_details" colspan="6">
25479               <p>If only a monochrome sharpness map is supported,<wbr/>
25480 all channels should have the same data</p>
25481             </td>
25482           </tr>
25483
25484
25485           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25486            <!-- end of entry -->
25487         
25488                 
25489           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25490             <td class="entry_name
25491              " rowspan="1">
25492               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25493             </td>
25494             <td class="entry_type">
25495                 <span class="entry_type_name entry_type_name_enum">byte</span>
25496
25497               <span class="entry_type_visibility"> [system as boolean]</span>
25498
25499
25500
25501
25502
25503                 <ul class="entry_type_enum">
25504                   <li>
25505                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25506                   </li>
25507                   <li>
25508                     <span class="entry_type_enum_name">ON (v3.2)</span>
25509                   </li>
25510                 </ul>
25511
25512             </td> <!-- entry_type -->
25513
25514             <td class="entry_description">
25515               <p>Operating mode for sharpness map
25516 generation</p>
25517             </td>
25518
25519             <td class="entry_units">
25520             </td>
25521
25522             <td class="entry_range">
25523             </td>
25524
25525             <td class="entry_hal_version">
25526               <p>3.<wbr/>2</p>
25527             </td>
25528
25529             <td class="entry_tags">
25530               <ul class="entry_tags">
25531                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25532               </ul>
25533             </td>
25534
25535           </tr>
25536
25537
25538           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25539            <!-- end of entry -->
25540         
25541                 
25542           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25543             <td class="entry_name
25544              " rowspan="3">
25545               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25546             </td>
25547             <td class="entry_type">
25548                 <span class="entry_type_name">byte</span>
25549
25550               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25551
25552
25553               <span class="entry_type_hwlevel">[full] </span>
25554
25555
25556
25557
25558             </td> <!-- entry_type -->
25559
25560             <td class="entry_description">
25561               <p>The shading map is a low-resolution floating-point map
25562 that lists the coefficients used to correct for vignetting,<wbr/> for each
25563 Bayer color channel.<wbr/></p>
25564             </td>
25565
25566             <td class="entry_units">
25567             </td>
25568
25569             <td class="entry_range">
25570               <p>Each gain factor is &gt;= 1</p>
25571             </td>
25572
25573             <td class="entry_hal_version">
25574               <p>3.<wbr/>2</p>
25575             </td>
25576
25577             <td class="entry_tags">
25578             </td>
25579
25580           </tr>
25581           <tr class="entries_header">
25582             <th class="th_details" colspan="6">Details</th>
25583           </tr>
25584           <tr class="entry_cont">
25585             <td class="entry_details" colspan="6">
25586               <p>The map provided here is the same map that is used by the camera device to
25587 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25588 <p>When there is no lens shading correction applied to RAW
25589 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25590 false),<wbr/> this map is the complete lens shading correction
25591 map; when there is some lens shading correction applied to
25592 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
25593 correction map that needs to be applied to get shading
25594 corrected images that match the camera device's output for
25595 non-RAW formats.<wbr/></p>
25596 <p>For a complete shading correction map,<wbr/> the least shaded
25597 section of the image will have a gain factor of 1; all
25598 other sections will have gains above 1.<wbr/></p>
25599 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25600 will take into account the colorCorrection settings.<wbr/></p>
25601 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25602 affected by the crop region specified in the request.<wbr/> Each shading map
25603 entry is the value of the shading compensation map over a specific
25604 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25605 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25606 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25607 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25608 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25609 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25610 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25611 The shading map is stored in a fully interleaved format.<wbr/></p>
25612 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25613 and will be smaller than 64x64.<wbr/></p>
25614 <p>As an example,<wbr/> given a very small map defined as:</p>
25615 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25616 values =
25617 [ 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/>
25618     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/>
25619   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/>
25620     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/>
25621   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/>
25622     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 ]
25623 </code></pre>
25624 <p>The low-resolution scaling map images for each channel are
25625 (displayed using nearest-neighbor interpolation):</p>
25626 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25627 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25628 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25629 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25630 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25631 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25632 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25633             </td>
25634           </tr>
25635
25636
25637           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25638            <!-- end of entry -->
25639         
25640                 
25641           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25642             <td class="entry_name
25643              " rowspan="5">
25644               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25645             </td>
25646             <td class="entry_type">
25647                 <span class="entry_type_name">float</span>
25648                 <span class="entry_type_container">x</span>
25649
25650                 <span class="entry_type_array">
25651                   4 x n x m
25652                 </span>
25653               <span class="entry_type_visibility"> [ndk_public]</span>
25654
25655
25656               <span class="entry_type_hwlevel">[full] </span>
25657
25658
25659                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25660
25661
25662             </td> <!-- entry_type -->
25663
25664             <td class="entry_description">
25665               <p>The shading map is a low-resolution floating-point map
25666 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25667 for each Bayer color channel of RAW image data.<wbr/></p>
25668             </td>
25669
25670             <td class="entry_units">
25671             </td>
25672
25673             <td class="entry_range">
25674               <p>Each gain factor is &gt;= 1</p>
25675             </td>
25676
25677             <td class="entry_hal_version">
25678               <p>3.<wbr/>2</p>
25679             </td>
25680
25681             <td class="entry_tags">
25682             </td>
25683
25684           </tr>
25685           <tr class="entries_header">
25686             <th class="th_details" colspan="6">Details</th>
25687           </tr>
25688           <tr class="entry_cont">
25689             <td class="entry_details" colspan="6">
25690               <p>The map provided here is the same map that is used by the camera device to
25691 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25692 <p>When there is no lens shading correction applied to RAW
25693 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25694 false),<wbr/> this map is the complete lens shading correction
25695 map; when there is some lens shading correction applied to
25696 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
25697 correction map that needs to be applied to get shading
25698 corrected images that match the camera device's output for
25699 non-RAW formats.<wbr/></p>
25700 <p>For a complete shading correction map,<wbr/> the least shaded
25701 section of the image will have a gain factor of 1; all
25702 other sections will have gains above 1.<wbr/></p>
25703 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25704 will take into account the colorCorrection settings.<wbr/></p>
25705 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25706 affected by the crop region specified in the request.<wbr/> Each shading map
25707 entry is the value of the shading compensation map over a specific
25708 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25709 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25710 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25711 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25712 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25713 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25714 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25715 The shading map is stored in a fully interleaved format,<wbr/> and its size
25716 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>
25717 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25718 and will be smaller than 64x64.<wbr/></p>
25719 <p>As an example,<wbr/> given a very small map defined as:</p>
25720 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25721 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25722 [ 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/>
25723     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/>
25724   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/>
25725     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/>
25726   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/>
25727     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 ]
25728 </code></pre>
25729 <p>The low-resolution scaling map images for each channel are
25730 (displayed using nearest-neighbor interpolation):</p>
25731 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25732 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25733 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25734 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25735 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25736 image of a gray wall (using bicubic interpolation for visual quality)
25737 as captured by the sensor gives:</p>
25738 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25739 <p>Note that the RAW image data might be subject to lens shading
25740 correction not reported on this map.<wbr/> Query
25741 <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
25742 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>
25743 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25744 correction.<wbr/> In the case full lens shading correction is applied to RAW
25745 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25746 In other words,<wbr/> the map reported in this key is the remaining lens shading
25747 that needs to be applied on the RAW image to get images without lens shading
25748 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
25749 formats.<wbr/></p>
25750             </td>
25751           </tr>
25752
25753           <tr class="entries_header">
25754             <th class="th_details" colspan="6">HAL Implementation Details</th>
25755           </tr>
25756           <tr class="entry_cont">
25757             <td class="entry_details" colspan="6">
25758               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25759 When AE and AWB are in AUTO modes
25760 (<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
25761 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25762 AE or AWB are in manual mode
25763 (<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
25764 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25765 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25766 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25767             </td>
25768           </tr>
25769
25770           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25771            <!-- end of entry -->
25772         
25773                 
25774           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25775             <td class="entry_name
25776                 entry_name_deprecated
25777              " rowspan="3">
25778               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25779             </td>
25780             <td class="entry_type">
25781                 <span class="entry_type_name">float</span>
25782                 <span class="entry_type_container">x</span>
25783
25784                 <span class="entry_type_array">
25785                   4
25786                 </span>
25787               <span class="entry_type_visibility"> [hidden]</span>
25788
25789
25790
25791               <span class="entry_type_deprecated">[deprecated] </span>
25792
25793                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25794
25795
25796             </td> <!-- entry_type -->
25797
25798             <td class="entry_description">
25799               <p>The best-fit color channel gains calculated
25800 by the camera device's statistics units for the current output frame.<wbr/></p>
25801             </td>
25802
25803             <td class="entry_units">
25804             </td>
25805
25806             <td class="entry_range">
25807               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25808             </td>
25809
25810             <td class="entry_hal_version">
25811               <p>3.<wbr/>2</p>
25812             </td>
25813
25814             <td class="entry_tags">
25815             </td>
25816
25817           </tr>
25818           <tr class="entries_header">
25819             <th class="th_details" colspan="6">Details</th>
25820           </tr>
25821           <tr class="entry_cont">
25822             <td class="entry_details" colspan="6">
25823               <p>This may be different than the gains used for this frame,<wbr/>
25824 since statistics processing on data from a new frame
25825 typically completes after the transform has already been
25826 applied to that frame.<wbr/></p>
25827 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25828 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25829 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25830 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25831             </td>
25832           </tr>
25833
25834
25835           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25836            <!-- end of entry -->
25837         
25838                 
25839           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25840             <td class="entry_name
25841                 entry_name_deprecated
25842              " rowspan="3">
25843               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25844             </td>
25845             <td class="entry_type">
25846                 <span class="entry_type_name">rational</span>
25847                 <span class="entry_type_container">x</span>
25848
25849                 <span class="entry_type_array">
25850                   3 x 3
25851                 </span>
25852               <span class="entry_type_visibility"> [hidden]</span>
25853
25854
25855
25856               <span class="entry_type_deprecated">[deprecated] </span>
25857
25858                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25859
25860
25861             </td> <!-- entry_type -->
25862
25863             <td class="entry_description">
25864               <p>The best-fit color transform matrix estimate
25865 calculated by the camera device's statistics units for the current
25866 output frame.<wbr/></p>
25867             </td>
25868
25869             <td class="entry_units">
25870             </td>
25871
25872             <td class="entry_range">
25873               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25874             </td>
25875
25876             <td class="entry_hal_version">
25877               <p>3.<wbr/>2</p>
25878             </td>
25879
25880             <td class="entry_tags">
25881             </td>
25882
25883           </tr>
25884           <tr class="entries_header">
25885             <th class="th_details" colspan="6">Details</th>
25886           </tr>
25887           <tr class="entry_cont">
25888             <td class="entry_details" colspan="6">
25889               <p>The camera device will provide the estimate from its
25890 statistics unit on the white balance transforms to use
25891 for the next frame.<wbr/> These are the values the camera device believes
25892 are the best fit for the current output frame.<wbr/> This may
25893 be different than the transform used for this frame,<wbr/> since
25894 statistics processing on data from a new frame typically
25895 completes after the transform has already been applied to
25896 that frame.<wbr/></p>
25897 <p>These estimates must be provided for all frames,<wbr/> even if
25898 capture settings and color transforms are set by the application.<wbr/></p>
25899 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25900 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25901             </td>
25902           </tr>
25903
25904
25905           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25906            <!-- end of entry -->
25907         
25908                 
25909           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25910             <td class="entry_name
25911              " rowspan="3">
25912               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25913             </td>
25914             <td class="entry_type">
25915                 <span class="entry_type_name entry_type_name_enum">byte</span>
25916
25917               <span class="entry_type_visibility"> [public]</span>
25918
25919
25920               <span class="entry_type_hwlevel">[full] </span>
25921
25922
25923
25924                 <ul class="entry_type_enum">
25925                   <li>
25926                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25927                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25928 in the current scene.<wbr/></p></span>
25929                   </li>
25930                   <li>
25931                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25932                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25933 in the current scene.<wbr/></p></span>
25934                   </li>
25935                   <li>
25936                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25937                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25938 in the current scene.<wbr/></p></span>
25939                   </li>
25940                 </ul>
25941
25942             </td> <!-- entry_type -->
25943
25944             <td class="entry_description">
25945               <p>The camera device estimated scene illumination lighting
25946 frequency.<wbr/></p>
25947             </td>
25948
25949             <td class="entry_units">
25950             </td>
25951
25952             <td class="entry_range">
25953             </td>
25954
25955             <td class="entry_hal_version">
25956               <p>3.<wbr/>2</p>
25957             </td>
25958
25959             <td class="entry_tags">
25960             </td>
25961
25962           </tr>
25963           <tr class="entries_header">
25964             <th class="th_details" colspan="6">Details</th>
25965           </tr>
25966           <tr class="entry_cont">
25967             <td class="entry_details" colspan="6">
25968               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25969 that depends on the local utility power standards.<wbr/> This flicker must be
25970 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25971 The camera device uses this entry to tell the application what the scene
25972 illuminant frequency is.<wbr/></p>
25973 <p>When manual exposure control is enabled
25974 (<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> ==
25975 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25976 antibanding,<wbr/> and the application can ensure it selects
25977 exposure times that do not cause banding issues by looking
25978 into this metadata field.<wbr/> See
25979 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25980 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25981             </td>
25982           </tr>
25983
25984
25985           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25986            <!-- end of entry -->
25987         
25988                 
25989           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25990             <td class="entry_name
25991              " rowspan="3">
25992               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25993             </td>
25994             <td class="entry_type">
25995                 <span class="entry_type_name entry_type_name_enum">byte</span>
25996
25997               <span class="entry_type_visibility"> [public as boolean]</span>
25998
25999
26000
26001
26002
26003                 <ul class="entry_type_enum">
26004                   <li>
26005                     <span class="entry_type_enum_name">OFF (v3.2)</span>
26006                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
26007                   </li>
26008                   <li>
26009                     <span class="entry_type_enum_name">ON (v3.2)</span>
26010                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
26011                   </li>
26012                 </ul>
26013
26014             </td> <!-- entry_type -->
26015
26016             <td class="entry_description">
26017               <p>Operating mode for hot pixel map generation.<wbr/></p>
26018             </td>
26019
26020             <td class="entry_units">
26021             </td>
26022
26023             <td class="entry_range">
26024               <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>
26025             </td>
26026
26027             <td class="entry_hal_version">
26028               <p>3.<wbr/>2</p>
26029             </td>
26030
26031             <td class="entry_tags">
26032               <ul class="entry_tags">
26033                   <li><a href="#tag_V1">V1</a></li>
26034                   <li><a href="#tag_RAW">RAW</a></li>
26035               </ul>
26036             </td>
26037
26038           </tr>
26039           <tr class="entries_header">
26040             <th class="th_details" colspan="6">Details</th>
26041           </tr>
26042           <tr class="entry_cont">
26043             <td class="entry_details" colspan="6">
26044               <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/>
26045 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26046             </td>
26047           </tr>
26048
26049
26050           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26051            <!-- end of entry -->
26052         
26053                 
26054           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26055             <td class="entry_name
26056              " rowspan="5">
26057               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26058             </td>
26059             <td class="entry_type">
26060                 <span class="entry_type_name">int32</span>
26061                 <span class="entry_type_container">x</span>
26062
26063                 <span class="entry_type_array">
26064                   2 x n
26065                 </span>
26066               <span class="entry_type_visibility"> [public as point]</span>
26067
26068
26069
26070
26071                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26072
26073
26074             </td> <!-- entry_type -->
26075
26076             <td class="entry_description">
26077               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26078             </td>
26079
26080             <td class="entry_units">
26081             </td>
26082
26083             <td class="entry_range">
26084               <p>n &lt;= number of pixels on the sensor.<wbr/>
26085 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26086 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26087             </td>
26088
26089             <td class="entry_hal_version">
26090               <p>3.<wbr/>2</p>
26091             </td>
26092
26093             <td class="entry_tags">
26094               <ul class="entry_tags">
26095                   <li><a href="#tag_V1">V1</a></li>
26096                   <li><a href="#tag_RAW">RAW</a></li>
26097               </ul>
26098             </td>
26099
26100           </tr>
26101           <tr class="entries_header">
26102             <th class="th_details" colspan="6">Details</th>
26103           </tr>
26104           <tr class="entry_cont">
26105             <td class="entry_details" colspan="6">
26106               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26107 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26108 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26109 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/>
26110 This may include hot pixels that lie outside of the active array
26111 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26112             </td>
26113           </tr>
26114
26115           <tr class="entries_header">
26116             <th class="th_details" colspan="6">HAL Implementation Details</th>
26117           </tr>
26118           <tr class="entry_cont">
26119             <td class="entry_details" colspan="6">
26120               <p>A hotpixel map contains the coordinates of pixels on the camera
26121 sensor that do report valid values (usually due to defects in
26122 the camera sensor).<wbr/> This includes pixels that are stuck at certain
26123 values,<wbr/> or have a response that does not accuractly encode the
26124 incoming light from the scene.<wbr/></p>
26125 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26126 pixels than actual pixels on the camera sensor.<wbr/></p>
26127             </td>
26128           </tr>
26129
26130           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26131            <!-- end of entry -->
26132         
26133                 
26134           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26135             <td class="entry_name
26136              " rowspan="3">
26137               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26138             </td>
26139             <td class="entry_type">
26140                 <span class="entry_type_name entry_type_name_enum">byte</span>
26141
26142               <span class="entry_type_visibility"> [public]</span>
26143
26144
26145               <span class="entry_type_hwlevel">[full] </span>
26146
26147
26148
26149                 <ul class="entry_type_enum">
26150                   <li>
26151                     <span class="entry_type_enum_name">OFF (v3.2)</span>
26152                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26153                   </li>
26154                   <li>
26155                     <span class="entry_type_enum_name">ON (v3.2)</span>
26156                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26157                   </li>
26158                 </ul>
26159
26160             </td> <!-- entry_type -->
26161
26162             <td class="entry_description">
26163               <p>Whether the camera device will output the lens
26164 shading map in output result metadata.<wbr/></p>
26165             </td>
26166
26167             <td class="entry_units">
26168             </td>
26169
26170             <td class="entry_range">
26171               <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>
26172             </td>
26173
26174             <td class="entry_hal_version">
26175               <p>3.<wbr/>2</p>
26176             </td>
26177
26178             <td class="entry_tags">
26179               <ul class="entry_tags">
26180                   <li><a href="#tag_RAW">RAW</a></li>
26181               </ul>
26182             </td>
26183
26184           </tr>
26185           <tr class="entries_header">
26186             <th class="th_details" colspan="6">Details</th>
26187           </tr>
26188           <tr class="entry_cont">
26189             <td class="entry_details" colspan="6">
26190               <p>When set to ON,<wbr/>
26191 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26192 the output result metadata.<wbr/></p>
26193 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
26194             </td>
26195           </tr>
26196
26197
26198           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26199            <!-- end of entry -->
26200         
26201                 
26202           <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26203             <td class="entry_name
26204              " rowspan="1">
26205               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26206             </td>
26207             <td class="entry_type">
26208                 <span class="entry_type_name entry_type_name_enum">byte</span>
26209
26210               <span class="entry_type_visibility"> [public]</span>
26211
26212
26213
26214
26215
26216                 <ul class="entry_type_enum">
26217                   <li>
26218                     <span class="entry_type_enum_name">OFF (v3.3)</span>
26219                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26220                   </li>
26221                   <li>
26222                     <span class="entry_type_enum_name">ON (v3.3)</span>
26223                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26224                   </li>
26225                 </ul>
26226
26227             </td> <!-- entry_type -->
26228
26229             <td class="entry_description">
26230               <p>A control for selecting whether OIS position information is included in output
26231 result metadata.<wbr/></p>
26232             </td>
26233
26234             <td class="entry_units">
26235             </td>
26236
26237             <td class="entry_range">
26238               <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26239             </td>
26240
26241             <td class="entry_hal_version">
26242               <p>3.<wbr/>3</p>
26243             </td>
26244
26245             <td class="entry_tags">
26246             </td>
26247
26248           </tr>
26249
26250
26251           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26252            <!-- end of entry -->
26253         
26254                 
26255           <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26256             <td class="entry_name
26257              " rowspan="3">
26258               android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26259             </td>
26260             <td class="entry_type">
26261                 <span class="entry_type_name">int64</span>
26262                 <span class="entry_type_container">x</span>
26263
26264                 <span class="entry_type_array">
26265                   n
26266                 </span>
26267               <span class="entry_type_visibility"> [ndk_public]</span>
26268
26269
26270
26271
26272
26273
26274             </td> <!-- entry_type -->
26275
26276             <td class="entry_description">
26277               <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26278             </td>
26279
26280             <td class="entry_units">
26281               nanoseconds
26282             </td>
26283
26284             <td class="entry_range">
26285             </td>
26286
26287             <td class="entry_hal_version">
26288               <p>3.<wbr/>3</p>
26289             </td>
26290
26291             <td class="entry_tags">
26292             </td>
26293
26294           </tr>
26295           <tr class="entries_header">
26296             <th class="th_details" colspan="6">Details</th>
26297           </tr>
26298           <tr class="entry_cont">
26299             <td class="entry_details" colspan="6">
26300               <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26301 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26302             </td>
26303           </tr>
26304
26305
26306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26307            <!-- end of entry -->
26308         
26309                 
26310           <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26311             <td class="entry_name
26312              " rowspan="3">
26313               android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26314             </td>
26315             <td class="entry_type">
26316                 <span class="entry_type_name">float</span>
26317                 <span class="entry_type_container">x</span>
26318
26319                 <span class="entry_type_array">
26320                   n
26321                 </span>
26322               <span class="entry_type_visibility"> [ndk_public]</span>
26323
26324
26325
26326
26327
26328
26329             </td> <!-- entry_type -->
26330
26331             <td class="entry_description">
26332               <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26333             </td>
26334
26335             <td class="entry_units">
26336               Pixels in active array.<wbr/>
26337             </td>
26338
26339             <td class="entry_range">
26340             </td>
26341
26342             <td class="entry_hal_version">
26343               <p>3.<wbr/>3</p>
26344             </td>
26345
26346             <td class="entry_tags">
26347             </td>
26348
26349           </tr>
26350           <tr class="entries_header">
26351             <th class="th_details" colspan="6">Details</th>
26352           </tr>
26353           <tr class="entry_cont">
26354             <td class="entry_details" colspan="6">
26355               <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26356 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26357 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26358 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26359 <p>The number of shifts must match the number of timestamps in
26360 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26361             </td>
26362           </tr>
26363
26364
26365           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26366            <!-- end of entry -->
26367         
26368                 
26369           <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26370             <td class="entry_name
26371              " rowspan="3">
26372               android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26373             </td>
26374             <td class="entry_type">
26375                 <span class="entry_type_name">float</span>
26376                 <span class="entry_type_container">x</span>
26377
26378                 <span class="entry_type_array">
26379                   n
26380                 </span>
26381               <span class="entry_type_visibility"> [ndk_public]</span>
26382
26383
26384
26385
26386
26387
26388             </td> <!-- entry_type -->
26389
26390             <td class="entry_description">
26391               <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26392             </td>
26393
26394             <td class="entry_units">
26395               Pixels in active array.<wbr/>
26396             </td>
26397
26398             <td class="entry_range">
26399             </td>
26400
26401             <td class="entry_hal_version">
26402               <p>3.<wbr/>3</p>
26403             </td>
26404
26405             <td class="entry_tags">
26406             </td>
26407
26408           </tr>
26409           <tr class="entries_header">
26410             <th class="th_details" colspan="6">Details</th>
26411           </tr>
26412           <tr class="entry_cont">
26413             <td class="entry_details" colspan="6">
26414               <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26415 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26416 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26417 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26418 <p>The number of shifts must match the number of timestamps in
26419 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26420             </td>
26421           </tr>
26422
26423
26424           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26425            <!-- end of entry -->
26426         
26427                 
26428           <tr class="entry" id="dynamic_android.statistics.oisSamples">
26429             <td class="entry_name
26430              " rowspan="3">
26431               android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26432             </td>
26433             <td class="entry_type">
26434                 <span class="entry_type_name">float</span>
26435                 <span class="entry_type_container">x</span>
26436
26437                 <span class="entry_type_array">
26438                   n
26439                 </span>
26440               <span class="entry_type_visibility"> [java_public as oisSample]</span>
26441
26442               <span class="entry_type_synthetic">[synthetic] </span>
26443
26444
26445
26446
26447
26448             </td> <!-- entry_type -->
26449
26450             <td class="entry_description">
26451               <p>An array of OIS samples.<wbr/></p>
26452             </td>
26453
26454             <td class="entry_units">
26455             </td>
26456
26457             <td class="entry_range">
26458             </td>
26459
26460             <td class="entry_hal_version">
26461               <p>3.<wbr/>3</p>
26462             </td>
26463
26464             <td class="entry_tags">
26465             </td>
26466
26467           </tr>
26468           <tr class="entries_header">
26469             <th class="th_details" colspan="6">Details</th>
26470           </tr>
26471           <tr class="entry_cont">
26472             <td class="entry_details" colspan="6">
26473               <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26474 in pixels,<wbr/> of the OIS sample.<wbr/></p>
26475 <p>A positive value for a shift in x direction is a shift from left to right in active array
26476 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26477 coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26478 <p>A positive value for a shift in y direction is a shift from top to bottom in active array
26479 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26480 coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26481             </td>
26482           </tr>
26483
26484
26485           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26486            <!-- end of entry -->
26487         
26488         
26489
26490       <!-- end of kind -->
26491       </tbody>
26492
26493   <!-- end of section -->
26494   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26495
26496
26497       <tr><td colspan="7" class="kind">controls</td></tr>
26498
26499       <thead class="entries_header">
26500         <tr>
26501           <th class="th_name">Property Name</th>
26502           <th class="th_type">Type</th>
26503           <th class="th_description">Description</th>
26504           <th class="th_units">Units</th>
26505           <th class="th_range">Range</th>
26506           <th class="th_hal_version">Initial HIDL HAL version</th>
26507           <th class="th_tags">Tags</th>
26508         </tr>
26509       </thead>
26510
26511       <tbody>
26512
26513         
26514
26515         
26516
26517         
26518
26519         
26520
26521                 
26522           <tr class="entry" id="controls_android.tonemap.curveBlue">
26523             <td class="entry_name
26524              " rowspan="3">
26525               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26526             </td>
26527             <td class="entry_type">
26528                 <span class="entry_type_name">float</span>
26529                 <span class="entry_type_container">x</span>
26530
26531                 <span class="entry_type_array">
26532                   n x 2
26533                 </span>
26534               <span class="entry_type_visibility"> [ndk_public]</span>
26535
26536
26537               <span class="entry_type_hwlevel">[full] </span>
26538
26539
26540                 <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>
26541
26542
26543             </td> <!-- entry_type -->
26544
26545             <td class="entry_description">
26546               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26547 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26548 CONTRAST_<wbr/>CURVE.<wbr/></p>
26549             </td>
26550
26551             <td class="entry_units">
26552             </td>
26553
26554             <td class="entry_range">
26555             </td>
26556
26557             <td class="entry_hal_version">
26558               <p>3.<wbr/>2</p>
26559             </td>
26560
26561             <td class="entry_tags">
26562             </td>
26563
26564           </tr>
26565           <tr class="entries_header">
26566             <th class="th_details" colspan="6">Details</th>
26567           </tr>
26568           <tr class="entry_cont">
26569             <td class="entry_details" colspan="6">
26570               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26571             </td>
26572           </tr>
26573
26574
26575           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26576            <!-- end of entry -->
26577         
26578                 
26579           <tr class="entry" id="controls_android.tonemap.curveGreen">
26580             <td class="entry_name
26581              " rowspan="3">
26582               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26583             </td>
26584             <td class="entry_type">
26585                 <span class="entry_type_name">float</span>
26586                 <span class="entry_type_container">x</span>
26587
26588                 <span class="entry_type_array">
26589                   n x 2
26590                 </span>
26591               <span class="entry_type_visibility"> [ndk_public]</span>
26592
26593
26594               <span class="entry_type_hwlevel">[full] </span>
26595
26596
26597                 <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>
26598
26599
26600             </td> <!-- entry_type -->
26601
26602             <td class="entry_description">
26603               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26604 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26605 CONTRAST_<wbr/>CURVE.<wbr/></p>
26606             </td>
26607
26608             <td class="entry_units">
26609             </td>
26610
26611             <td class="entry_range">
26612             </td>
26613
26614             <td class="entry_hal_version">
26615               <p>3.<wbr/>2</p>
26616             </td>
26617
26618             <td class="entry_tags">
26619             </td>
26620
26621           </tr>
26622           <tr class="entries_header">
26623             <th class="th_details" colspan="6">Details</th>
26624           </tr>
26625           <tr class="entry_cont">
26626             <td class="entry_details" colspan="6">
26627               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26628             </td>
26629           </tr>
26630
26631
26632           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26633            <!-- end of entry -->
26634         
26635                 
26636           <tr class="entry" id="controls_android.tonemap.curveRed">
26637             <td class="entry_name
26638              " rowspan="5">
26639               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26640             </td>
26641             <td class="entry_type">
26642                 <span class="entry_type_name">float</span>
26643                 <span class="entry_type_container">x</span>
26644
26645                 <span class="entry_type_array">
26646                   n x 2
26647                 </span>
26648               <span class="entry_type_visibility"> [ndk_public]</span>
26649
26650
26651               <span class="entry_type_hwlevel">[full] </span>
26652
26653
26654                 <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>
26655
26656
26657             </td> <!-- entry_type -->
26658
26659             <td class="entry_description">
26660               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26661 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26662 CONTRAST_<wbr/>CURVE.<wbr/></p>
26663             </td>
26664
26665             <td class="entry_units">
26666             </td>
26667
26668             <td class="entry_range">
26669               <p>0-1 on both input and output coordinates,<wbr/> normalized
26670 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26671             </td>
26672
26673             <td class="entry_hal_version">
26674               <p>3.<wbr/>2</p>
26675             </td>
26676
26677             <td class="entry_tags">
26678             </td>
26679
26680           </tr>
26681           <tr class="entries_header">
26682             <th class="th_details" colspan="6">Details</th>
26683           </tr>
26684           <tr class="entry_cont">
26685             <td class="entry_details" colspan="6">
26686               <p>Each channel's curve is defined by an array of control points:</p>
26687 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26688   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26689 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26690 <p>These are sorted in order of increasing <code>Pin</code>; it is
26691 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26692 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26693 the camera device must linearly interpolate between the control
26694 points.<wbr/></p>
26695 <p>Each curve can have an independent number of points,<wbr/> and the number
26696 of points can be less than max (that is,<wbr/> the request doesn't have to
26697 always provide a curve with number of points equivalent to
26698 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26699 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26700 are ignored.<wbr/></p>
26701 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26702 only specify the red channel and the precision is limited to 4
26703 digits,<wbr/> for conciseness.<wbr/></p>
26704 <p>Linear mapping:</p>
26705 <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 ]
26706 </code></pre>
26707 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26708 <p>Invert mapping:</p>
26709 <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 ]
26710 </code></pre>
26711 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26712 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26713 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26714   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/>
26715   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/>
26716   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/>
26717   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 ]
26718 </code></pre>
26719 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26720 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26721 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26722   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/>
26723   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/>
26724   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/>
26725   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 ]
26726 </code></pre>
26727 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26728             </td>
26729           </tr>
26730
26731           <tr class="entries_header">
26732             <th class="th_details" colspan="6">HAL Implementation Details</th>
26733           </tr>
26734           <tr class="entry_cont">
26735             <td class="entry_details" colspan="6">
26736               <p>For good quality of mapping,<wbr/> at least 128 control points are
26737 preferred.<wbr/></p>
26738 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26739 control points used as are available.<wbr/></p>
26740             </td>
26741           </tr>
26742
26743           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26744            <!-- end of entry -->
26745         
26746                 
26747           <tr class="entry" id="controls_android.tonemap.curve">
26748             <td class="entry_name
26749              " rowspan="5">
26750               android.<wbr/>tonemap.<wbr/>curve
26751             </td>
26752             <td class="entry_type">
26753                 <span class="entry_type_name">float</span>
26754
26755               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26756
26757               <span class="entry_type_synthetic">[synthetic] </span>
26758
26759               <span class="entry_type_hwlevel">[full] </span>
26760
26761
26762
26763
26764             </td> <!-- entry_type -->
26765
26766             <td class="entry_description">
26767               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26768 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26769             </td>
26770
26771             <td class="entry_units">
26772             </td>
26773
26774             <td class="entry_range">
26775             </td>
26776
26777             <td class="entry_hal_version">
26778               <p>3.<wbr/>2</p>
26779             </td>
26780
26781             <td class="entry_tags">
26782             </td>
26783
26784           </tr>
26785           <tr class="entries_header">
26786             <th class="th_details" colspan="6">Details</th>
26787           </tr>
26788           <tr class="entry_cont">
26789             <td class="entry_details" colspan="6">
26790               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26791 channels respectively.<wbr/> The following example uses the red channel as an
26792 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26793 Each channel's curve is defined by an array of control points:</p>
26794 <pre><code>curveRed =
26795   [ 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) ]
26796 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26797 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26798 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26799 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26800 the camera device must linearly interpolate between the control
26801 points.<wbr/></p>
26802 <p>Each curve can have an independent number of points,<wbr/> and the number
26803 of points can be less than max (that is,<wbr/> the request doesn't have to
26804 always provide a curve with number of points equivalent to
26805 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26806 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26807 are ignored.<wbr/></p>
26808 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26809 only specify the red channel and the precision is limited to 4
26810 digits,<wbr/> for conciseness.<wbr/></p>
26811 <p>Linear mapping:</p>
26812 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26813 </code></pre>
26814 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26815 <p>Invert mapping:</p>
26816 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26817 </code></pre>
26818 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26819 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26820 <pre><code>curveRed = [
26821   (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/>
26822   (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/>
26823   (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/>
26824   (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) ]
26825 </code></pre>
26826 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26827 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26828 <pre><code>curveRed = [
26829   (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/>
26830   (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/>
26831   (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/>
26832   (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) ]
26833 </code></pre>
26834 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26835             </td>
26836           </tr>
26837
26838           <tr class="entries_header">
26839             <th class="th_details" colspan="6">HAL Implementation Details</th>
26840           </tr>
26841           <tr class="entry_cont">
26842             <td class="entry_details" colspan="6">
26843               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26844 curveBlue entries.<wbr/></p>
26845             </td>
26846           </tr>
26847
26848           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26849            <!-- end of entry -->
26850         
26851                 
26852           <tr class="entry" id="controls_android.tonemap.mode">
26853             <td class="entry_name
26854              " rowspan="3">
26855               android.<wbr/>tonemap.<wbr/>mode
26856             </td>
26857             <td class="entry_type">
26858                 <span class="entry_type_name entry_type_name_enum">byte</span>
26859
26860               <span class="entry_type_visibility"> [public]</span>
26861
26862
26863               <span class="entry_type_hwlevel">[full] </span>
26864
26865
26866
26867                 <ul class="entry_type_enum">
26868                   <li>
26869                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26870                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26871 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26872 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26873 for applying the tonemapping curve specified by
26874 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26875 <p>Must not slow down frame rate relative to raw
26876 sensor output.<wbr/></p></span>
26877                   </li>
26878                   <li>
26879                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26880                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26881 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26882                   </li>
26883                   <li>
26884                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26885                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26886 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26887                   </li>
26888                   <li>
26889                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26890                     <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
26891 tonemapping.<wbr/></p>
26892 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26893 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26894 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26895                   </li>
26896                   <li>
26897                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26898                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26899 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26900 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26901 for applying the tonemapping curve specified by
26902 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26903 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26904                   </li>
26905                 </ul>
26906
26907             </td> <!-- entry_type -->
26908
26909             <td class="entry_description">
26910               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26911             </td>
26912
26913             <td class="entry_units">
26914             </td>
26915
26916             <td class="entry_range">
26917               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26918             </td>
26919
26920             <td class="entry_hal_version">
26921               <p>3.<wbr/>2</p>
26922             </td>
26923
26924             <td class="entry_tags">
26925             </td>
26926
26927           </tr>
26928           <tr class="entries_header">
26929             <th class="th_details" colspan="6">Details</th>
26930           </tr>
26931           <tr class="entry_cont">
26932             <td class="entry_details" colspan="6">
26933               <p>When switching to an application-defined contrast curve by setting
26934 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26935 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26936 mapping from input high-bit-depth pixel value to the output
26937 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26938 and output may change depending on the camera pipeline,<wbr/> the values
26939 are specified by normalized floating-point numbers.<wbr/></p>
26940 <p>More-complex color mapping operations such as 3D color look-up
26941 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26942 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26943 CONTRAST_<wbr/>CURVE.<wbr/></p>
26944 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26945 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26946 These values are always available,<wbr/> and as close as possible to the
26947 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26948 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26949 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26950 roughly the same.<wbr/></p>
26951             </td>
26952           </tr>
26953
26954
26955           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26956            <!-- end of entry -->
26957         
26958                 
26959           <tr class="entry" id="controls_android.tonemap.gamma">
26960             <td class="entry_name
26961              " rowspan="3">
26962               android.<wbr/>tonemap.<wbr/>gamma
26963             </td>
26964             <td class="entry_type">
26965                 <span class="entry_type_name">float</span>
26966
26967               <span class="entry_type_visibility"> [public]</span>
26968
26969
26970
26971
26972
26973
26974             </td> <!-- entry_type -->
26975
26976             <td class="entry_description">
26977               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26978 GAMMA_<wbr/>VALUE</p>
26979             </td>
26980
26981             <td class="entry_units">
26982             </td>
26983
26984             <td class="entry_range">
26985             </td>
26986
26987             <td class="entry_hal_version">
26988               <p>3.<wbr/>2</p>
26989             </td>
26990
26991             <td class="entry_tags">
26992             </td>
26993
26994           </tr>
26995           <tr class="entries_header">
26996             <th class="th_details" colspan="6">Details</th>
26997           </tr>
26998           <tr class="entry_cont">
26999             <td class="entry_details" colspan="6">
27000               <p>The tonemap curve will be defined the following formula:
27001 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27002 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27003 pow is the power function and gamma is the gamma value specified by this
27004 key.<wbr/></p>
27005 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27006 may clip the input gamma value to its supported range.<wbr/> The actual applied
27007 value will be returned in capture result.<wbr/></p>
27008 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27009 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27010             </td>
27011           </tr>
27012
27013
27014           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27015            <!-- end of entry -->
27016         
27017                 
27018           <tr class="entry" id="controls_android.tonemap.presetCurve">
27019             <td class="entry_name
27020              " rowspan="3">
27021               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27022             </td>
27023             <td class="entry_type">
27024                 <span class="entry_type_name entry_type_name_enum">byte</span>
27025
27026               <span class="entry_type_visibility"> [public]</span>
27027
27028
27029
27030
27031
27032                 <ul class="entry_type_enum">
27033                   <li>
27034                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27035                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27036                   </li>
27037                   <li>
27038                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27039                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27040                   </li>
27041                 </ul>
27042
27043             </td> <!-- entry_type -->
27044
27045             <td class="entry_description">
27046               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27047 PRESET_<wbr/>CURVE</p>
27048             </td>
27049
27050             <td class="entry_units">
27051             </td>
27052
27053             <td class="entry_range">
27054             </td>
27055
27056             <td class="entry_hal_version">
27057               <p>3.<wbr/>2</p>
27058             </td>
27059
27060             <td class="entry_tags">
27061             </td>
27062
27063           </tr>
27064           <tr class="entries_header">
27065             <th class="th_details" colspan="6">Details</th>
27066           </tr>
27067           <tr class="entry_cont">
27068             <td class="entry_details" colspan="6">
27069               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27070 <p>sRGB (approximated by 16 control points):</p>
27071 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27072 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27073 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27074 <p>Note that above figures show a 16 control points approximation of preset
27075 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27076             </td>
27077           </tr>
27078
27079
27080           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27081            <!-- end of entry -->
27082         
27083         
27084
27085       <!-- end of kind -->
27086       </tbody>
27087       <tr><td colspan="7" class="kind">static</td></tr>
27088
27089       <thead class="entries_header">
27090         <tr>
27091           <th class="th_name">Property Name</th>
27092           <th class="th_type">Type</th>
27093           <th class="th_description">Description</th>
27094           <th class="th_units">Units</th>
27095           <th class="th_range">Range</th>
27096           <th class="th_hal_version">Initial HIDL HAL version</th>
27097           <th class="th_tags">Tags</th>
27098         </tr>
27099       </thead>
27100
27101       <tbody>
27102
27103         
27104
27105         
27106
27107         
27108
27109         
27110
27111                 
27112           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27113             <td class="entry_name
27114              " rowspan="5">
27115               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27116             </td>
27117             <td class="entry_type">
27118                 <span class="entry_type_name">int32</span>
27119
27120               <span class="entry_type_visibility"> [public]</span>
27121
27122
27123               <span class="entry_type_hwlevel">[full] </span>
27124
27125
27126
27127
27128             </td> <!-- entry_type -->
27129
27130             <td class="entry_description">
27131               <p>Maximum number of supported points in the
27132 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27133             </td>
27134
27135             <td class="entry_units">
27136             </td>
27137
27138             <td class="entry_range">
27139             </td>
27140
27141             <td class="entry_hal_version">
27142               <p>3.<wbr/>2</p>
27143             </td>
27144
27145             <td class="entry_tags">
27146             </td>
27147
27148           </tr>
27149           <tr class="entries_header">
27150             <th class="th_details" colspan="6">Details</th>
27151           </tr>
27152           <tr class="entry_cont">
27153             <td class="entry_details" colspan="6">
27154               <p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
27155 less than this maximum,<wbr/> the camera device will resample the curve to its internal
27156 representation,<wbr/> using linear interpolation.<wbr/></p>
27157 <p>The output curves in the result metadata may have a different number
27158 of points than the input curves,<wbr/> and will represent the actual
27159 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27160             </td>
27161           </tr>
27162
27163           <tr class="entries_header">
27164             <th class="th_details" colspan="6">HAL Implementation Details</th>
27165           </tr>
27166           <tr class="entry_cont">
27167             <td class="entry_details" colspan="6">
27168               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27169             </td>
27170           </tr>
27171
27172           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27173            <!-- end of entry -->
27174         
27175                 
27176           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27177             <td class="entry_name
27178              " rowspan="5">
27179               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27180             </td>
27181             <td class="entry_type">
27182                 <span class="entry_type_name">byte</span>
27183                 <span class="entry_type_container">x</span>
27184
27185                 <span class="entry_type_array">
27186                   n
27187                 </span>
27188               <span class="entry_type_visibility"> [public as enumList]</span>
27189
27190
27191               <span class="entry_type_hwlevel">[full] </span>
27192
27193
27194                 <div class="entry_type_notes">list of enums</div>
27195
27196
27197             </td> <!-- entry_type -->
27198
27199             <td class="entry_description">
27200               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27201 device.<wbr/></p>
27202             </td>
27203
27204             <td class="entry_units">
27205             </td>
27206
27207             <td class="entry_range">
27208               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27209             </td>
27210
27211             <td class="entry_hal_version">
27212               <p>3.<wbr/>2</p>
27213             </td>
27214
27215             <td class="entry_tags">
27216             </td>
27217
27218           </tr>
27219           <tr class="entries_header">
27220             <th class="th_details" colspan="6">Details</th>
27221           </tr>
27222           <tr class="entry_cont">
27223             <td class="entry_details" colspan="6">
27224               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27225 at least one of below mode combinations:</p>
27226 <ul>
27227 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27228 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27229 </ul>
27230 <p>This includes all FULL level devices.<wbr/></p>
27231             </td>
27232           </tr>
27233
27234           <tr class="entries_header">
27235             <th class="th_details" colspan="6">HAL Implementation Details</th>
27236           </tr>
27237           <tr class="entry_cont">
27238             <td class="entry_details" colspan="6">
27239               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27240 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27241 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27242 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27243             </td>
27244           </tr>
27245
27246           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27247            <!-- end of entry -->
27248         
27249         
27250
27251       <!-- end of kind -->
27252       </tbody>
27253       <tr><td colspan="7" class="kind">dynamic</td></tr>
27254
27255       <thead class="entries_header">
27256         <tr>
27257           <th class="th_name">Property Name</th>
27258           <th class="th_type">Type</th>
27259           <th class="th_description">Description</th>
27260           <th class="th_units">Units</th>
27261           <th class="th_range">Range</th>
27262           <th class="th_hal_version">Initial HIDL HAL version</th>
27263           <th class="th_tags">Tags</th>
27264         </tr>
27265       </thead>
27266
27267       <tbody>
27268
27269         
27270
27271         
27272
27273         
27274
27275         
27276
27277                 
27278           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27279             <td class="entry_name
27280              " rowspan="3">
27281               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27282             </td>
27283             <td class="entry_type">
27284                 <span class="entry_type_name">float</span>
27285                 <span class="entry_type_container">x</span>
27286
27287                 <span class="entry_type_array">
27288                   n x 2
27289                 </span>
27290               <span class="entry_type_visibility"> [ndk_public]</span>
27291
27292
27293               <span class="entry_type_hwlevel">[full] </span>
27294
27295
27296                 <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>
27297
27298
27299             </td> <!-- entry_type -->
27300
27301             <td class="entry_description">
27302               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27303 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27304 CONTRAST_<wbr/>CURVE.<wbr/></p>
27305             </td>
27306
27307             <td class="entry_units">
27308             </td>
27309
27310             <td class="entry_range">
27311             </td>
27312
27313             <td class="entry_hal_version">
27314               <p>3.<wbr/>2</p>
27315             </td>
27316
27317             <td class="entry_tags">
27318             </td>
27319
27320           </tr>
27321           <tr class="entries_header">
27322             <th class="th_details" colspan="6">Details</th>
27323           </tr>
27324           <tr class="entry_cont">
27325             <td class="entry_details" colspan="6">
27326               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27327             </td>
27328           </tr>
27329
27330
27331           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27332            <!-- end of entry -->
27333         
27334                 
27335           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27336             <td class="entry_name
27337              " rowspan="3">
27338               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27339             </td>
27340             <td class="entry_type">
27341                 <span class="entry_type_name">float</span>
27342                 <span class="entry_type_container">x</span>
27343
27344                 <span class="entry_type_array">
27345                   n x 2
27346                 </span>
27347               <span class="entry_type_visibility"> [ndk_public]</span>
27348
27349
27350               <span class="entry_type_hwlevel">[full] </span>
27351
27352
27353                 <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>
27354
27355
27356             </td> <!-- entry_type -->
27357
27358             <td class="entry_description">
27359               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27360 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27361 CONTRAST_<wbr/>CURVE.<wbr/></p>
27362             </td>
27363
27364             <td class="entry_units">
27365             </td>
27366
27367             <td class="entry_range">
27368             </td>
27369
27370             <td class="entry_hal_version">
27371               <p>3.<wbr/>2</p>
27372             </td>
27373
27374             <td class="entry_tags">
27375             </td>
27376
27377           </tr>
27378           <tr class="entries_header">
27379             <th class="th_details" colspan="6">Details</th>
27380           </tr>
27381           <tr class="entry_cont">
27382             <td class="entry_details" colspan="6">
27383               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27384             </td>
27385           </tr>
27386
27387
27388           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27389            <!-- end of entry -->
27390         
27391                 
27392           <tr class="entry" id="dynamic_android.tonemap.curveRed">
27393             <td class="entry_name
27394              " rowspan="5">
27395               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27396             </td>
27397             <td class="entry_type">
27398                 <span class="entry_type_name">float</span>
27399                 <span class="entry_type_container">x</span>
27400
27401                 <span class="entry_type_array">
27402                   n x 2
27403                 </span>
27404               <span class="entry_type_visibility"> [ndk_public]</span>
27405
27406
27407               <span class="entry_type_hwlevel">[full] </span>
27408
27409
27410                 <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>
27411
27412
27413             </td> <!-- entry_type -->
27414
27415             <td class="entry_description">
27416               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27417 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27418 CONTRAST_<wbr/>CURVE.<wbr/></p>
27419             </td>
27420
27421             <td class="entry_units">
27422             </td>
27423
27424             <td class="entry_range">
27425               <p>0-1 on both input and output coordinates,<wbr/> normalized
27426 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27427             </td>
27428
27429             <td class="entry_hal_version">
27430               <p>3.<wbr/>2</p>
27431             </td>
27432
27433             <td class="entry_tags">
27434             </td>
27435
27436           </tr>
27437           <tr class="entries_header">
27438             <th class="th_details" colspan="6">Details</th>
27439           </tr>
27440           <tr class="entry_cont">
27441             <td class="entry_details" colspan="6">
27442               <p>Each channel's curve is defined by an array of control points:</p>
27443 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27444   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27445 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27446 <p>These are sorted in order of increasing <code>Pin</code>; it is
27447 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27448 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27449 the camera device must linearly interpolate between the control
27450 points.<wbr/></p>
27451 <p>Each curve can have an independent number of points,<wbr/> and the number
27452 of points can be less than max (that is,<wbr/> the request doesn't have to
27453 always provide a curve with number of points equivalent to
27454 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27455 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27456 are ignored.<wbr/></p>
27457 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27458 only specify the red channel and the precision is limited to 4
27459 digits,<wbr/> for conciseness.<wbr/></p>
27460 <p>Linear mapping:</p>
27461 <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 ]
27462 </code></pre>
27463 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27464 <p>Invert mapping:</p>
27465 <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 ]
27466 </code></pre>
27467 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27468 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27469 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27470   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/>
27471   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/>
27472   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/>
27473   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 ]
27474 </code></pre>
27475 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27476 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27477 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27478   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/>
27479   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/>
27480   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/>
27481   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 ]
27482 </code></pre>
27483 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27484             </td>
27485           </tr>
27486
27487           <tr class="entries_header">
27488             <th class="th_details" colspan="6">HAL Implementation Details</th>
27489           </tr>
27490           <tr class="entry_cont">
27491             <td class="entry_details" colspan="6">
27492               <p>For good quality of mapping,<wbr/> at least 128 control points are
27493 preferred.<wbr/></p>
27494 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27495 control points used as are available.<wbr/></p>
27496             </td>
27497           </tr>
27498
27499           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27500            <!-- end of entry -->
27501         
27502                 
27503           <tr class="entry" id="dynamic_android.tonemap.curve">
27504             <td class="entry_name
27505              " rowspan="5">
27506               android.<wbr/>tonemap.<wbr/>curve
27507             </td>
27508             <td class="entry_type">
27509                 <span class="entry_type_name">float</span>
27510
27511               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27512
27513               <span class="entry_type_synthetic">[synthetic] </span>
27514
27515               <span class="entry_type_hwlevel">[full] </span>
27516
27517
27518
27519
27520             </td> <!-- entry_type -->
27521
27522             <td class="entry_description">
27523               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27524 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27525             </td>
27526
27527             <td class="entry_units">
27528             </td>
27529
27530             <td class="entry_range">
27531             </td>
27532
27533             <td class="entry_hal_version">
27534               <p>3.<wbr/>2</p>
27535             </td>
27536
27537             <td class="entry_tags">
27538             </td>
27539
27540           </tr>
27541           <tr class="entries_header">
27542             <th class="th_details" colspan="6">Details</th>
27543           </tr>
27544           <tr class="entry_cont">
27545             <td class="entry_details" colspan="6">
27546               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27547 channels respectively.<wbr/> The following example uses the red channel as an
27548 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27549 Each channel's curve is defined by an array of control points:</p>
27550 <pre><code>curveRed =
27551   [ 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) ]
27552 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27553 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27554 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27555 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27556 the camera device must linearly interpolate between the control
27557 points.<wbr/></p>
27558 <p>Each curve can have an independent number of points,<wbr/> and the number
27559 of points can be less than max (that is,<wbr/> the request doesn't have to
27560 always provide a curve with number of points equivalent to
27561 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27562 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27563 are ignored.<wbr/></p>
27564 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27565 only specify the red channel and the precision is limited to 4
27566 digits,<wbr/> for conciseness.<wbr/></p>
27567 <p>Linear mapping:</p>
27568 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27569 </code></pre>
27570 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27571 <p>Invert mapping:</p>
27572 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27573 </code></pre>
27574 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27575 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27576 <pre><code>curveRed = [
27577   (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/>
27578   (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/>
27579   (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/>
27580   (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) ]
27581 </code></pre>
27582 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27583 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27584 <pre><code>curveRed = [
27585   (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/>
27586   (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/>
27587   (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/>
27588   (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) ]
27589 </code></pre>
27590 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27591             </td>
27592           </tr>
27593
27594           <tr class="entries_header">
27595             <th class="th_details" colspan="6">HAL Implementation Details</th>
27596           </tr>
27597           <tr class="entry_cont">
27598             <td class="entry_details" colspan="6">
27599               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27600 curveBlue entries.<wbr/></p>
27601             </td>
27602           </tr>
27603
27604           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27605            <!-- end of entry -->
27606         
27607                 
27608           <tr class="entry" id="dynamic_android.tonemap.mode">
27609             <td class="entry_name
27610              " rowspan="3">
27611               android.<wbr/>tonemap.<wbr/>mode
27612             </td>
27613             <td class="entry_type">
27614                 <span class="entry_type_name entry_type_name_enum">byte</span>
27615
27616               <span class="entry_type_visibility"> [public]</span>
27617
27618
27619               <span class="entry_type_hwlevel">[full] </span>
27620
27621
27622
27623                 <ul class="entry_type_enum">
27624                   <li>
27625                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27626                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27627 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27628 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27629 for applying the tonemapping curve specified by
27630 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27631 <p>Must not slow down frame rate relative to raw
27632 sensor output.<wbr/></p></span>
27633                   </li>
27634                   <li>
27635                     <span class="entry_type_enum_name">FAST (v3.2)</span>
27636                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27637 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27638                   </li>
27639                   <li>
27640                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27641                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27642 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27643                   </li>
27644                   <li>
27645                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27646                     <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
27647 tonemapping.<wbr/></p>
27648 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27649 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27650 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27651                   </li>
27652                   <li>
27653                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27654                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27655 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27656 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27657 for applying the tonemapping curve specified by
27658 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27659 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27660                   </li>
27661                 </ul>
27662
27663             </td> <!-- entry_type -->
27664
27665             <td class="entry_description">
27666               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27667             </td>
27668
27669             <td class="entry_units">
27670             </td>
27671
27672             <td class="entry_range">
27673               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27674             </td>
27675
27676             <td class="entry_hal_version">
27677               <p>3.<wbr/>2</p>
27678             </td>
27679
27680             <td class="entry_tags">
27681             </td>
27682
27683           </tr>
27684           <tr class="entries_header">
27685             <th class="th_details" colspan="6">Details</th>
27686           </tr>
27687           <tr class="entry_cont">
27688             <td class="entry_details" colspan="6">
27689               <p>When switching to an application-defined contrast curve by setting
27690 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27691 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27692 mapping from input high-bit-depth pixel value to the output
27693 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27694 and output may change depending on the camera pipeline,<wbr/> the values
27695 are specified by normalized floating-point numbers.<wbr/></p>
27696 <p>More-complex color mapping operations such as 3D color look-up
27697 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27698 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27699 CONTRAST_<wbr/>CURVE.<wbr/></p>
27700 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27701 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27702 These values are always available,<wbr/> and as close as possible to the
27703 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27704 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27705 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27706 roughly the same.<wbr/></p>
27707             </td>
27708           </tr>
27709
27710
27711           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27712            <!-- end of entry -->
27713         
27714                 
27715           <tr class="entry" id="dynamic_android.tonemap.gamma">
27716             <td class="entry_name
27717              " rowspan="3">
27718               android.<wbr/>tonemap.<wbr/>gamma
27719             </td>
27720             <td class="entry_type">
27721                 <span class="entry_type_name">float</span>
27722
27723               <span class="entry_type_visibility"> [public]</span>
27724
27725
27726
27727
27728
27729
27730             </td> <!-- entry_type -->
27731
27732             <td class="entry_description">
27733               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27734 GAMMA_<wbr/>VALUE</p>
27735             </td>
27736
27737             <td class="entry_units">
27738             </td>
27739
27740             <td class="entry_range">
27741             </td>
27742
27743             <td class="entry_hal_version">
27744               <p>3.<wbr/>2</p>
27745             </td>
27746
27747             <td class="entry_tags">
27748             </td>
27749
27750           </tr>
27751           <tr class="entries_header">
27752             <th class="th_details" colspan="6">Details</th>
27753           </tr>
27754           <tr class="entry_cont">
27755             <td class="entry_details" colspan="6">
27756               <p>The tonemap curve will be defined the following formula:
27757 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27758 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27759 pow is the power function and gamma is the gamma value specified by this
27760 key.<wbr/></p>
27761 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27762 may clip the input gamma value to its supported range.<wbr/> The actual applied
27763 value will be returned in capture result.<wbr/></p>
27764 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27765 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27766             </td>
27767           </tr>
27768
27769
27770           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27771            <!-- end of entry -->
27772         
27773                 
27774           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27775             <td class="entry_name
27776              " rowspan="3">
27777               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27778             </td>
27779             <td class="entry_type">
27780                 <span class="entry_type_name entry_type_name_enum">byte</span>
27781
27782               <span class="entry_type_visibility"> [public]</span>
27783
27784
27785
27786
27787
27788                 <ul class="entry_type_enum">
27789                   <li>
27790                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27791                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27792                   </li>
27793                   <li>
27794                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27795                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27796                   </li>
27797                 </ul>
27798
27799             </td> <!-- entry_type -->
27800
27801             <td class="entry_description">
27802               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27803 PRESET_<wbr/>CURVE</p>
27804             </td>
27805
27806             <td class="entry_units">
27807             </td>
27808
27809             <td class="entry_range">
27810             </td>
27811
27812             <td class="entry_hal_version">
27813               <p>3.<wbr/>2</p>
27814             </td>
27815
27816             <td class="entry_tags">
27817             </td>
27818
27819           </tr>
27820           <tr class="entries_header">
27821             <th class="th_details" colspan="6">Details</th>
27822           </tr>
27823           <tr class="entry_cont">
27824             <td class="entry_details" colspan="6">
27825               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27826 <p>sRGB (approximated by 16 control points):</p>
27827 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27828 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27829 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27830 <p>Note that above figures show a 16 control points approximation of preset
27831 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27832             </td>
27833           </tr>
27834
27835
27836           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27837            <!-- end of entry -->
27838         
27839         
27840
27841       <!-- end of kind -->
27842       </tbody>
27843
27844   <!-- end of section -->
27845   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27846
27847
27848       <tr><td colspan="7" class="kind">controls</td></tr>
27849
27850       <thead class="entries_header">
27851         <tr>
27852           <th class="th_name">Property Name</th>
27853           <th class="th_type">Type</th>
27854           <th class="th_description">Description</th>
27855           <th class="th_units">Units</th>
27856           <th class="th_range">Range</th>
27857           <th class="th_hal_version">Initial HIDL HAL version</th>
27858           <th class="th_tags">Tags</th>
27859         </tr>
27860       </thead>
27861
27862       <tbody>
27863
27864         
27865
27866         
27867
27868         
27869
27870         
27871
27872                 
27873           <tr class="entry" id="controls_android.led.transmit">
27874             <td class="entry_name
27875              " rowspan="1">
27876               android.<wbr/>led.<wbr/>transmit
27877             </td>
27878             <td class="entry_type">
27879                 <span class="entry_type_name entry_type_name_enum">byte</span>
27880
27881               <span class="entry_type_visibility"> [hidden as boolean]</span>
27882
27883
27884
27885
27886
27887                 <ul class="entry_type_enum">
27888                   <li>
27889                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27890                   </li>
27891                   <li>
27892                     <span class="entry_type_enum_name">ON (v3.2)</span>
27893                   </li>
27894                 </ul>
27895
27896             </td> <!-- entry_type -->
27897
27898             <td class="entry_description">
27899               <p>This LED is nominally used to indicate to the user
27900 that the camera is powered on and may be streaming images back to the
27901 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27902 disable this when video is processed locally and not transmitted to
27903 any untrusted applications.<wbr/></p>
27904 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27905 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27906 data is stored locally on the device.<wbr/></p>
27907 <p>The LED <em>may</em> be off if a trusted application is using the data that
27908 doesn't violate the above rules.<wbr/></p>
27909             </td>
27910
27911             <td class="entry_units">
27912             </td>
27913
27914             <td class="entry_range">
27915             </td>
27916
27917             <td class="entry_hal_version">
27918               <p>3.<wbr/>2</p>
27919             </td>
27920
27921             <td class="entry_tags">
27922             </td>
27923
27924           </tr>
27925
27926
27927           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27928            <!-- end of entry -->
27929         
27930         
27931
27932       <!-- end of kind -->
27933       </tbody>
27934       <tr><td colspan="7" class="kind">dynamic</td></tr>
27935
27936       <thead class="entries_header">
27937         <tr>
27938           <th class="th_name">Property Name</th>
27939           <th class="th_type">Type</th>
27940           <th class="th_description">Description</th>
27941           <th class="th_units">Units</th>
27942           <th class="th_range">Range</th>
27943           <th class="th_hal_version">Initial HIDL HAL version</th>
27944           <th class="th_tags">Tags</th>
27945         </tr>
27946       </thead>
27947
27948       <tbody>
27949
27950         
27951
27952         
27953
27954         
27955
27956         
27957
27958                 
27959           <tr class="entry" id="dynamic_android.led.transmit">
27960             <td class="entry_name
27961              " rowspan="1">
27962               android.<wbr/>led.<wbr/>transmit
27963             </td>
27964             <td class="entry_type">
27965                 <span class="entry_type_name entry_type_name_enum">byte</span>
27966
27967               <span class="entry_type_visibility"> [hidden as boolean]</span>
27968
27969
27970
27971
27972
27973                 <ul class="entry_type_enum">
27974                   <li>
27975                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27976                   </li>
27977                   <li>
27978                     <span class="entry_type_enum_name">ON (v3.2)</span>
27979                   </li>
27980                 </ul>
27981
27982             </td> <!-- entry_type -->
27983
27984             <td class="entry_description">
27985               <p>This LED is nominally used to indicate to the user
27986 that the camera is powered on and may be streaming images back to the
27987 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27988 disable this when video is processed locally and not transmitted to
27989 any untrusted applications.<wbr/></p>
27990 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27991 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27992 data is stored locally on the device.<wbr/></p>
27993 <p>The LED <em>may</em> be off if a trusted application is using the data that
27994 doesn't violate the above rules.<wbr/></p>
27995             </td>
27996
27997             <td class="entry_units">
27998             </td>
27999
28000             <td class="entry_range">
28001             </td>
28002
28003             <td class="entry_hal_version">
28004               <p>3.<wbr/>2</p>
28005             </td>
28006
28007             <td class="entry_tags">
28008             </td>
28009
28010           </tr>
28011
28012
28013           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28014            <!-- end of entry -->
28015         
28016         
28017
28018       <!-- end of kind -->
28019       </tbody>
28020       <tr><td colspan="7" class="kind">static</td></tr>
28021
28022       <thead class="entries_header">
28023         <tr>
28024           <th class="th_name">Property Name</th>
28025           <th class="th_type">Type</th>
28026           <th class="th_description">Description</th>
28027           <th class="th_units">Units</th>
28028           <th class="th_range">Range</th>
28029           <th class="th_hal_version">Initial HIDL HAL version</th>
28030           <th class="th_tags">Tags</th>
28031         </tr>
28032       </thead>
28033
28034       <tbody>
28035
28036         
28037
28038         
28039
28040         
28041
28042         
28043
28044                 
28045           <tr class="entry" id="static_android.led.availableLeds">
28046             <td class="entry_name
28047              " rowspan="1">
28048               android.<wbr/>led.<wbr/>available<wbr/>Leds
28049             </td>
28050             <td class="entry_type">
28051                 <span class="entry_type_name entry_type_name_enum">byte</span>
28052                 <span class="entry_type_container">x</span>
28053
28054                 <span class="entry_type_array">
28055                   n
28056                 </span>
28057               <span class="entry_type_visibility"> [hidden]</span>
28058
28059
28060
28061
28062
28063                 <ul class="entry_type_enum">
28064                   <li>
28065                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28066                     <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>
28067                   </li>
28068                 </ul>
28069
28070             </td> <!-- entry_type -->
28071
28072             <td class="entry_description">
28073               <p>A list of camera LEDs that are available on this system.<wbr/></p>
28074             </td>
28075
28076             <td class="entry_units">
28077             </td>
28078
28079             <td class="entry_range">
28080             </td>
28081
28082             <td class="entry_hal_version">
28083               <p>3.<wbr/>2</p>
28084             </td>
28085
28086             <td class="entry_tags">
28087             </td>
28088
28089           </tr>
28090
28091
28092           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28093            <!-- end of entry -->
28094         
28095         
28096
28097       <!-- end of kind -->
28098       </tbody>
28099
28100   <!-- end of section -->
28101   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28102
28103
28104       <tr><td colspan="7" class="kind">static</td></tr>
28105
28106       <thead class="entries_header">
28107         <tr>
28108           <th class="th_name">Property Name</th>
28109           <th class="th_type">Type</th>
28110           <th class="th_description">Description</th>
28111           <th class="th_units">Units</th>
28112           <th class="th_range">Range</th>
28113           <th class="th_hal_version">Initial HIDL HAL version</th>
28114           <th class="th_tags">Tags</th>
28115         </tr>
28116       </thead>
28117
28118       <tbody>
28119
28120         
28121
28122         
28123
28124         
28125
28126         
28127
28128                 
28129           <tr class="entry" id="static_android.info.supportedHardwareLevel">
28130             <td class="entry_name
28131              " rowspan="5">
28132               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28133             </td>
28134             <td class="entry_type">
28135                 <span class="entry_type_name entry_type_name_enum">byte</span>
28136
28137               <span class="entry_type_visibility"> [public]</span>
28138
28139
28140               <span class="entry_type_hwlevel">[legacy] </span>
28141
28142
28143
28144                 <ul class="entry_type_enum">
28145                   <li>
28146                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28147                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28148 better.<wbr/></p>
28149 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28150 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28151 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28152 support for color image capture.<wbr/> The only exception is that the device may
28153 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28154 measurements and not color images.<wbr/></p>
28155 <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>
28156 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28157 capturing a high-quality still image.<wbr/></p>
28158 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28159 required to support full-automatic operation and post-processing (<code>OFF</code> is not
28160 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
28161 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28162 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28163 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28164                   </li>
28165                   <li>
28166                     <span class="entry_type_enum_name">FULL (v3.2)</span>
28167                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28168 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28169 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28170 <p>A <code>FULL</code> device will support below capabilities:</p>
28171 <ul>
28172 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28173   <code>BURST_<wbr/>CAPTURE</code>)</li>
28174 <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>
28175 <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>
28176 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28177   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28178 <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>
28179 <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>
28180 </ul>
28181 <p>Note:
28182 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28183 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
28184 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28185                   </li>
28186                   <li>
28187                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28188                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28189 <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>
28190 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28191 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28192 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28193 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28194 <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>
28195 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28196 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
28197 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28198 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28199 enable the flash.<wbr/></p></span>
28200                   </li>
28201                   <li>
28202                     <span class="entry_type_enum_name">3 (v3.2)</span>
28203                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28204 FULL-level capabilities.<wbr/></p>
28205 <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
28206 <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>
28207 <p>The following additional capabilities are guaranteed to be supported:</p>
28208 <ul>
28209 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28210   <code>YUV_<wbr/>REPROCESSING</code>)</li>
28211 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28212   <code>RAW</code>)</li>
28213 </ul></span>
28214                   </li>
28215                   <li>
28216                     <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28217                     <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28218 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28219 exceptions:</p>
28220 <ul>
28221 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
28222 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28223 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28224 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28225 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28226 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28227 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28228 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28229 </ul>
28230 </li>
28231 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28232 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28233   on the external camera being used.<wbr/></li>
28234 </ul></span>
28235                   </li>
28236                 </ul>
28237
28238             </td> <!-- entry_type -->
28239
28240             <td class="entry_description">
28241               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28242             </td>
28243
28244             <td class="entry_units">
28245             </td>
28246
28247             <td class="entry_range">
28248             </td>
28249
28250             <td class="entry_hal_version">
28251               <p>3.<wbr/>2</p>
28252             </td>
28253
28254             <td class="entry_tags">
28255             </td>
28256
28257           </tr>
28258           <tr class="entries_header">
28259             <th class="th_details" colspan="6">Details</th>
28260           </tr>
28261           <tr class="entry_cont">
28262             <td class="entry_details" colspan="6">
28263               <p>The supported hardware level is a high-level description of the camera device's
28264 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
28265 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28266 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
28267 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28268 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28269 the following code snippet can be used:</p>
28270 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28271 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28272     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28273     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28274         return requiredLevel == deviceLevel;
28275     }
28276     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28277     return requiredLevel &lt;= deviceLevel;
28278 }
28279 </code></pre>
28280 <p>At a high level,<wbr/> the levels are:</p>
28281 <ul>
28282 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28283   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28284 <li><code>LIMITED</code> devices represent the
28285   baseline feature set,<wbr/> and may also include additional capabilities that are
28286   subsets of <code>FULL</code>.<wbr/></li>
28287 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28288   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28289 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28290   with additional output stream configurations.<wbr/></li>
28291 </ul>
28292 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
28293 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28294 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28295 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28296 <p>Some features are not part of any particular hardware level or capability and must be
28297 queried separately.<wbr/> These include:</p>
28298 <ul>
28299 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28300 <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>
28301 <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>
28302 <li>Optical or electrical image stabilization
28303   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28304    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28305 </ul>
28306             </td>
28307           </tr>
28308
28309           <tr class="entries_header">
28310             <th class="th_details" colspan="6">HAL Implementation Details</th>
28311           </tr>
28312           <tr class="entry_cont">
28313             <td class="entry_details" colspan="6">
28314               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28315 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28316 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28317 mode has hardware requirements roughly in line with those for a camera HAL device v1
28318 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28319 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28320 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28321 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28322 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28323 implemented by the camera framework code.<wbr/></p>
28324 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28325 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28326 The ITS test suite is exempted for the same reason.<wbr/></p>
28327             </td>
28328           </tr>
28329
28330           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28331            <!-- end of entry -->
28332         
28333                 
28334           <tr class="entry" id="static_android.info.version">
28335             <td class="entry_name
28336              " rowspan="5">
28337               android.<wbr/>info.<wbr/>version
28338             </td>
28339             <td class="entry_type">
28340                 <span class="entry_type_name">byte</span>
28341
28342               <span class="entry_type_visibility"> [public as string]</span>
28343
28344
28345
28346
28347
28348
28349             </td> <!-- entry_type -->
28350
28351             <td class="entry_description">
28352               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28353 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28354             </td>
28355
28356             <td class="entry_units">
28357             </td>
28358
28359             <td class="entry_range">
28360             </td>
28361
28362             <td class="entry_hal_version">
28363               <p>3.<wbr/>3</p>
28364             </td>
28365
28366             <td class="entry_tags">
28367             </td>
28368
28369           </tr>
28370           <tr class="entries_header">
28371             <th class="th_details" colspan="6">Details</th>
28372           </tr>
28373           <tr class="entry_cont">
28374             <td class="entry_details" colspan="6">
28375               <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>
28376 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28377 device.<wbr/></p>
28378             </td>
28379           </tr>
28380
28381           <tr class="entries_header">
28382             <th class="th_details" colspan="6">HAL Implementation Details</th>
28383           </tr>
28384           <tr class="entry_cont">
28385             <td class="entry_details" colspan="6">
28386               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28387 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28388 It must not exceed 256 characters.<wbr/></p>
28389             </td>
28390           </tr>
28391
28392           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28393            <!-- end of entry -->
28394         
28395         
28396
28397       <!-- end of kind -->
28398       </tbody>
28399
28400   <!-- end of section -->
28401   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28402
28403
28404       <tr><td colspan="7" class="kind">controls</td></tr>
28405
28406       <thead class="entries_header">
28407         <tr>
28408           <th class="th_name">Property Name</th>
28409           <th class="th_type">Type</th>
28410           <th class="th_description">Description</th>
28411           <th class="th_units">Units</th>
28412           <th class="th_range">Range</th>
28413           <th class="th_hal_version">Initial HIDL HAL version</th>
28414           <th class="th_tags">Tags</th>
28415         </tr>
28416       </thead>
28417
28418       <tbody>
28419
28420         
28421
28422         
28423
28424         
28425
28426         
28427
28428                 
28429           <tr class="entry" id="controls_android.blackLevel.lock">
28430             <td class="entry_name
28431              " rowspan="5">
28432               android.<wbr/>black<wbr/>Level.<wbr/>lock
28433             </td>
28434             <td class="entry_type">
28435                 <span class="entry_type_name entry_type_name_enum">byte</span>
28436
28437               <span class="entry_type_visibility"> [public as boolean]</span>
28438
28439
28440               <span class="entry_type_hwlevel">[full] </span>
28441
28442
28443
28444                 <ul class="entry_type_enum">
28445                   <li>
28446                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28447                   </li>
28448                   <li>
28449                     <span class="entry_type_enum_name">ON (v3.2)</span>
28450                   </li>
28451                 </ul>
28452
28453             </td> <!-- entry_type -->
28454
28455             <td class="entry_description">
28456               <p>Whether black-level compensation is locked
28457 to its current values,<wbr/> or is free to vary.<wbr/></p>
28458             </td>
28459
28460             <td class="entry_units">
28461             </td>
28462
28463             <td class="entry_range">
28464             </td>
28465
28466             <td class="entry_hal_version">
28467               <p>3.<wbr/>2</p>
28468             </td>
28469
28470             <td class="entry_tags">
28471               <ul class="entry_tags">
28472                   <li><a href="#tag_HAL2">HAL2</a></li>
28473               </ul>
28474             </td>
28475
28476           </tr>
28477           <tr class="entries_header">
28478             <th class="th_details" colspan="6">Details</th>
28479           </tr>
28480           <tr class="entry_cont">
28481             <td class="entry_details" colspan="6">
28482               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28483 compensation will not change until the lock is set to
28484 <code>false</code> (OFF).<wbr/></p>
28485 <p>Since changes to certain capture parameters (such as
28486 exposure time) may require resetting of black level
28487 compensation,<wbr/> the camera device must report whether setting
28488 the black level lock was successful in the output result
28489 metadata.<wbr/></p>
28490 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28491 <ul>
28492 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28493 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28494 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28495 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28496 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28497 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28498 </ul>
28499 <p>And the exposure change in Request 4 requires the camera
28500 device to reset the black level offsets,<wbr/> then the output
28501 result metadata is expected to be:</p>
28502 <ul>
28503 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28504 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28505 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28506 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28507 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28508 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28509 </ul>
28510 <p>This indicates to the application that on frame 4,<wbr/> black
28511 levels were reset due to exposure value changes,<wbr/> and pixel
28512 values may not be consistent across captures.<wbr/></p>
28513 <p>The camera device will maintain the lock to the extent
28514 possible,<wbr/> only overriding the lock to OFF when changes to
28515 other request parameters require a black level recalculation
28516 or reset.<wbr/></p>
28517             </td>
28518           </tr>
28519
28520           <tr class="entries_header">
28521             <th class="th_details" colspan="6">HAL Implementation Details</th>
28522           </tr>
28523           <tr class="entry_cont">
28524             <td class="entry_details" colspan="6">
28525               <p>If for some reason black level locking is no longer possible
28526 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28527 black level offsets to be recalculated),<wbr/> then the HAL must
28528 override this request (and it must report 'OFF' when this
28529 does happen) until the next capture for which locking is
28530 possible again.<wbr/></p>
28531             </td>
28532           </tr>
28533
28534           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28535            <!-- end of entry -->
28536         
28537         
28538
28539       <!-- end of kind -->
28540       </tbody>
28541       <tr><td colspan="7" class="kind">dynamic</td></tr>
28542
28543       <thead class="entries_header">
28544         <tr>
28545           <th class="th_name">Property Name</th>
28546           <th class="th_type">Type</th>
28547           <th class="th_description">Description</th>
28548           <th class="th_units">Units</th>
28549           <th class="th_range">Range</th>
28550           <th class="th_hal_version">Initial HIDL HAL version</th>
28551           <th class="th_tags">Tags</th>
28552         </tr>
28553       </thead>
28554
28555       <tbody>
28556
28557         
28558
28559         
28560
28561         
28562
28563         
28564
28565                 
28566           <tr class="entry" id="dynamic_android.blackLevel.lock">
28567             <td class="entry_name
28568              " rowspan="5">
28569               android.<wbr/>black<wbr/>Level.<wbr/>lock
28570             </td>
28571             <td class="entry_type">
28572                 <span class="entry_type_name entry_type_name_enum">byte</span>
28573
28574               <span class="entry_type_visibility"> [public as boolean]</span>
28575
28576
28577               <span class="entry_type_hwlevel">[full] </span>
28578
28579
28580
28581                 <ul class="entry_type_enum">
28582                   <li>
28583                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28584                   </li>
28585                   <li>
28586                     <span class="entry_type_enum_name">ON (v3.2)</span>
28587                   </li>
28588                 </ul>
28589
28590             </td> <!-- entry_type -->
28591
28592             <td class="entry_description">
28593               <p>Whether black-level compensation is locked
28594 to its current values,<wbr/> or is free to vary.<wbr/></p>
28595             </td>
28596
28597             <td class="entry_units">
28598             </td>
28599
28600             <td class="entry_range">
28601             </td>
28602
28603             <td class="entry_hal_version">
28604               <p>3.<wbr/>2</p>
28605             </td>
28606
28607             <td class="entry_tags">
28608               <ul class="entry_tags">
28609                   <li><a href="#tag_HAL2">HAL2</a></li>
28610               </ul>
28611             </td>
28612
28613           </tr>
28614           <tr class="entries_header">
28615             <th class="th_details" colspan="6">Details</th>
28616           </tr>
28617           <tr class="entry_cont">
28618             <td class="entry_details" colspan="6">
28619               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28620 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28621 a change in other capture settings forced the camera device to
28622 perform a black level reset.<wbr/></p>
28623             </td>
28624           </tr>
28625
28626           <tr class="entries_header">
28627             <th class="th_details" colspan="6">HAL Implementation Details</th>
28628           </tr>
28629           <tr class="entry_cont">
28630             <td class="entry_details" colspan="6">
28631               <p>If for some reason black level locking is no longer possible
28632 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28633 black level offsets to be recalculated),<wbr/> then the HAL must
28634 override this request (and it must report 'OFF' when this
28635 does happen) until the next capture for which locking is
28636 possible again.<wbr/></p>
28637             </td>
28638           </tr>
28639
28640           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28641            <!-- end of entry -->
28642         
28643         
28644
28645       <!-- end of kind -->
28646       </tbody>
28647
28648   <!-- end of section -->
28649   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28650
28651
28652       <tr><td colspan="7" class="kind">dynamic</td></tr>
28653
28654       <thead class="entries_header">
28655         <tr>
28656           <th class="th_name">Property Name</th>
28657           <th class="th_type">Type</th>
28658           <th class="th_description">Description</th>
28659           <th class="th_units">Units</th>
28660           <th class="th_range">Range</th>
28661           <th class="th_hal_version">Initial HIDL HAL version</th>
28662           <th class="th_tags">Tags</th>
28663         </tr>
28664       </thead>
28665
28666       <tbody>
28667
28668         
28669
28670         
28671
28672         
28673
28674         
28675
28676                 
28677           <tr class="entry" id="dynamic_android.sync.frameNumber">
28678             <td class="entry_name
28679              " rowspan="5">
28680               android.<wbr/>sync.<wbr/>frame<wbr/>Number
28681             </td>
28682             <td class="entry_type">
28683                 <span class="entry_type_name entry_type_name_enum">int64</span>
28684
28685               <span class="entry_type_visibility"> [ndk_public]</span>
28686
28687
28688               <span class="entry_type_hwlevel">[legacy] </span>
28689
28690
28691
28692                 <ul class="entry_type_enum">
28693                   <li>
28694                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28695                     <span class="entry_type_enum_value">-1</span>
28696                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28697 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28698 result may include a mix of data that have taken effect since the
28699 last synchronization time.<wbr/></p>
28700 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28701 this value will update to the actual frame number frame number
28702 the result is guaranteed to be synchronized to (as long as the
28703 request settings remain constant).<wbr/></p></span>
28704                   </li>
28705                   <li>
28706                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28707                     <span class="entry_type_enum_value">-2</span>
28708                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28709 <p>The result may have already converged,<wbr/> or it may be in
28710 progress.<wbr/>  Reading from this result may include some mix
28711 of settings from past requests.<wbr/></p>
28712 <p>After a settings change,<wbr/> the new settings will eventually all
28713 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28714 value will not change when that happens.<wbr/> Altering settings
28715 rapidly may provide outcomes using mixes of settings from recent
28716 requests.<wbr/></p>
28717 <p>This value is intended primarily for backwards compatibility with
28718 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28719                   </li>
28720                 </ul>
28721
28722             </td> <!-- entry_type -->
28723
28724             <td class="entry_description">
28725               <p>The frame number corresponding to the last request
28726 with which the output result (metadata + buffers) has been fully
28727 synchronized.<wbr/></p>
28728             </td>
28729
28730             <td class="entry_units">
28731             </td>
28732
28733             <td class="entry_range">
28734               <p>Either a non-negative value corresponding to a
28735 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28736             </td>
28737
28738             <td class="entry_hal_version">
28739               <p>3.<wbr/>2</p>
28740             </td>
28741
28742             <td class="entry_tags">
28743               <ul class="entry_tags">
28744                   <li><a href="#tag_V1">V1</a></li>
28745               </ul>
28746             </td>
28747
28748           </tr>
28749           <tr class="entries_header">
28750             <th class="th_details" colspan="6">Details</th>
28751           </tr>
28752           <tr class="entry_cont">
28753             <td class="entry_details" colspan="6">
28754               <p>When a request is submitted to the camera device,<wbr/> there is usually a
28755 delay of several frames before the controls get applied.<wbr/> A camera
28756 device may either choose to account for this delay by implementing a
28757 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28758 it may start streaming control changes that span over several frame
28759 boundaries.<wbr/></p>
28760 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28761 the previous submitted request,<wbr/> the full set of changes may take
28762 multiple frame durations to fully take effect.<wbr/> Some settings may
28763 take effect sooner (in less frame durations) than others.<wbr/></p>
28764 <p>While a set of control changes are being propagated,<wbr/> this value
28765 will be CONVERGING.<wbr/></p>
28766 <p>Once it is fully known that a set of control changes have been
28767 finished propagating,<wbr/> and the resulting updated control settings
28768 have been read back by the camera device,<wbr/> this value will be set
28769 to a non-negative frame number (corresponding to the request to
28770 which the results have synchronized to).<wbr/></p>
28771 <p>Older camera device implementations may not have a way to detect
28772 when all camera controls have been applied,<wbr/> and will always set this
28773 value to UNKNOWN.<wbr/></p>
28774 <p>FULL capability devices will always have this value set to the
28775 frame number of the request corresponding to this result.<wbr/></p>
28776 <p><em>Further details</em>:</p>
28777 <ul>
28778 <li>Whenever a request differs from the last request,<wbr/> any future
28779 results not yet returned may have this value set to CONVERGING (this
28780 could include any in-progress captures not yet returned by the camera
28781 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28782 <li>Submitting a series of multiple requests that differ from the
28783 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28784 moves the new synchronization frame to the last non-repeating
28785 request (using the smallest frame number from the contiguous list of
28786 repeating requests).<wbr/></li>
28787 <li>Submitting the same request repeatedly will not change this value
28788 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28789 <li>When this value changes to non-negative,<wbr/> that means that all of the
28790 metadata controls from the request have been applied,<wbr/> all of the
28791 metadata controls from the camera device have been read to the
28792 updated values (into the result),<wbr/> and all of the graphics buffers
28793 corresponding to this result are also synchronized to the request.<wbr/></li>
28794 </ul>
28795 <p><em>Pipeline considerations</em>:</p>
28796 <p>Submitting a request with updated controls relative to the previously
28797 submitted requests may also invalidate the synchronization state
28798 of all the results corresponding to currently in-flight requests.<wbr/></p>
28799 <p>In other words,<wbr/> results for this current request and up to
28800 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28801 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28802             </td>
28803           </tr>
28804
28805           <tr class="entries_header">
28806             <th class="th_details" colspan="6">HAL Implementation Details</th>
28807           </tr>
28808           <tr class="entry_cont">
28809             <td class="entry_details" colspan="6">
28810               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28811 is also UNKNOWN.<wbr/></p>
28812 <p>FULL capability devices should simply set this value to the
28813 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28814             </td>
28815           </tr>
28816
28817           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28818            <!-- end of entry -->
28819         
28820         
28821
28822       <!-- end of kind -->
28823       </tbody>
28824       <tr><td colspan="7" class="kind">static</td></tr>
28825
28826       <thead class="entries_header">
28827         <tr>
28828           <th class="th_name">Property Name</th>
28829           <th class="th_type">Type</th>
28830           <th class="th_description">Description</th>
28831           <th class="th_units">Units</th>
28832           <th class="th_range">Range</th>
28833           <th class="th_hal_version">Initial HIDL HAL version</th>
28834           <th class="th_tags">Tags</th>
28835         </tr>
28836       </thead>
28837
28838       <tbody>
28839
28840         
28841
28842         
28843
28844         
28845
28846         
28847
28848                 
28849           <tr class="entry" id="static_android.sync.maxLatency">
28850             <td class="entry_name
28851              " rowspan="5">
28852               android.<wbr/>sync.<wbr/>max<wbr/>Latency
28853             </td>
28854             <td class="entry_type">
28855                 <span class="entry_type_name entry_type_name_enum">int32</span>
28856
28857               <span class="entry_type_visibility"> [public]</span>
28858
28859
28860               <span class="entry_type_hwlevel">[legacy] </span>
28861
28862
28863
28864                 <ul class="entry_type_enum">
28865                   <li>
28866                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28867                     <span class="entry_type_enum_value">0</span>
28868                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28869 <p>Changing controls over multiple requests one after another will
28870 produce results that have those controls applied atomically
28871 each frame.<wbr/></p>
28872 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28873                   </li>
28874                   <li>
28875                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28876                     <span class="entry_type_enum_value">-1</span>
28877                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28878 of the past requests applied to the camera settings.<wbr/></p>
28879 <p>By submitting a series of identical requests,<wbr/> the camera device
28880 will eventually have the camera settings applied,<wbr/> but it is
28881 unknown when that exact point will be.<wbr/></p>
28882 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28883                   </li>
28884                 </ul>
28885
28886             </td> <!-- entry_type -->
28887
28888             <td class="entry_description">
28889               <p>The maximum number of frames that can occur after a request
28890 (different than the previous) has been submitted,<wbr/> and before the
28891 result's state becomes synchronized.<wbr/></p>
28892             </td>
28893
28894             <td class="entry_units">
28895               Frame counts
28896             </td>
28897
28898             <td class="entry_range">
28899               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28900             </td>
28901
28902             <td class="entry_hal_version">
28903               <p>3.<wbr/>2</p>
28904             </td>
28905
28906             <td class="entry_tags">
28907               <ul class="entry_tags">
28908                   <li><a href="#tag_V1">V1</a></li>
28909               </ul>
28910             </td>
28911
28912           </tr>
28913           <tr class="entries_header">
28914             <th class="th_details" colspan="6">Details</th>
28915           </tr>
28916           <tr class="entry_cont">
28917             <td class="entry_details" colspan="6">
28918               <p>This defines the maximum distance (in number of metadata results),<wbr/>
28919 between the frame number of the request that has new controls to apply
28920 and the frame number of the result that has all the controls applied.<wbr/></p>
28921 <p>In other words this acts as an upper boundary for how many frames
28922 must occur before the camera device knows for a fact that the new
28923 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28924             </td>
28925           </tr>
28926
28927           <tr class="entries_header">
28928             <th class="th_details" colspan="6">HAL Implementation Details</th>
28929           </tr>
28930           <tr class="entry_cont">
28931             <td class="entry_details" colspan="6">
28932               <p>For example if maxLatency was 2,<wbr/></p>
28933 <pre><code>initial request = X (repeating)
28934 request1 = X
28935 request2 = Y
28936 request3 = Y
28937 request4 = Y
28938
28939 where requestN has frameNumber N,<wbr/> and the first of the repeating
28940 initial request's has frameNumber F (and F &lt; 1).<wbr/>
28941
28942 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28943 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28944 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28945 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28946 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28947
28948 where resultN has frameNumber N.<wbr/>
28949 </code></pre>
28950 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28951 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28952 <code>4 - 2 = 2</code>.<wbr/></p>
28953 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28954 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28955 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28956 <p>LIMITED devices are strongly encouraged to use a non-negative
28957 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28958 to know when sensor settings have been applied.<wbr/></p>
28959             </td>
28960           </tr>
28961
28962           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28963            <!-- end of entry -->
28964         
28965         
28966
28967       <!-- end of kind -->
28968       </tbody>
28969
28970   <!-- end of section -->
28971   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28972
28973
28974       <tr><td colspan="7" class="kind">controls</td></tr>
28975
28976       <thead class="entries_header">
28977         <tr>
28978           <th class="th_name">Property Name</th>
28979           <th class="th_type">Type</th>
28980           <th class="th_description">Description</th>
28981           <th class="th_units">Units</th>
28982           <th class="th_range">Range</th>
28983           <th class="th_hal_version">Initial HIDL HAL version</th>
28984           <th class="th_tags">Tags</th>
28985         </tr>
28986       </thead>
28987
28988       <tbody>
28989
28990         
28991
28992         
28993
28994         
28995
28996         
28997
28998                 
28999           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
29000             <td class="entry_name
29001              " rowspan="3">
29002               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29003             </td>
29004             <td class="entry_type">
29005                 <span class="entry_type_name">float</span>
29006
29007               <span class="entry_type_visibility"> [java_public]</span>
29008
29009
29010               <span class="entry_type_hwlevel">[limited] </span>
29011
29012
29013
29014
29015             </td> <!-- entry_type -->
29016
29017             <td class="entry_description">
29018               <p>The amount of exposure time increase factor applied to the original output
29019 frame by the application processing before sending for reprocessing.<wbr/></p>
29020             </td>
29021
29022             <td class="entry_units">
29023               Relative exposure time increase factor.<wbr/>
29024             </td>
29025
29026             <td class="entry_range">
29027               <p>&gt;= 1.<wbr/>0</p>
29028             </td>
29029
29030             <td class="entry_hal_version">
29031               <p>3.<wbr/>2</p>
29032             </td>
29033
29034             <td class="entry_tags">
29035               <ul class="entry_tags">
29036                   <li><a href="#tag_REPROC">REPROC</a></li>
29037               </ul>
29038             </td>
29039
29040           </tr>
29041           <tr class="entries_header">
29042             <th class="th_details" colspan="6">Details</th>
29043           </tr>
29044           <tr class="entry_cont">
29045             <td class="entry_details" colspan="6">
29046               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29047 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29048 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29049 output frames to effectively reduce the noise to the same level as a frame that was
29050 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29051 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29052 the camera device is that the amount of noise in the image would be approximately what
29053 would be expected if the original capture parameters had been a sensitivity of
29054 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29055 than S and T respectively.<wbr/> If the captured images were processed by the application
29056 before being sent for reprocessing,<wbr/> then the application may have used image processing
29057 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29058 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29059 control,<wbr/> the application can communicate to the camera device the actual noise level
29060 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29061 device can select appropriate noise reduction and edge enhancement parameters to avoid
29062 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29063 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29064 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29065 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29066 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29067 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29068 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29069 produce the best quality images.<wbr/></p>
29070 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29071 buffer in a way that affects its effective exposure time.<wbr/></p>
29072 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29073 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/>
29074 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29075 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29076             </td>
29077           </tr>
29078
29079
29080           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29081            <!-- end of entry -->
29082         
29083         
29084
29085       <!-- end of kind -->
29086       </tbody>
29087       <tr><td colspan="7" class="kind">dynamic</td></tr>
29088
29089       <thead class="entries_header">
29090         <tr>
29091           <th class="th_name">Property Name</th>
29092           <th class="th_type">Type</th>
29093           <th class="th_description">Description</th>
29094           <th class="th_units">Units</th>
29095           <th class="th_range">Range</th>
29096           <th class="th_hal_version">Initial HIDL HAL version</th>
29097           <th class="th_tags">Tags</th>
29098         </tr>
29099       </thead>
29100
29101       <tbody>
29102
29103         
29104
29105         
29106
29107         
29108
29109         
29110
29111                 
29112           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29113             <td class="entry_name
29114              " rowspan="3">
29115               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29116             </td>
29117             <td class="entry_type">
29118                 <span class="entry_type_name">float</span>
29119
29120               <span class="entry_type_visibility"> [java_public]</span>
29121
29122
29123               <span class="entry_type_hwlevel">[limited] </span>
29124
29125
29126
29127
29128             </td> <!-- entry_type -->
29129
29130             <td class="entry_description">
29131               <p>The amount of exposure time increase factor applied to the original output
29132 frame by the application processing before sending for reprocessing.<wbr/></p>
29133             </td>
29134
29135             <td class="entry_units">
29136               Relative exposure time increase factor.<wbr/>
29137             </td>
29138
29139             <td class="entry_range">
29140               <p>&gt;= 1.<wbr/>0</p>
29141             </td>
29142
29143             <td class="entry_hal_version">
29144               <p>3.<wbr/>2</p>
29145             </td>
29146
29147             <td class="entry_tags">
29148               <ul class="entry_tags">
29149                   <li><a href="#tag_REPROC">REPROC</a></li>
29150               </ul>
29151             </td>
29152
29153           </tr>
29154           <tr class="entries_header">
29155             <th class="th_details" colspan="6">Details</th>
29156           </tr>
29157           <tr class="entry_cont">
29158             <td class="entry_details" colspan="6">
29159               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29160 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29161 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29162 output frames to effectively reduce the noise to the same level as a frame that was
29163 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29164 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29165 the camera device is that the amount of noise in the image would be approximately what
29166 would be expected if the original capture parameters had been a sensitivity of
29167 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29168 than S and T respectively.<wbr/> If the captured images were processed by the application
29169 before being sent for reprocessing,<wbr/> then the application may have used image processing
29170 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29171 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29172 control,<wbr/> the application can communicate to the camera device the actual noise level
29173 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29174 device can select appropriate noise reduction and edge enhancement parameters to avoid
29175 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29176 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29177 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29178 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29179 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29180 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29181 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29182 produce the best quality images.<wbr/></p>
29183 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29184 buffer in a way that affects its effective exposure time.<wbr/></p>
29185 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29186 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/>
29187 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29188 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29189             </td>
29190           </tr>
29191
29192
29193           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29194            <!-- end of entry -->
29195         
29196         
29197
29198       <!-- end of kind -->
29199       </tbody>
29200       <tr><td colspan="7" class="kind">static</td></tr>
29201
29202       <thead class="entries_header">
29203         <tr>
29204           <th class="th_name">Property Name</th>
29205           <th class="th_type">Type</th>
29206           <th class="th_description">Description</th>
29207           <th class="th_units">Units</th>
29208           <th class="th_range">Range</th>
29209           <th class="th_hal_version">Initial HIDL HAL version</th>
29210           <th class="th_tags">Tags</th>
29211         </tr>
29212       </thead>
29213
29214       <tbody>
29215
29216         
29217
29218         
29219
29220         
29221
29222         
29223
29224                 
29225           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29226             <td class="entry_name
29227              " rowspan="3">
29228               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29229             </td>
29230             <td class="entry_type">
29231                 <span class="entry_type_name">int32</span>
29232
29233               <span class="entry_type_visibility"> [java_public]</span>
29234
29235
29236               <span class="entry_type_hwlevel">[limited] </span>
29237
29238
29239
29240
29241             </td> <!-- entry_type -->
29242
29243             <td class="entry_description">
29244               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29245 reprocess capture request.<wbr/></p>
29246             </td>
29247
29248             <td class="entry_units">
29249               Number of frames.<wbr/>
29250             </td>
29251
29252             <td class="entry_range">
29253               <p>&lt;= 4</p>
29254             </td>
29255
29256             <td class="entry_hal_version">
29257               <p>3.<wbr/>2</p>
29258             </td>
29259
29260             <td class="entry_tags">
29261               <ul class="entry_tags">
29262                   <li><a href="#tag_REPROC">REPROC</a></li>
29263               </ul>
29264             </td>
29265
29266           </tr>
29267           <tr class="entries_header">
29268             <th class="th_details" colspan="6">Details</th>
29269           </tr>
29270           <tr class="entry_cont">
29271             <td class="entry_details" colspan="6">
29272               <p>The key describes the maximal interference that one reprocess (input) request
29273 can introduce to the camera simultaneous streaming of regular (output) capture
29274 requests,<wbr/> including repeating requests.<wbr/></p>
29275 <p>When a reprocessing capture request is submitted while a camera output repeating request
29276 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29277 pipeline for at least one frame duration so that the camera device is unable to process
29278 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29279 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29280 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29281 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29282 the worst-case number of frame stall introduced by one reprocess request with any kind of
29283 formats/<wbr/>sizes combination.<wbr/></p>
29284 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29285 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29286 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29287 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29288 YUV_<wbr/>REPROCESSING).<wbr/></p>
29289             </td>
29290           </tr>
29291
29292
29293           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29294            <!-- end of entry -->
29295         
29296         
29297
29298       <!-- end of kind -->
29299       </tbody>
29300
29301   <!-- end of section -->
29302   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29303
29304
29305       <tr><td colspan="7" class="kind">static</td></tr>
29306
29307       <thead class="entries_header">
29308         <tr>
29309           <th class="th_name">Property Name</th>
29310           <th class="th_type">Type</th>
29311           <th class="th_description">Description</th>
29312           <th class="th_units">Units</th>
29313           <th class="th_range">Range</th>
29314           <th class="th_hal_version">Initial HIDL HAL version</th>
29315           <th class="th_tags">Tags</th>
29316         </tr>
29317       </thead>
29318
29319       <tbody>
29320
29321         
29322
29323         
29324
29325         
29326
29327         
29328
29329                 
29330           <tr class="entry" id="static_android.depth.maxDepthSamples">
29331             <td class="entry_name
29332              " rowspan="3">
29333               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29334             </td>
29335             <td class="entry_type">
29336                 <span class="entry_type_name">int32</span>
29337
29338               <span class="entry_type_visibility"> [system]</span>
29339
29340
29341               <span class="entry_type_hwlevel">[limited] </span>
29342
29343
29344
29345
29346             </td> <!-- entry_type -->
29347
29348             <td class="entry_description">
29349               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29350             </td>
29351
29352             <td class="entry_units">
29353             </td>
29354
29355             <td class="entry_range">
29356             </td>
29357
29358             <td class="entry_hal_version">
29359               <p>3.<wbr/>2</p>
29360             </td>
29361
29362             <td class="entry_tags">
29363               <ul class="entry_tags">
29364                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29365               </ul>
29366             </td>
29367
29368           </tr>
29369           <tr class="entries_header">
29370             <th class="th_details" colspan="6">Details</th>
29371           </tr>
29372           <tr class="entry_cont">
29373             <td class="entry_details" colspan="6">
29374               <p>If a camera device supports outputting depth range data in the form of a depth point
29375 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
29376 number of points an output buffer may contain.<wbr/></p>
29377 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29378 If output in the depth point cloud format is not supported,<wbr/> this entry will
29379 not be defined.<wbr/></p>
29380             </td>
29381           </tr>
29382
29383
29384           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29385            <!-- end of entry -->
29386         
29387                 
29388           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29389             <td class="entry_name
29390              " rowspan="3">
29391               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29392             </td>
29393             <td class="entry_type">
29394                 <span class="entry_type_name entry_type_name_enum">int32</span>
29395                 <span class="entry_type_container">x</span>
29396
29397                 <span class="entry_type_array">
29398                   n x 4
29399                 </span>
29400               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29401
29402
29403               <span class="entry_type_hwlevel">[limited] </span>
29404
29405
29406
29407                 <ul class="entry_type_enum">
29408                   <li>
29409                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29410                   </li>
29411                   <li>
29412                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
29413                   </li>
29414                 </ul>
29415
29416             </td> <!-- entry_type -->
29417
29418             <td class="entry_description">
29419               <p>The available depth dataspace stream
29420 configurations that this camera device supports
29421 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29422             </td>
29423
29424             <td class="entry_units">
29425             </td>
29426
29427             <td class="entry_range">
29428             </td>
29429
29430             <td class="entry_hal_version">
29431               <p>3.<wbr/>2</p>
29432             </td>
29433
29434             <td class="entry_tags">
29435               <ul class="entry_tags">
29436                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29437               </ul>
29438             </td>
29439
29440           </tr>
29441           <tr class="entries_header">
29442             <th class="th_details" colspan="6">Details</th>
29443           </tr>
29444           <tr class="entry_cont">
29445             <td class="entry_details" colspan="6">
29446               <p>These are output stream configurations for use with
29447 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29448 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29449 <p>Only devices that support depth output for at least
29450 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29451 this entry.<wbr/></p>
29452 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29453 sparse depth point cloud must report a single entry for
29454 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29455 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29456 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29457             </td>
29458           </tr>
29459
29460
29461           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29462            <!-- end of entry -->
29463         
29464                 
29465           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29466             <td class="entry_name
29467              " rowspan="3">
29468               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29469             </td>
29470             <td class="entry_type">
29471                 <span class="entry_type_name">int64</span>
29472                 <span class="entry_type_container">x</span>
29473
29474                 <span class="entry_type_array">
29475                   4 x n
29476                 </span>
29477               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29478
29479
29480               <span class="entry_type_hwlevel">[limited] </span>
29481
29482
29483
29484
29485             </td> <!-- entry_type -->
29486
29487             <td class="entry_description">
29488               <p>This lists the minimum frame duration for each
29489 format/<wbr/>size combination for depth output formats.<wbr/></p>
29490             </td>
29491
29492             <td class="entry_units">
29493               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29494             </td>
29495
29496             <td class="entry_range">
29497             </td>
29498
29499             <td class="entry_hal_version">
29500               <p>3.<wbr/>2</p>
29501             </td>
29502
29503             <td class="entry_tags">
29504               <ul class="entry_tags">
29505                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29506               </ul>
29507             </td>
29508
29509           </tr>
29510           <tr class="entries_header">
29511             <th class="th_details" colspan="6">Details</th>
29512           </tr>
29513           <tr class="entry_cont">
29514             <td class="entry_details" colspan="6">
29515               <p>This should correspond to the frame duration when only that
29516 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29517 set to either OFF or FAST.<wbr/></p>
29518 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29519 duration will be max(individual stream min durations).<wbr/></p>
29520 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29521 is the same regardless of whether the stream is input or output.<wbr/></p>
29522 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29523 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29524 calculating the max frame rate.<wbr/></p>
29525             </td>
29526           </tr>
29527
29528
29529           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29530            <!-- end of entry -->
29531         
29532                 
29533           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29534             <td class="entry_name
29535              " rowspan="3">
29536               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29537             </td>
29538             <td class="entry_type">
29539                 <span class="entry_type_name">int64</span>
29540                 <span class="entry_type_container">x</span>
29541
29542                 <span class="entry_type_array">
29543                   4 x n
29544                 </span>
29545               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29546
29547
29548               <span class="entry_type_hwlevel">[limited] </span>
29549
29550
29551
29552
29553             </td> <!-- entry_type -->
29554
29555             <td class="entry_description">
29556               <p>This lists the maximum stall duration for each
29557 output format/<wbr/>size combination for depth streams.<wbr/></p>
29558             </td>
29559
29560             <td class="entry_units">
29561               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29562             </td>
29563
29564             <td class="entry_range">
29565             </td>
29566
29567             <td class="entry_hal_version">
29568               <p>3.<wbr/>2</p>
29569             </td>
29570
29571             <td class="entry_tags">
29572               <ul class="entry_tags">
29573                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29574               </ul>
29575             </td>
29576
29577           </tr>
29578           <tr class="entries_header">
29579             <th class="th_details" colspan="6">Details</th>
29580           </tr>
29581           <tr class="entry_cont">
29582             <td class="entry_details" colspan="6">
29583               <p>A stall duration is how much extra time would get added
29584 to the normal minimum frame duration for a repeating request
29585 that has streams with non-zero stall.<wbr/></p>
29586 <p>This functions similarly to
29587 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29588 streams.<wbr/></p>
29589 <p>All depth output stream formats may have a nonzero stall
29590 duration.<wbr/></p>
29591             </td>
29592           </tr>
29593
29594
29595           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29596            <!-- end of entry -->
29597         
29598                 
29599           <tr class="entry" id="static_android.depth.depthIsExclusive">
29600             <td class="entry_name
29601              " rowspan="3">
29602               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29603             </td>
29604             <td class="entry_type">
29605                 <span class="entry_type_name entry_type_name_enum">byte</span>
29606
29607               <span class="entry_type_visibility"> [public as boolean]</span>
29608
29609
29610               <span class="entry_type_hwlevel">[limited] </span>
29611
29612
29613
29614                 <ul class="entry_type_enum">
29615                   <li>
29616                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
29617                   </li>
29618                   <li>
29619                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
29620                   </li>
29621                 </ul>
29622
29623             </td> <!-- entry_type -->
29624
29625             <td class="entry_description">
29626               <p>Indicates whether a capture request may target both a
29627 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29628 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29629             </td>
29630
29631             <td class="entry_units">
29632             </td>
29633
29634             <td class="entry_range">
29635             </td>
29636
29637             <td class="entry_hal_version">
29638               <p>3.<wbr/>2</p>
29639             </td>
29640
29641             <td class="entry_tags">
29642             </td>
29643
29644           </tr>
29645           <tr class="entries_header">
29646             <th class="th_details" colspan="6">Details</th>
29647           </tr>
29648           <tr class="entry_cont">
29649             <td class="entry_details" colspan="6">
29650               <p>If TRUE,<wbr/> including both depth and color outputs in a single
29651 capture request is not supported.<wbr/> An application must interleave color
29652 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29653 of output.<wbr/></p>
29654 <p>Typically,<wbr/> this restriction exists on camera devices that
29655 need to emit a specific pattern or wavelength of light to
29656 measure depth values,<wbr/> which causes the color image to be
29657 corrupted during depth measurement.<wbr/></p>
29658             </td>
29659           </tr>
29660
29661
29662           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29663            <!-- end of entry -->
29664         
29665         
29666
29667       <!-- end of kind -->
29668       </tbody>
29669
29670   <!-- end of section -->
29671   <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29672
29673
29674       <tr><td colspan="7" class="kind">static</td></tr>
29675
29676       <thead class="entries_header">
29677         <tr>
29678           <th class="th_name">Property Name</th>
29679           <th class="th_type">Type</th>
29680           <th class="th_description">Description</th>
29681           <th class="th_units">Units</th>
29682           <th class="th_range">Range</th>
29683           <th class="th_hal_version">Initial HIDL HAL version</th>
29684           <th class="th_tags">Tags</th>
29685         </tr>
29686       </thead>
29687
29688       <tbody>
29689
29690         
29691
29692         
29693
29694         
29695
29696         
29697
29698                 
29699           <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29700             <td class="entry_name
29701              " rowspan="3">
29702               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29703             </td>
29704             <td class="entry_type">
29705                 <span class="entry_type_name">byte</span>
29706                 <span class="entry_type_container">x</span>
29707
29708                 <span class="entry_type_array">
29709                   n
29710                 </span>
29711               <span class="entry_type_visibility"> [hidden]</span>
29712
29713
29714               <span class="entry_type_hwlevel">[limited] </span>
29715
29716
29717
29718
29719             </td> <!-- entry_type -->
29720
29721             <td class="entry_description">
29722               <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29723             </td>
29724
29725             <td class="entry_units">
29726               UTF-8 null-terminated string
29727             </td>
29728
29729             <td class="entry_range">
29730             </td>
29731
29732             <td class="entry_hal_version">
29733               <p>3.<wbr/>3</p>
29734             </td>
29735
29736             <td class="entry_tags">
29737               <ul class="entry_tags">
29738                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29739               </ul>
29740             </td>
29741
29742           </tr>
29743           <tr class="entries_header">
29744             <th class="th_details" colspan="6">Details</th>
29745           </tr>
29746           <tr class="entry_cont">
29747             <td class="entry_details" colspan="6">
29748               <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29749 The null terminator for physical camera id must be preserved so that the whole string
29750 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29751 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29752 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29753 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29754             </td>
29755           </tr>
29756
29757
29758           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29759            <!-- end of entry -->
29760         
29761                 
29762           <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29763             <td class="entry_name
29764              " rowspan="3">
29765               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29766             </td>
29767             <td class="entry_type">
29768                 <span class="entry_type_name entry_type_name_enum">byte</span>
29769
29770               <span class="entry_type_visibility"> [public]</span>
29771
29772
29773               <span class="entry_type_hwlevel">[limited] </span>
29774
29775
29776
29777                 <ul class="entry_type_enum">
29778                   <li>
29779                     <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29780                     <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29781 the timestamp of an image from a physical stream is only an approximation of the
29782 image sensor start-of-exposure time.<wbr/></p></span>
29783                   </li>
29784                   <li>
29785                     <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29786                     <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29787 and the timestamp of a physical stream image accurately reflects its
29788 start-of-exposure time.<wbr/></p></span>
29789                   </li>
29790                 </ul>
29791
29792             </td> <!-- entry_type -->
29793
29794             <td class="entry_description">
29795               <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29796             </td>
29797
29798             <td class="entry_units">
29799             </td>
29800
29801             <td class="entry_range">
29802             </td>
29803
29804             <td class="entry_hal_version">
29805               <p>3.<wbr/>3</p>
29806             </td>
29807
29808             <td class="entry_tags">
29809               <ul class="entry_tags">
29810                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29811               </ul>
29812             </td>
29813
29814           </tr>
29815           <tr class="entries_header">
29816             <th class="th_details" colspan="6">Details</th>
29817           </tr>
29818           <tr class="entry_cont">
29819             <td class="entry_details" colspan="6">
29820               <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29821 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29822 the physical camera sensors usually run in master-slave mode so that their shutter
29823 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29824 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29825 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29826 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29827 onCaptureStarted callback.<wbr/></p>
29828             </td>
29829           </tr>
29830
29831
29832           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29833            <!-- end of entry -->
29834         
29835         
29836
29837       <!-- end of kind -->
29838       </tbody>
29839
29840   <!-- end of section -->
29841   <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29842
29843
29844       <tr><td colspan="7" class="kind">controls</td></tr>
29845
29846       <thead class="entries_header">
29847         <tr>
29848           <th class="th_name">Property Name</th>
29849           <th class="th_type">Type</th>
29850           <th class="th_description">Description</th>
29851           <th class="th_units">Units</th>
29852           <th class="th_range">Range</th>
29853           <th class="th_hal_version">Initial HIDL HAL version</th>
29854           <th class="th_tags">Tags</th>
29855         </tr>
29856       </thead>
29857
29858       <tbody>
29859
29860         
29861
29862         
29863
29864         
29865
29866         
29867
29868                 
29869           <tr class="entry" id="controls_android.distortionCorrection.mode">
29870             <td class="entry_name
29871              " rowspan="3">
29872               android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29873             </td>
29874             <td class="entry_type">
29875                 <span class="entry_type_name entry_type_name_enum">byte</span>
29876
29877               <span class="entry_type_visibility"> [public]</span>
29878
29879
29880
29881
29882
29883                 <ul class="entry_type_enum">
29884                   <li>
29885                     <span class="entry_type_enum_name">OFF (v3.3)</span>
29886                     <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29887                   </li>
29888                   <li>
29889                     <span class="entry_type_enum_name">FAST (v3.3)</span>
29890                     <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29891 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29892 reduce frame rate relative to sensor.<wbr/></p></span>
29893                   </li>
29894                   <li>
29895                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29896                     <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29897 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29898                   </li>
29899                 </ul>
29900
29901             </td> <!-- entry_type -->
29902
29903             <td class="entry_description">
29904               <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29905             </td>
29906
29907             <td class="entry_units">
29908             </td>
29909
29910             <td class="entry_range">
29911               <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29912             </td>
29913
29914             <td class="entry_hal_version">
29915               <p>3.<wbr/>3</p>
29916             </td>
29917
29918             <td class="entry_tags">
29919             </td>
29920
29921           </tr>
29922           <tr class="entries_header">
29923             <th class="th_details" colspan="6">Details</th>
29924           </tr>
29925           <tr class="entry_cont">
29926             <td class="entry_details" colspan="6">
29927               <p>The lens distortion correction block attempts to improve image quality by fixing
29928 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
29929 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29930 <p>OFF means no distortion correction is done.<wbr/></p>
29931 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29932 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29933 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29934 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29935 any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
29936 similar amount of enhancement applied.<wbr/></p>
29937 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29938 applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
29939 regions are also not affected by correction.<wbr/></p>
29940 <p>Applications enabling distortion correction need to pay extra attention when converting
29941 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29942 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29943 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29944 calculate the tap position on the sensor active array to be used with
29945 <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
29946 they need to be drawn on top of the corrected output buffers.<wbr/></p>
29947             </td>
29948           </tr>
29949
29950
29951           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29952            <!-- end of entry -->
29953         
29954         
29955
29956       <!-- end of kind -->
29957       </tbody>
29958       <tr><td colspan="7" class="kind">static</td></tr>
29959
29960       <thead class="entries_header">
29961         <tr>
29962           <th class="th_name">Property Name</th>
29963           <th class="th_type">Type</th>
29964           <th class="th_description">Description</th>
29965           <th class="th_units">Units</th>
29966           <th class="th_range">Range</th>
29967           <th class="th_hal_version">Initial HIDL HAL version</th>
29968           <th class="th_tags">Tags</th>
29969         </tr>
29970       </thead>
29971
29972       <tbody>
29973
29974         
29975
29976         
29977
29978         
29979
29980         
29981
29982                 
29983           <tr class="entry" id="static_android.distortionCorrection.availableModes">
29984             <td class="entry_name
29985              " rowspan="5">
29986               android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
29987             </td>
29988             <td class="entry_type">
29989                 <span class="entry_type_name">byte</span>
29990                 <span class="entry_type_container">x</span>
29991
29992                 <span class="entry_type_array">
29993                   n
29994                 </span>
29995               <span class="entry_type_visibility"> [public as enumList]</span>
29996
29997
29998
29999
30000                 <div class="entry_type_notes">list of enums</div>
30001
30002
30003             </td> <!-- entry_type -->
30004
30005             <td class="entry_description">
30006               <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
30007 supported by this camera device.<wbr/></p>
30008             </td>
30009
30010             <td class="entry_units">
30011             </td>
30012
30013             <td class="entry_range">
30014               <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
30015             </td>
30016
30017             <td class="entry_hal_version">
30018               <p>3.<wbr/>3</p>
30019             </td>
30020
30021             <td class="entry_tags">
30022               <ul class="entry_tags">
30023                   <li><a href="#tag_V1">V1</a></li>
30024                   <li><a href="#tag_REPROC">REPROC</a></li>
30025               </ul>
30026             </td>
30027
30028           </tr>
30029           <tr class="entries_header">
30030             <th class="th_details" colspan="6">Details</th>
30031           </tr>
30032           <tr class="entry_cont">
30033             <td class="entry_details" colspan="6">
30034               <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
30035 All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
30036             </td>
30037           </tr>
30038
30039           <tr class="entries_header">
30040             <th class="th_details" colspan="6">HAL Implementation Details</th>
30041           </tr>
30042           <tr class="entry_cont">
30043             <td class="entry_details" colspan="6">
30044               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30045 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30046 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30047 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30048             </td>
30049           </tr>
30050
30051           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30052            <!-- end of entry -->
30053         
30054         
30055
30056       <!-- end of kind -->
30057       </tbody>
30058       <tr><td colspan="7" class="kind">dynamic</td></tr>
30059
30060       <thead class="entries_header">
30061         <tr>
30062           <th class="th_name">Property Name</th>
30063           <th class="th_type">Type</th>
30064           <th class="th_description">Description</th>
30065           <th class="th_units">Units</th>
30066           <th class="th_range">Range</th>
30067           <th class="th_hal_version">Initial HIDL HAL version</th>
30068           <th class="th_tags">Tags</th>
30069         </tr>
30070       </thead>
30071
30072       <tbody>
30073
30074         
30075
30076         
30077
30078         
30079
30080         
30081
30082                 
30083           <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30084             <td class="entry_name
30085              " rowspan="3">
30086               android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30087             </td>
30088             <td class="entry_type">
30089                 <span class="entry_type_name entry_type_name_enum">byte</span>
30090
30091               <span class="entry_type_visibility"> [public]</span>
30092
30093
30094
30095
30096
30097                 <ul class="entry_type_enum">
30098                   <li>
30099                     <span class="entry_type_enum_name">OFF (v3.3)</span>
30100                     <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30101                   </li>
30102                   <li>
30103                     <span class="entry_type_enum_name">FAST (v3.3)</span>
30104                     <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30105 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30106 reduce frame rate relative to sensor.<wbr/></p></span>
30107                   </li>
30108                   <li>
30109                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30110                     <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30111 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30112                   </li>
30113                 </ul>
30114
30115             </td> <!-- entry_type -->
30116
30117             <td class="entry_description">
30118               <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30119             </td>
30120
30121             <td class="entry_units">
30122             </td>
30123
30124             <td class="entry_range">
30125               <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30126             </td>
30127
30128             <td class="entry_hal_version">
30129               <p>3.<wbr/>3</p>
30130             </td>
30131
30132             <td class="entry_tags">
30133             </td>
30134
30135           </tr>
30136           <tr class="entries_header">
30137             <th class="th_details" colspan="6">Details</th>
30138           </tr>
30139           <tr class="entry_cont">
30140             <td class="entry_details" colspan="6">
30141               <p>The lens distortion correction block attempts to improve image quality by fixing
30142 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
30143 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30144 <p>OFF means no distortion correction is done.<wbr/></p>
30145 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30146 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30147 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30148 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30149 any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
30150 similar amount of enhancement applied.<wbr/></p>
30151 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30152 applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
30153 regions are also not affected by correction.<wbr/></p>
30154 <p>Applications enabling distortion correction need to pay extra attention when converting
30155 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30156 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30157 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30158 calculate the tap position on the sensor active array to be used with
30159 <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
30160 they need to be drawn on top of the corrected output buffers.<wbr/></p>
30161             </td>
30162           </tr>
30163
30164
30165           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30166            <!-- end of entry -->
30167         
30168         
30169
30170       <!-- end of kind -->
30171       </tbody>
30172
30173   <!-- end of section -->
30174 <!-- </namespace> -->
30175   </table>
30176
30177   <div class="tags" id="tag_index">
30178     <h2>Tags</h2>
30179     <ul>
30180       <li id="tag_BC">BC - 
30181         Needed for backwards compatibility with old Java API
30182     
30183         <ul class="tags_entries">
30184           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30185           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30186           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30187           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30188           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30189           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30190           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30191           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30192           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30193           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30194           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30195           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30196           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30197           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30198           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30199           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30200           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30201           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30202           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30203           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30204           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30205           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30206           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30207           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30208           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30209           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30210           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30211           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30212           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30213           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30214           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30215           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30216           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30217           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30218           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30219           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30220           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30221           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30222           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30223           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30224           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30225           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30226           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30227           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30228           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30229           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30230           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30231           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30232           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30233           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30234           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30235           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30236           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30237           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30238           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30239           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30240           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30241           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30242           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30243           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30244           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30245           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30246           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30247           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30248           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30249           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30250           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30251         </ul>
30252       </li> <!-- tag_BC -->
30253       <li id="tag_V1">V1 - 
30254         New features for first camera 2 release (API1)
30255     
30256         <ul class="tags_entries">
30257           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30258           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30259           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30260           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30261           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30262           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30263           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30264           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30265           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30266           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30267           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30268           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30269           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30270           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30271           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30272           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30273           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30274           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30275           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30276           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30277           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30278           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30279           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30280           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30281           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30282           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30283           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30284           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30285           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30286           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30287           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30288           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30289           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30290           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30291           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30292           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30293           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30294           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30295           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30296           <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30297           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30298           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30299           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30300           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30301           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30302           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30303         </ul>
30304       </li> <!-- tag_V1 -->
30305       <li id="tag_RAW">RAW - 
30306         Needed for useful RAW image processing and DNG file support
30307     
30308         <ul class="tags_entries">
30309           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30310           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30311           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30312           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30313           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30314           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30315           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30316           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30317           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30318           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30319           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30320           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30321           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30322           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30323           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30324           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30325           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30326           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30327           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30328           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30329           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30330           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30331           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30332           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30333           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30334           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30335           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30336           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30337           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30338         </ul>
30339       </li> <!-- tag_RAW -->
30340       <li id="tag_HAL2">HAL2 - 
30341         Entry is only used by camera device legacy HAL 2.x
30342     
30343         <ul class="tags_entries">
30344           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30345           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30346           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30347           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30348           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30349         </ul>
30350       </li> <!-- tag_HAL2 -->
30351       <li id="tag_FULL">FULL - 
30352         Entry is required for full hardware level devices, and optional for other hardware levels
30353     
30354         <ul class="tags_entries">
30355           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30356         </ul>
30357       </li> <!-- tag_FULL -->
30358       <li id="tag_DEPTH">DEPTH - 
30359         Entry is required for the depth capability.
30360     
30361         <ul class="tags_entries">
30362           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30363           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30364           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30365           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30366           <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30367           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30368           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30369           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30370           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30371         </ul>
30372       </li> <!-- tag_DEPTH -->
30373       <li id="tag_REPROC">REPROC - 
30374         Entry is required for the YUV or PRIVATE reprocessing capability.
30375     
30376         <ul class="tags_entries">
30377           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30378           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30379           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30380           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30381           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30382           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30383           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30384           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30385           <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30386           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30387           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30388         </ul>
30389       </li> <!-- tag_REPROC -->
30390       <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 
30391         Entry is required for logical multi-camera capability.
30392     
30393         <ul class="tags_entries">
30394           <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30395           <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30396         </ul>
30397       </li> <!-- tag_LOGICALCAMERA -->
30398       <li id="tag_FUTURE">FUTURE - 
30399         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
30400         do not implement or use it, it may be revised for future.
30401     
30402         <ul class="tags_entries">
30403           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30404           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30405           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30406           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30407           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30408           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30409           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30410           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30411           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30412           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30413           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30414           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30415           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30416           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30417           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30418           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30419           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30420           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30421           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30422           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30423           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30424         </ul>
30425       </li> <!-- tag_FUTURE -->
30426     </ul>
30427   </div>
30428
30429   [ <a href="#">top</a> ]
30430
30431 </body>
30432 </html>