OSDN Git Service

Merge "Fix integer sanitizer in audio_route_update_path." am: a2c091b0f5 am: de301d6bbb
[android-x86/system-media.git] / camera / docs / docs.html
1 <!DOCTYPE html>
2 <html>
3 <!-- Copyright (C) 2012 The Android Open Source Project
4
5      Licensed under the Apache License, Version 2.0 (the "License");
6      you may not use this file except in compliance with the License.
7      You may obtain a copy of the License at
8
9           http://www.apache.org/licenses/LICENSE-2.0
10
11      Unless required by applicable law or agreed to in writing, software
12      distributed under the License is distributed on an "AS IS" BASIS,
13      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14      See the License for the specific language governing permissions and
15      limitations under the License.
16 -->
17 <head>
18   <!-- automatically generated from html.mako. do NOT edit directly -->
19   <meta charset="utf-8" />
20   <title>Android Camera HAL3.4 Properties</title>
21   <style type="text/css">
22      body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23      h1 { color: #333333; }
24      h2 { color: #333333; }
25      a:link { color: #258aaf; text-decoration: none}
26      a:hover { color: #459aaf; text-decoration: underline }
27      a:visited { color: #154a5f; text-decoration: none}
28     .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29     .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30     .entry { background-color: #f0f0f0 }
31     .entry_cont { background-color: #f0f0f0 }
32     .entries_header { background-color: #dddddd; text-align: center}
33
34     /* toc style */
35     .toc_section_header { font-size:1.3em;  }
36     .toc_kind_header { font-size:1.2em;  }
37     .toc_deprecated { text-decoration:line-through; }
38
39     /* table column sizes */
40     table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41     td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42     .th_name { width: 20% }
43     .th_units { width: 10% }
44     .th_tags { width: 5% }
45     .th_details { width: 25% }
46     .th_type { width: 17% }
47     .th_description { width: 20% }
48     .th_range { width: 8% }
49     .th_hal_version { width: 5% }
50     td { font-size: 0.9em; }
51
52     /* hide the first thead, we need it there only to enforce column sizes */
53     .thead_dummy { visibility: hidden; }
54
55     /* Entry flair */
56     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57     .entry_name_deprecated { text-decoration:line-through; }
58
59     /* Entry type flair */
60     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62     .entry_type_visibility { font-weight: bolder; padding-left:1em}
63     .entry_type_synthetic { font-weight: bolder; color: #996600; }
64     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67     .entry_type_enum_notes:before { content:" - " }
68     .entry_type_enum_notes>p:first-child { display:inline; }
69     .entry_type_enum_value:before { content:" = " }
70     .entry_type_enum_value { font-family: monospace; }
71     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73     .entry_range_deprecated { font-weight: bolder; }
74
75     /* Entry tags flair */
76     .entry_tags ul { list-style-type: none; }
77
78     /* Entry details (full docs) flair */
79     .entry_details_header { font-weight: bold; background-color: #dddddd;
80       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
81
82     /* Entry spacer flair */
83     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84
85     /* TODO: generate abbr element for each tag link? */
86     /* TODO for each x.y.z try to link it to the entry */
87
88   </style>
89
90   <style>
91
92     {
93       /* broken...
94          supposedly there is a bug in chrome that it lays out tables before
95          it knows its being printed, so the page-break-* styles are ignored
96          */
97         tr { page-break-after: always; page-break-inside: avoid; }
98     }
99
100   </style>
101 </head>
102
103
104
105 <body>
106   <h1>Android Camera HAL3.2 Properties</h1>
107
108
109   <h2>Table of Contents</h2>
110   <ul class="toc">
111     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112     <li>
113       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114       <ul class="toc_section">
115         <li>
116           <span class="toc_kind_header">controls</span>
117           <ul class="toc_section">
118             <li
119             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120             <li
121             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122             <li
123             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124             <li
125             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
126           </ul>
127         </li>
128         <li>
129           <span class="toc_kind_header">dynamic</span>
130           <ul class="toc_section">
131             <li
132             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133             <li
134             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135             <li
136             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137             <li
138             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
139           </ul>
140         </li>
141         <li>
142           <span class="toc_kind_header">static</span>
143           <ul class="toc_section">
144             <li
145             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
146           </ul>
147         </li>
148       </ul> <!-- toc_section -->
149     </li>
150     <li>
151       <span class="toc_section_header"><a href="#section_control">control</a></span>
152       <ul class="toc_section">
153         <li>
154           <span class="toc_kind_header">controls</span>
155           <ul class="toc_section">
156             <li
157             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158             <li
159             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160             <li
161             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162             <li
163             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164             <li
165             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166             <li
167             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168             <li
169             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170             <li
171             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172             <li
173             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174             <li
175             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176             <li
177             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178             <li
179             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180             <li
181             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182             <li
183             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184             <li
185             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186             <li
187             ><a href="#controls_android.control.mode">android.control.mode</a></li>
188             <li
189             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190             <li
191             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192             <li
193             ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194             <li
195             ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
196           </ul>
197         </li>
198         <li>
199           <span class="toc_kind_header">static</span>
200           <ul class="toc_section">
201             <li
202             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203             <li
204             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205             <li
206             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207             <li
208             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209             <li
210             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211             <li
212             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213             <li
214             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215             <li
216             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217             <li
218             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219             <li
220             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221             <li
222             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223             <li
224             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225             <li
226             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227             <li
228             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229             <li
230             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231             <li
232             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233             <li
234             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235             <li
236             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237             <li
238             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239             <li
240             ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
241           </ul>
242         </li>
243         <li>
244           <span class="toc_kind_header">dynamic</span>
245           <ul class="toc_section">
246             <li
247                 class="toc_deprecated"
248             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249             <li
250             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251             <li
252             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253             <li
254             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255             <li
256             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257             <li
258             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259             <li
260             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261             <li
262             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263             <li
264             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265             <li
266             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267             <li
268             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269             <li
270             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271             <li
272             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273             <li
274                 class="toc_deprecated"
275             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276             <li
277             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278             <li
279             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280             <li
281             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282             <li
283             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284             <li
285             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286             <li
287             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288             <li
289             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290             <li
291             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292             <li
293             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294             <li
295             ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296             <li
297             ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
298             <li
299             ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
300           </ul>
301         </li>
302       </ul> <!-- toc_section -->
303     </li>
304     <li>
305       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306       <ul class="toc_section">
307         <li>
308           <span class="toc_kind_header">controls</span>
309           <ul class="toc_section">
310             <li
311             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
312           </ul>
313         </li>
314       </ul> <!-- toc_section -->
315     </li>
316     <li>
317       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318       <ul class="toc_section">
319         <li>
320           <span class="toc_kind_header">controls</span>
321           <ul class="toc_section">
322             <li
323             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
324             <li
325             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326           </ul>
327         </li>
328         <li>
329           <span class="toc_kind_header">static</span>
330           <ul class="toc_section">
331             <li
332             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333           </ul>
334         </li>
335         <li>
336           <span class="toc_kind_header">dynamic</span>
337           <ul class="toc_section">
338             <li
339             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
340           </ul>
341         </li>
342       </ul> <!-- toc_section -->
343     </li>
344     <li>
345       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346       <ul class="toc_section">
347         <li>
348           <span class="toc_kind_header">controls</span>
349           <ul class="toc_section">
350             <li
351             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
352             <li
353             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
354             <li
355             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356           </ul>
357         </li>
358         <li>
359           <span class="toc_kind_header">static</span>
360           <ul class="toc_section">
361
362             <li
363             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
364             <li
365             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
366
367             <li
368             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
369             <li
370             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371           </ul>
372         </li>
373         <li>
374           <span class="toc_kind_header">dynamic</span>
375           <ul class="toc_section">
376             <li
377             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
378             <li
379             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
380             <li
381             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
382             <li
383             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
384           </ul>
385         </li>
386       </ul> <!-- toc_section -->
387     </li>
388     <li>
389       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390       <ul class="toc_section">
391         <li>
392           <span class="toc_kind_header">controls</span>
393           <ul class="toc_section">
394             <li
395             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396           </ul>
397         </li>
398         <li>
399           <span class="toc_kind_header">static</span>
400           <ul class="toc_section">
401             <li
402             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403           </ul>
404         </li>
405         <li>
406           <span class="toc_kind_header">dynamic</span>
407           <ul class="toc_section">
408             <li
409             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
410           </ul>
411         </li>
412       </ul> <!-- toc_section -->
413     </li>
414     <li>
415       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416       <ul class="toc_section">
417         <li>
418           <span class="toc_kind_header">controls</span>
419           <ul class="toc_section">
420             <li
421             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
422             <li
423             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
424             <li
425             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
426             <li
427             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
428             <li
429             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
430             <li
431             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
432             <li
433             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
434             <li
435             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436           </ul>
437         </li>
438         <li>
439           <span class="toc_kind_header">static</span>
440           <ul class="toc_section">
441             <li
442             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
443             <li
444             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445           </ul>
446         </li>
447         <li>
448           <span class="toc_kind_header">dynamic</span>
449           <ul class="toc_section">
450             <li
451             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
452             <li
453             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
454             <li
455             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
456             <li
457             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
458             <li
459             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
460             <li
461             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
462             <li
463             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
464             <li
465             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
466             <li
467             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
468           </ul>
469         </li>
470       </ul> <!-- toc_section -->
471     </li>
472     <li>
473       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474       <ul class="toc_section">
475         <li>
476           <span class="toc_kind_header">controls</span>
477           <ul class="toc_section">
478             <li
479             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
480             <li
481             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
482             <li
483             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
484             <li
485             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
486             <li
487             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488           </ul>
489         </li>
490         <li>
491           <span class="toc_kind_header">static</span>
492           <ul class="toc_section">
493
494             <li
495             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
496             <li
497             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
498             <li
499             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
500             <li
501             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
502             <li
503             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
504             <li
505             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
506             <li
507             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
508             <li
509             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
510
511             <li
512             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
513             <li
514             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
515             <li
516             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
517             <li
518             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
519             <li
520             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
521           </ul>
522         </li>
523         <li>
524           <span class="toc_kind_header">dynamic</span>
525           <ul class="toc_section">
526             <li
527             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
528             <li
529             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
530             <li
531             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
532             <li
533             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
534             <li
535             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
536             <li
537             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
538             <li
539             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
540             <li
541             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
542             <li
543             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
544             <li
545             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
546             <li
547             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
548           </ul>
549         </li>
550       </ul> <!-- toc_section -->
551     </li>
552     <li>
553       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
554       <ul class="toc_section">
555         <li>
556           <span class="toc_kind_header">controls</span>
557           <ul class="toc_section">
558             <li
559             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
560             <li
561             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
562           </ul>
563         </li>
564         <li>
565           <span class="toc_kind_header">static</span>
566           <ul class="toc_section">
567             <li
568             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
569           </ul>
570         </li>
571         <li>
572           <span class="toc_kind_header">dynamic</span>
573           <ul class="toc_section">
574             <li
575             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
576           </ul>
577         </li>
578       </ul> <!-- toc_section -->
579     </li>
580     <li>
581       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
582       <ul class="toc_section">
583         <li>
584           <span class="toc_kind_header">static</span>
585           <ul class="toc_section">
586             <li
587                 class="toc_deprecated"
588             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
589             <li
590                 class="toc_deprecated"
591             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
592             <li
593                 class="toc_deprecated"
594             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
595             <li
596                 class="toc_deprecated"
597             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
598           </ul>
599         </li>
600         <li>
601           <span class="toc_kind_header">dynamic</span>
602           <ul class="toc_section">
603             <li
604                 class="toc_deprecated"
605             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
606           </ul>
607         </li>
608       </ul> <!-- toc_section -->
609     </li>
610     <li>
611       <span class="toc_section_header"><a href="#section_request">request</a></span>
612       <ul class="toc_section">
613         <li>
614           <span class="toc_kind_header">controls</span>
615           <ul class="toc_section">
616             <li
617                 class="toc_deprecated"
618             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
619             <li
620             ><a href="#controls_android.request.id">android.request.id</a></li>
621             <li
622                 class="toc_deprecated"
623             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
624             <li
625             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
626             <li
627                 class="toc_deprecated"
628             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
629             <li
630                 class="toc_deprecated"
631             ><a href="#controls_android.request.type">android.request.type</a></li>
632           </ul>
633         </li>
634         <li>
635           <span class="toc_kind_header">static</span>
636           <ul class="toc_section">
637             <li
638             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
639             <li
640             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
641             <li
642             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
643             <li
644             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
645             <li
646                 class="toc_deprecated"
647             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
648             <li
649             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
650             <li
651             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
652             <li
653             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
654             <li
655             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
656             <li
657             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
658             <li
659             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
660             <li
661             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
662           </ul>
663         </li>
664         <li>
665           <span class="toc_kind_header">dynamic</span>
666           <ul class="toc_section">
667             <li
668                 class="toc_deprecated"
669             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
670             <li
671             ><a href="#dynamic_android.request.id">android.request.id</a></li>
672             <li
673             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
674             <li
675                 class="toc_deprecated"
676             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
677             <li
678             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
679           </ul>
680         </li>
681       </ul> <!-- toc_section -->
682     </li>
683     <li>
684       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
685       <ul class="toc_section">
686         <li>
687           <span class="toc_kind_header">controls</span>
688           <ul class="toc_section">
689             <li
690             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
691           </ul>
692         </li>
693         <li>
694           <span class="toc_kind_header">static</span>
695           <ul class="toc_section">
696             <li
697                 class="toc_deprecated"
698             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
699             <li
700                 class="toc_deprecated"
701             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
702             <li
703                 class="toc_deprecated"
704             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
705             <li
706             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
707             <li
708                 class="toc_deprecated"
709             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
710             <li
711                 class="toc_deprecated"
712             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
713             <li
714                 class="toc_deprecated"
715             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
716             <li
717                 class="toc_deprecated"
718             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
719             <li
720             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
721             <li
722             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
723             <li
724             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
725             <li
726             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
727             <li
728             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
729             <li
730             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
731           </ul>
732         </li>
733         <li>
734           <span class="toc_kind_header">dynamic</span>
735           <ul class="toc_section">
736             <li
737             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
738           </ul>
739         </li>
740       </ul> <!-- toc_section -->
741     </li>
742     <li>
743       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
744       <ul class="toc_section">
745         <li>
746           <span class="toc_kind_header">controls</span>
747           <ul class="toc_section">
748             <li
749             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
750             <li
751             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
752             <li
753             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
754             <li
755             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
756             <li
757             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
758           </ul>
759         </li>
760         <li>
761           <span class="toc_kind_header">static</span>
762           <ul class="toc_section">
763
764             <li
765             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
766             <li
767             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
768             <li
769             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
770             <li
771             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
772             <li
773             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
774             <li
775             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
776             <li
777             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
778             <li
779             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
780             <li
781             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
782             <li
783             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
784             <li
785             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
786
787             <li
788             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
789             <li
790             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
791             <li
792             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
793             <li
794             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
795             <li
796             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
797             <li
798             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
799             <li
800             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
801             <li
802             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
803             <li
804             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
805             <li
806             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
807             <li
808             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
809             <li
810             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
811             <li
812             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
813             <li
814             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
815             <li
816             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
817             <li
818             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
819           </ul>
820         </li>
821         <li>
822           <span class="toc_kind_header">dynamic</span>
823           <ul class="toc_section">
824             <li
825             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
826             <li
827             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
828             <li
829             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
830             <li
831             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
832             <li
833             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
834             <li
835             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
836             <li
837             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
838             <li
839             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
840             <li
841             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
842             <li
843             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
844             <li
845             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
846             <li
847             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
848             <li
849             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
850             <li
851             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
852             <li
853             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
854           </ul>
855         </li>
856       </ul> <!-- toc_section -->
857     </li>
858     <li>
859       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
860       <ul class="toc_section">
861         <li>
862           <span class="toc_kind_header">controls</span>
863           <ul class="toc_section">
864             <li
865             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
866             <li
867             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
868           </ul>
869         </li>
870         <li>
871           <span class="toc_kind_header">dynamic</span>
872           <ul class="toc_section">
873             <li
874             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
875           </ul>
876         </li>
877         <li>
878           <span class="toc_kind_header">static</span>
879           <ul class="toc_section">
880             <li
881             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
882           </ul>
883         </li>
884       </ul> <!-- toc_section -->
885     </li>
886     <li>
887       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
888       <ul class="toc_section">
889         <li>
890           <span class="toc_kind_header">controls</span>
891           <ul class="toc_section">
892             <li
893             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
894             <li
895             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
896             <li
897             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
898             <li
899             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
900             <li
901             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
902           </ul>
903         </li>
904         <li>
905           <span class="toc_kind_header">static</span>
906           <ul class="toc_section">
907
908             <li
909             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
910             <li
911             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
912             <li
913             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
914             <li
915             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
916             <li
917             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
918             <li
919             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
920             <li
921             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
922             <li
923             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
924
925           </ul>
926         </li>
927         <li>
928           <span class="toc_kind_header">dynamic</span>
929           <ul class="toc_section">
930             <li
931             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
932             <li
933             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
934             <li
935             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
936             <li
937             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
938             <li
939             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
940             <li
941             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
942             <li
943             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
944             <li
945             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
946             <li
947             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
948             <li
949             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
950             <li
951             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
952             <li
953             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
954             <li
955                 class="toc_deprecated"
956             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
957             <li
958                 class="toc_deprecated"
959             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
960             <li
961             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
962             <li
963             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
964             <li
965             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
966             <li
967             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
968           </ul>
969         </li>
970       </ul> <!-- toc_section -->
971     </li>
972     <li>
973       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
974       <ul class="toc_section">
975         <li>
976           <span class="toc_kind_header">controls</span>
977           <ul class="toc_section">
978             <li
979             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
980             <li
981             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
982             <li
983             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
984             <li
985             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
986             <li
987             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
988             <li
989             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
990             <li
991             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
992           </ul>
993         </li>
994         <li>
995           <span class="toc_kind_header">static</span>
996           <ul class="toc_section">
997             <li
998             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
999             <li
1000             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1001           </ul>
1002         </li>
1003         <li>
1004           <span class="toc_kind_header">dynamic</span>
1005           <ul class="toc_section">
1006             <li
1007             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1008             <li
1009             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1010             <li
1011             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1012             <li
1013             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1014             <li
1015             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1016             <li
1017             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1018             <li
1019             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1020           </ul>
1021         </li>
1022       </ul> <!-- toc_section -->
1023     </li>
1024     <li>
1025       <span class="toc_section_header"><a href="#section_led">led</a></span>
1026       <ul class="toc_section">
1027         <li>
1028           <span class="toc_kind_header">controls</span>
1029           <ul class="toc_section">
1030             <li
1031             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1032           </ul>
1033         </li>
1034         <li>
1035           <span class="toc_kind_header">dynamic</span>
1036           <ul class="toc_section">
1037             <li
1038             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1039           </ul>
1040         </li>
1041         <li>
1042           <span class="toc_kind_header">static</span>
1043           <ul class="toc_section">
1044             <li
1045             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1046           </ul>
1047         </li>
1048       </ul> <!-- toc_section -->
1049     </li>
1050     <li>
1051       <span class="toc_section_header"><a href="#section_info">info</a></span>
1052       <ul class="toc_section">
1053         <li>
1054           <span class="toc_kind_header">static</span>
1055           <ul class="toc_section">
1056             <li
1057             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1058           </ul>
1059         </li>
1060       </ul> <!-- toc_section -->
1061     </li>
1062     <li>
1063       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1064       <ul class="toc_section">
1065         <li>
1066           <span class="toc_kind_header">controls</span>
1067           <ul class="toc_section">
1068             <li
1069             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1070           </ul>
1071         </li>
1072         <li>
1073           <span class="toc_kind_header">dynamic</span>
1074           <ul class="toc_section">
1075             <li
1076             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1077           </ul>
1078         </li>
1079       </ul> <!-- toc_section -->
1080     </li>
1081     <li>
1082       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1083       <ul class="toc_section">
1084         <li>
1085           <span class="toc_kind_header">dynamic</span>
1086           <ul class="toc_section">
1087             <li
1088             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1089           </ul>
1090         </li>
1091         <li>
1092           <span class="toc_kind_header">static</span>
1093           <ul class="toc_section">
1094             <li
1095             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1096           </ul>
1097         </li>
1098       </ul> <!-- toc_section -->
1099     </li>
1100     <li>
1101       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1102       <ul class="toc_section">
1103         <li>
1104           <span class="toc_kind_header">controls</span>
1105           <ul class="toc_section">
1106             <li
1107             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1108           </ul>
1109         </li>
1110         <li>
1111           <span class="toc_kind_header">dynamic</span>
1112           <ul class="toc_section">
1113             <li
1114             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1115           </ul>
1116         </li>
1117         <li>
1118           <span class="toc_kind_header">static</span>
1119           <ul class="toc_section">
1120             <li
1121             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1122           </ul>
1123         </li>
1124       </ul> <!-- toc_section -->
1125     </li>
1126     <li>
1127       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1128       <ul class="toc_section">
1129         <li>
1130           <span class="toc_kind_header">static</span>
1131           <ul class="toc_section">
1132             <li
1133             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1134             <li
1135             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1136             <li
1137             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1138             <li
1139             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1140             <li
1141             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1142           </ul>
1143         </li>
1144       </ul> <!-- toc_section -->
1145     </li>
1146   </ul>
1147
1148
1149   <h1>Properties</h1>
1150   <table class="properties">
1151
1152     <thead class="thead_dummy">
1153       <tr>
1154         <th class="th_name">Property Name</th>
1155         <th class="th_type">Type</th>
1156         <th class="th_description">Description</th>
1157         <th class="th_units">Units</th>
1158         <th class="th_range">Range</th>
1159         <th class="th_hal_version">HIDL HAL version</th>
1160         <th class="th_tags">Tags</th>
1161       </tr>
1162     </thead> <!-- so that the first occurrence of thead is not
1163                          above the first occurrence of tr -->
1164 <!-- <namespace name="android"> -->
1165   <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1166
1167
1168       <tr><td colspan="7" class="kind">controls</td></tr>
1169
1170       <thead class="entries_header">
1171         <tr>
1172           <th class="th_name">Property Name</th>
1173           <th class="th_type">Type</th>
1174           <th class="th_description">Description</th>
1175           <th class="th_units">Units</th>
1176           <th class="th_range">Range</th>
1177           <th class="th_hal_version">Initial HIDL HAL version</th>
1178           <th class="th_tags">Tags</th>
1179         </tr>
1180       </thead>
1181
1182       <tbody>
1183
1184         
1185
1186         
1187
1188         
1189
1190         
1191
1192                 
1193           <tr class="entry" id="controls_android.colorCorrection.mode">
1194             <td class="entry_name
1195              " rowspan="5">
1196               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1197             </td>
1198             <td class="entry_type">
1199                 <span class="entry_type_name entry_type_name_enum">byte</span>
1200
1201               <span class="entry_type_visibility"> [public]</span>
1202
1203
1204               <span class="entry_type_hwlevel">[full] </span>
1205
1206
1207
1208                 <ul class="entry_type_enum">
1209                   <li>
1210                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1211                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1212 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1213 <p>All advanced white balance adjustments (not specified
1214 by our white balance pipeline) must be disabled.<wbr/></p>
1215 <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
1216 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1217 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1218                   </li>
1219                   <li>
1220                     <span class="entry_type_enum_name">FAST</span>
1221                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1222 capture rate relative to sensor raw output.<wbr/></p>
1223 <p>Advanced white balance adjustments above and beyond
1224 the specified white balance pipeline may be applied.<wbr/></p>
1225 <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
1226 the camera device uses the last frame's AWB values
1227 (or defaults if AWB has never been run).<wbr/></p></span>
1228                   </li>
1229                   <li>
1230                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1231                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1232 quality but the capture rate might be reduced (relative to sensor
1233 raw output rate)</p>
1234 <p>Advanced white balance adjustments above and beyond
1235 the specified white balance pipeline may be applied.<wbr/></p>
1236 <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
1237 the camera device uses the last frame's AWB values
1238 (or defaults if AWB has never been run).<wbr/></p></span>
1239                   </li>
1240                 </ul>
1241
1242             </td> <!-- entry_type -->
1243
1244             <td class="entry_description">
1245               <p>The mode control selects how the image data is converted from the
1246 sensor's native color into linear sRGB color.<wbr/></p>
1247             </td>
1248
1249             <td class="entry_units">
1250             </td>
1251
1252             <td class="entry_range">
1253             </td>
1254
1255             <td class="entry_hal_version">
1256               <p>3.<wbr/>2</p>
1257             </td>
1258
1259             <td class="entry_tags">
1260             </td>
1261
1262           </tr>
1263           <tr class="entries_header">
1264             <th class="th_details" colspan="6">Details</th>
1265           </tr>
1266           <tr class="entry_cont">
1267             <td class="entry_details" colspan="6">
1268               <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
1269 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1270 application controls how the color mapping is performed.<wbr/></p>
1271 <p>We define the expected processing pipeline below.<wbr/> For consistency
1272 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1273 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1274 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1275 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1276 camera device (in the results) and be roughly correct.<wbr/></p>
1277 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1278 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1279 as what was produced by the camera device in the earlier frame.<wbr/></p>
1280 <p>The expected processing pipeline is as follows:</p>
1281 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1282 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1283 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1284 matrix (applied after demosaic).<wbr/></p>
1285 <p>The 4-channel white-balance gains are defined as:</p>
1286 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1287 </code></pre>
1288 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1289 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1290 These may be identical for a given camera device implementation; if
1291 the camera device does not support a separate gain for even/<wbr/>odd green
1292 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1293 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1294 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1295 <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 ]
1296 </code></pre>
1297 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1298 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1299 <p>with colors as follows:</p>
1300 <pre><code>r' = I0r + I1g + I2b
1301 g' = I3r + I4g + I5b
1302 b' = I6r + I7g + I8b
1303 </code></pre>
1304 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1305 values are clipped to fit within the range.<wbr/></p>
1306             </td>
1307           </tr>
1308
1309           <tr class="entries_header">
1310             <th class="th_details" colspan="6">HAL Implementation Details</th>
1311           </tr>
1312           <tr class="entry_cont">
1313             <td class="entry_details" colspan="6">
1314               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1315 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1316 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1317 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1318             </td>
1319           </tr>
1320
1321           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1322            <!-- end of entry -->
1323         
1324                 
1325           <tr class="entry" id="controls_android.colorCorrection.transform">
1326             <td class="entry_name
1327              " rowspan="3">
1328               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1329             </td>
1330             <td class="entry_type">
1331                 <span class="entry_type_name">rational</span>
1332                 <span class="entry_type_container">x</span>
1333
1334                 <span class="entry_type_array">
1335                   3 x 3
1336                 </span>
1337               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1338
1339
1340               <span class="entry_type_hwlevel">[full] </span>
1341
1342
1343                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1344
1345
1346             </td> <!-- entry_type -->
1347
1348             <td class="entry_description">
1349               <p>A color transform matrix to use to transform
1350 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1351             </td>
1352
1353             <td class="entry_units">
1354               Unitless scale factors
1355             </td>
1356
1357             <td class="entry_range">
1358             </td>
1359
1360             <td class="entry_hal_version">
1361               <p>3.<wbr/>2</p>
1362             </td>
1363
1364             <td class="entry_tags">
1365             </td>
1366
1367           </tr>
1368           <tr class="entries_header">
1369             <th class="th_details" colspan="6">Details</th>
1370           </tr>
1371           <tr class="entry_cont">
1372             <td class="entry_details" colspan="6">
1373               <p>This matrix is either set by the camera device when the request
1374 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1375 directly by the application in the request when the
1376 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1377 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1378 for precision issues; the final rounded matrix should be reported back
1379 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1380 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1381 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1382 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1383 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1384             </td>
1385           </tr>
1386
1387
1388           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1389            <!-- end of entry -->
1390         
1391                 
1392           <tr class="entry" id="controls_android.colorCorrection.gains">
1393             <td class="entry_name
1394              " rowspan="5">
1395               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1396             </td>
1397             <td class="entry_type">
1398                 <span class="entry_type_name">float</span>
1399                 <span class="entry_type_container">x</span>
1400
1401                 <span class="entry_type_array">
1402                   4
1403                 </span>
1404               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1405
1406
1407               <span class="entry_type_hwlevel">[full] </span>
1408
1409
1410                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1411
1412
1413             </td> <!-- entry_type -->
1414
1415             <td class="entry_description">
1416               <p>Gains applying to Bayer raw color channels for
1417 white-balance.<wbr/></p>
1418             </td>
1419
1420             <td class="entry_units">
1421               Unitless gain factors
1422             </td>
1423
1424             <td class="entry_range">
1425             </td>
1426
1427             <td class="entry_hal_version">
1428               <p>3.<wbr/>2</p>
1429             </td>
1430
1431             <td class="entry_tags">
1432             </td>
1433
1434           </tr>
1435           <tr class="entries_header">
1436             <th class="th_details" colspan="6">Details</th>
1437           </tr>
1438           <tr class="entry_cont">
1439             <td class="entry_details" colspan="6">
1440               <p>These per-channel gains are either set by the camera device
1441 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1442 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1443 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1444 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1445 <p>The gains in the result metadata are the gains actually
1446 applied by the camera device to the current frame.<wbr/></p>
1447 <p>The valid range of gains varies on different devices,<wbr/> but gains
1448 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1449 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1450 this can create color artifacts.<wbr/></p>
1451             </td>
1452           </tr>
1453
1454           <tr class="entries_header">
1455             <th class="th_details" colspan="6">HAL Implementation Details</th>
1456           </tr>
1457           <tr class="entry_cont">
1458             <td class="entry_details" colspan="6">
1459               <p>The 4-channel white-balance gains are defined in
1460 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1461 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1462 is the gain for green pixels on the odd rows.<wbr/></p>
1463 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1464 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1465 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1466             </td>
1467           </tr>
1468
1469           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1470            <!-- end of entry -->
1471         
1472                 
1473           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1474             <td class="entry_name
1475              " rowspan="3">
1476               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1477             </td>
1478             <td class="entry_type">
1479                 <span class="entry_type_name entry_type_name_enum">byte</span>
1480
1481               <span class="entry_type_visibility"> [public]</span>
1482
1483
1484               <span class="entry_type_hwlevel">[legacy] </span>
1485
1486
1487
1488                 <ul class="entry_type_enum">
1489                   <li>
1490                     <span class="entry_type_enum_name">OFF</span>
1491                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1492                   </li>
1493                   <li>
1494                     <span class="entry_type_enum_name">FAST</span>
1495                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1496 relative to sensor raw output.<wbr/></p></span>
1497                   </li>
1498                   <li>
1499                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1500                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1501 reduced (relative to sensor raw output rate)</p></span>
1502                   </li>
1503                 </ul>
1504
1505             </td> <!-- entry_type -->
1506
1507             <td class="entry_description">
1508               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1509             </td>
1510
1511             <td class="entry_units">
1512             </td>
1513
1514             <td class="entry_range">
1515               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1516             </td>
1517
1518             <td class="entry_hal_version">
1519               <p>3.<wbr/>2</p>
1520             </td>
1521
1522             <td class="entry_tags">
1523             </td>
1524
1525           </tr>
1526           <tr class="entries_header">
1527             <th class="th_details" colspan="6">Details</th>
1528           </tr>
1529           <tr class="entry_cont">
1530             <td class="entry_details" colspan="6">
1531               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1532 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1533 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1534 minimize the chromatic artifacts that may occur along the object boundaries in an
1535 image.<wbr/></p>
1536 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1537 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1538 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1539 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1540 applying aberration correction.<wbr/></p>
1541 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1542             </td>
1543           </tr>
1544
1545
1546           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1547            <!-- end of entry -->
1548         
1549         
1550
1551       <!-- end of kind -->
1552       </tbody>
1553       <tr><td colspan="7" class="kind">dynamic</td></tr>
1554
1555       <thead class="entries_header">
1556         <tr>
1557           <th class="th_name">Property Name</th>
1558           <th class="th_type">Type</th>
1559           <th class="th_description">Description</th>
1560           <th class="th_units">Units</th>
1561           <th class="th_range">Range</th>
1562           <th class="th_hal_version">Initial HIDL HAL version</th>
1563           <th class="th_tags">Tags</th>
1564         </tr>
1565       </thead>
1566
1567       <tbody>
1568
1569         
1570
1571         
1572
1573         
1574
1575         
1576
1577                 
1578           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1579             <td class="entry_name
1580              " rowspan="5">
1581               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1582             </td>
1583             <td class="entry_type">
1584                 <span class="entry_type_name entry_type_name_enum">byte</span>
1585
1586               <span class="entry_type_visibility"> [public]</span>
1587
1588
1589               <span class="entry_type_hwlevel">[full] </span>
1590
1591
1592
1593                 <ul class="entry_type_enum">
1594                   <li>
1595                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1596                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1597 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1598 <p>All advanced white balance adjustments (not specified
1599 by our white balance pipeline) must be disabled.<wbr/></p>
1600 <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
1601 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1602 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1603                   </li>
1604                   <li>
1605                     <span class="entry_type_enum_name">FAST</span>
1606                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1607 capture rate relative to sensor raw output.<wbr/></p>
1608 <p>Advanced white balance adjustments above and beyond
1609 the specified white balance pipeline may be applied.<wbr/></p>
1610 <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
1611 the camera device uses the last frame's AWB values
1612 (or defaults if AWB has never been run).<wbr/></p></span>
1613                   </li>
1614                   <li>
1615                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1616                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1617 quality but the capture rate might be reduced (relative to sensor
1618 raw output rate)</p>
1619 <p>Advanced white balance adjustments above and beyond
1620 the specified white balance pipeline may be applied.<wbr/></p>
1621 <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
1622 the camera device uses the last frame's AWB values
1623 (or defaults if AWB has never been run).<wbr/></p></span>
1624                   </li>
1625                 </ul>
1626
1627             </td> <!-- entry_type -->
1628
1629             <td class="entry_description">
1630               <p>The mode control selects how the image data is converted from the
1631 sensor's native color into linear sRGB color.<wbr/></p>
1632             </td>
1633
1634             <td class="entry_units">
1635             </td>
1636
1637             <td class="entry_range">
1638             </td>
1639
1640             <td class="entry_hal_version">
1641               <p>3.<wbr/>2</p>
1642             </td>
1643
1644             <td class="entry_tags">
1645             </td>
1646
1647           </tr>
1648           <tr class="entries_header">
1649             <th class="th_details" colspan="6">Details</th>
1650           </tr>
1651           <tr class="entry_cont">
1652             <td class="entry_details" colspan="6">
1653               <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
1654 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1655 application controls how the color mapping is performed.<wbr/></p>
1656 <p>We define the expected processing pipeline below.<wbr/> For consistency
1657 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1658 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1659 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1660 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1661 camera device (in the results) and be roughly correct.<wbr/></p>
1662 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1663 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1664 as what was produced by the camera device in the earlier frame.<wbr/></p>
1665 <p>The expected processing pipeline is as follows:</p>
1666 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1667 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1668 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1669 matrix (applied after demosaic).<wbr/></p>
1670 <p>The 4-channel white-balance gains are defined as:</p>
1671 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1672 </code></pre>
1673 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1674 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1675 These may be identical for a given camera device implementation; if
1676 the camera device does not support a separate gain for even/<wbr/>odd green
1677 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1678 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1679 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1680 <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 ]
1681 </code></pre>
1682 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1683 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1684 <p>with colors as follows:</p>
1685 <pre><code>r' = I0r + I1g + I2b
1686 g' = I3r + I4g + I5b
1687 b' = I6r + I7g + I8b
1688 </code></pre>
1689 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1690 values are clipped to fit within the range.<wbr/></p>
1691             </td>
1692           </tr>
1693
1694           <tr class="entries_header">
1695             <th class="th_details" colspan="6">HAL Implementation Details</th>
1696           </tr>
1697           <tr class="entry_cont">
1698             <td class="entry_details" colspan="6">
1699               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1700 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1701 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1702 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1703             </td>
1704           </tr>
1705
1706           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1707            <!-- end of entry -->
1708         
1709                 
1710           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1711             <td class="entry_name
1712              " rowspan="3">
1713               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1714             </td>
1715             <td class="entry_type">
1716                 <span class="entry_type_name">rational</span>
1717                 <span class="entry_type_container">x</span>
1718
1719                 <span class="entry_type_array">
1720                   3 x 3
1721                 </span>
1722               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1723
1724
1725               <span class="entry_type_hwlevel">[full] </span>
1726
1727
1728                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1729
1730
1731             </td> <!-- entry_type -->
1732
1733             <td class="entry_description">
1734               <p>A color transform matrix to use to transform
1735 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1736             </td>
1737
1738             <td class="entry_units">
1739               Unitless scale factors
1740             </td>
1741
1742             <td class="entry_range">
1743             </td>
1744
1745             <td class="entry_hal_version">
1746               <p>3.<wbr/>2</p>
1747             </td>
1748
1749             <td class="entry_tags">
1750             </td>
1751
1752           </tr>
1753           <tr class="entries_header">
1754             <th class="th_details" colspan="6">Details</th>
1755           </tr>
1756           <tr class="entry_cont">
1757             <td class="entry_details" colspan="6">
1758               <p>This matrix is either set by the camera device when the request
1759 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1760 directly by the application in the request when the
1761 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1762 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1763 for precision issues; the final rounded matrix should be reported back
1764 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1765 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1766 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1767 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1768 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1769             </td>
1770           </tr>
1771
1772
1773           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1774            <!-- end of entry -->
1775         
1776                 
1777           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1778             <td class="entry_name
1779              " rowspan="5">
1780               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1781             </td>
1782             <td class="entry_type">
1783                 <span class="entry_type_name">float</span>
1784                 <span class="entry_type_container">x</span>
1785
1786                 <span class="entry_type_array">
1787                   4
1788                 </span>
1789               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1790
1791
1792               <span class="entry_type_hwlevel">[full] </span>
1793
1794
1795                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1796
1797
1798             </td> <!-- entry_type -->
1799
1800             <td class="entry_description">
1801               <p>Gains applying to Bayer raw color channels for
1802 white-balance.<wbr/></p>
1803             </td>
1804
1805             <td class="entry_units">
1806               Unitless gain factors
1807             </td>
1808
1809             <td class="entry_range">
1810             </td>
1811
1812             <td class="entry_hal_version">
1813               <p>3.<wbr/>2</p>
1814             </td>
1815
1816             <td class="entry_tags">
1817             </td>
1818
1819           </tr>
1820           <tr class="entries_header">
1821             <th class="th_details" colspan="6">Details</th>
1822           </tr>
1823           <tr class="entry_cont">
1824             <td class="entry_details" colspan="6">
1825               <p>These per-channel gains are either set by the camera device
1826 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1827 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1828 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1829 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1830 <p>The gains in the result metadata are the gains actually
1831 applied by the camera device to the current frame.<wbr/></p>
1832 <p>The valid range of gains varies on different devices,<wbr/> but gains
1833 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1834 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1835 this can create color artifacts.<wbr/></p>
1836             </td>
1837           </tr>
1838
1839           <tr class="entries_header">
1840             <th class="th_details" colspan="6">HAL Implementation Details</th>
1841           </tr>
1842           <tr class="entry_cont">
1843             <td class="entry_details" colspan="6">
1844               <p>The 4-channel white-balance gains are defined in
1845 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1846 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1847 is the gain for green pixels on the odd rows.<wbr/></p>
1848 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1849 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1850 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1851             </td>
1852           </tr>
1853
1854           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1855            <!-- end of entry -->
1856         
1857                 
1858           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1859             <td class="entry_name
1860              " rowspan="3">
1861               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1862             </td>
1863             <td class="entry_type">
1864                 <span class="entry_type_name entry_type_name_enum">byte</span>
1865
1866               <span class="entry_type_visibility"> [public]</span>
1867
1868
1869               <span class="entry_type_hwlevel">[legacy] </span>
1870
1871
1872
1873                 <ul class="entry_type_enum">
1874                   <li>
1875                     <span class="entry_type_enum_name">OFF</span>
1876                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1877                   </li>
1878                   <li>
1879                     <span class="entry_type_enum_name">FAST</span>
1880                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1881 relative to sensor raw output.<wbr/></p></span>
1882                   </li>
1883                   <li>
1884                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1885                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1886 reduced (relative to sensor raw output rate)</p></span>
1887                   </li>
1888                 </ul>
1889
1890             </td> <!-- entry_type -->
1891
1892             <td class="entry_description">
1893               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1894             </td>
1895
1896             <td class="entry_units">
1897             </td>
1898
1899             <td class="entry_range">
1900               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1901             </td>
1902
1903             <td class="entry_hal_version">
1904               <p>3.<wbr/>2</p>
1905             </td>
1906
1907             <td class="entry_tags">
1908             </td>
1909
1910           </tr>
1911           <tr class="entries_header">
1912             <th class="th_details" colspan="6">Details</th>
1913           </tr>
1914           <tr class="entry_cont">
1915             <td class="entry_details" colspan="6">
1916               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1917 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1918 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1919 minimize the chromatic artifacts that may occur along the object boundaries in an
1920 image.<wbr/></p>
1921 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1922 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1923 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1924 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1925 applying aberration correction.<wbr/></p>
1926 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1927             </td>
1928           </tr>
1929
1930
1931           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1932            <!-- end of entry -->
1933         
1934         
1935
1936       <!-- end of kind -->
1937       </tbody>
1938       <tr><td colspan="7" class="kind">static</td></tr>
1939
1940       <thead class="entries_header">
1941         <tr>
1942           <th class="th_name">Property Name</th>
1943           <th class="th_type">Type</th>
1944           <th class="th_description">Description</th>
1945           <th class="th_units">Units</th>
1946           <th class="th_range">Range</th>
1947           <th class="th_hal_version">Initial HIDL HAL version</th>
1948           <th class="th_tags">Tags</th>
1949         </tr>
1950       </thead>
1951
1952       <tbody>
1953
1954         
1955
1956         
1957
1958         
1959
1960         
1961
1962                 
1963           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1964             <td class="entry_name
1965              " rowspan="5">
1966               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1967             </td>
1968             <td class="entry_type">
1969                 <span class="entry_type_name">byte</span>
1970                 <span class="entry_type_container">x</span>
1971
1972                 <span class="entry_type_array">
1973                   n
1974                 </span>
1975               <span class="entry_type_visibility"> [public as enumList]</span>
1976
1977
1978               <span class="entry_type_hwlevel">[legacy] </span>
1979
1980
1981                 <div class="entry_type_notes">list of enums</div>
1982
1983
1984             </td> <!-- entry_type -->
1985
1986             <td class="entry_description">
1987               <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
1988 supported by this camera device.<wbr/></p>
1989             </td>
1990
1991             <td class="entry_units">
1992             </td>
1993
1994             <td class="entry_range">
1995               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1996             </td>
1997
1998             <td class="entry_hal_version">
1999               <p>3.<wbr/>2</p>
2000             </td>
2001
2002             <td class="entry_tags">
2003               <ul class="entry_tags">
2004                   <li><a href="#tag_V1">V1</a></li>
2005               </ul>
2006             </td>
2007
2008           </tr>
2009           <tr class="entries_header">
2010             <th class="th_details" colspan="6">Details</th>
2011           </tr>
2012           <tr class="entry_cont">
2013             <td class="entry_details" colspan="6">
2014               <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
2015 aberration correction modes are available for a device,<wbr/> this list will solely include
2016 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2017 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2018 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2019 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2020             </td>
2021           </tr>
2022
2023           <tr class="entries_header">
2024             <th class="th_details" colspan="6">HAL Implementation Details</th>
2025           </tr>
2026           <tr class="entry_cont">
2027             <td class="entry_details" colspan="6">
2028               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2029 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2030 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2031 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2032             </td>
2033           </tr>
2034
2035           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2036            <!-- end of entry -->
2037         
2038         
2039
2040       <!-- end of kind -->
2041       </tbody>
2042
2043   <!-- end of section -->
2044   <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2045
2046
2047       <tr><td colspan="7" class="kind">controls</td></tr>
2048
2049       <thead class="entries_header">
2050         <tr>
2051           <th class="th_name">Property Name</th>
2052           <th class="th_type">Type</th>
2053           <th class="th_description">Description</th>
2054           <th class="th_units">Units</th>
2055           <th class="th_range">Range</th>
2056           <th class="th_hal_version">Initial HIDL HAL version</th>
2057           <th class="th_tags">Tags</th>
2058         </tr>
2059       </thead>
2060
2061       <tbody>
2062
2063         
2064
2065         
2066
2067         
2068
2069         
2070
2071                 
2072           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2073             <td class="entry_name
2074              " rowspan="5">
2075               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2076             </td>
2077             <td class="entry_type">
2078                 <span class="entry_type_name entry_type_name_enum">byte</span>
2079
2080               <span class="entry_type_visibility"> [public]</span>
2081
2082
2083               <span class="entry_type_hwlevel">[legacy] </span>
2084
2085
2086
2087                 <ul class="entry_type_enum">
2088                   <li>
2089                     <span class="entry_type_enum_name">OFF</span>
2090                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2091 avoid banding problems.<wbr/></p></span>
2092                   </li>
2093                   <li>
2094                     <span class="entry_type_enum_name">50HZ</span>
2095                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2096 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2097                   </li>
2098                   <li>
2099                     <span class="entry_type_enum_name">60HZ</span>
2100                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2101 avoid banding problems with 60Hz illumination
2102 sources.<wbr/></p></span>
2103                   </li>
2104                   <li>
2105                     <span class="entry_type_enum_name">AUTO</span>
2106                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2107 antibanding routine to the current illumination
2108 condition.<wbr/> This is the default mode if AUTO is
2109 available on given camera device.<wbr/></p></span>
2110                   </li>
2111                 </ul>
2112
2113             </td> <!-- entry_type -->
2114
2115             <td class="entry_description">
2116               <p>The desired setting for the camera device's auto-exposure
2117 algorithm's antibanding compensation.<wbr/></p>
2118             </td>
2119
2120             <td class="entry_units">
2121             </td>
2122
2123             <td class="entry_range">
2124               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2125             </td>
2126
2127             <td class="entry_hal_version">
2128               <p>3.<wbr/>2</p>
2129             </td>
2130
2131             <td class="entry_tags">
2132               <ul class="entry_tags">
2133                   <li><a href="#tag_BC">BC</a></li>
2134               </ul>
2135             </td>
2136
2137           </tr>
2138           <tr class="entries_header">
2139             <th class="th_details" colspan="6">Details</th>
2140           </tr>
2141           <tr class="entry_cont">
2142             <td class="entry_details" colspan="6">
2143               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2144 lights,<wbr/> flicker at the rate of the power supply frequency
2145 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2146 typically not noticeable to a person,<wbr/> it can be visible to
2147 a camera device.<wbr/> If a camera sets its exposure time to the
2148 wrong value,<wbr/> the flicker may become visible in the
2149 viewfinder as flicker or in a final captured image,<wbr/> as a
2150 set of variable-brightness bands across the image.<wbr/></p>
2151 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2152 include antibanding routines that ensure that the chosen
2153 exposure value will not cause such banding.<wbr/> The choice of
2154 exposure time depends on the rate of flicker,<wbr/> which the
2155 camera device can detect automatically,<wbr/> or the expected
2156 rate can be selected by the application using this
2157 control.<wbr/></p>
2158 <p>A given camera device may not support all of the possible
2159 options for the antibanding mode.<wbr/> The
2160 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2161 the available modes for a given camera device.<wbr/></p>
2162 <p>AUTO mode is the default if it is available on given
2163 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2164 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2165 and 60HZ will be available.<wbr/></p>
2166 <p>If manual exposure control is enabled (by setting
2167 <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/>
2168 then this setting has no effect,<wbr/> and the application must
2169 ensure it selects exposure times that do not cause banding
2170 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2171 the application in this.<wbr/></p>
2172             </td>
2173           </tr>
2174
2175           <tr class="entries_header">
2176             <th class="th_details" colspan="6">HAL Implementation Details</th>
2177           </tr>
2178           <tr class="entry_cont">
2179             <td class="entry_details" colspan="6">
2180               <p>For all capture request templates,<wbr/> this field must be set
2181 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2182 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2183 60HZ must be available.<wbr/></p>
2184 <p>If manual exposure control is enabled (by setting
2185 <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/>
2186 then the exposure values provided by the application must not be
2187 adjusted for antibanding.<wbr/></p>
2188             </td>
2189           </tr>
2190
2191           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2192            <!-- end of entry -->
2193         
2194                 
2195           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2196             <td class="entry_name
2197              " rowspan="3">
2198               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2199             </td>
2200             <td class="entry_type">
2201                 <span class="entry_type_name">int32</span>
2202
2203               <span class="entry_type_visibility"> [public]</span>
2204
2205
2206               <span class="entry_type_hwlevel">[legacy] </span>
2207
2208
2209
2210
2211             </td> <!-- entry_type -->
2212
2213             <td class="entry_description">
2214               <p>Adjustment to auto-exposure (AE) target image
2215 brightness.<wbr/></p>
2216             </td>
2217
2218             <td class="entry_units">
2219               Compensation steps
2220             </td>
2221
2222             <td class="entry_range">
2223               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2224             </td>
2225
2226             <td class="entry_hal_version">
2227               <p>3.<wbr/>2</p>
2228             </td>
2229
2230             <td class="entry_tags">
2231               <ul class="entry_tags">
2232                   <li><a href="#tag_BC">BC</a></li>
2233               </ul>
2234             </td>
2235
2236           </tr>
2237           <tr class="entries_header">
2238             <th class="th_details" colspan="6">Details</th>
2239           </tr>
2240           <tr class="entry_cont">
2241             <td class="entry_details" colspan="6">
2242               <p>The adjustment is measured as a count of steps,<wbr/> with the
2243 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2244 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2245 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2246 will mean an exposure compensation of +2 EV; -3 will mean an
2247 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2248 of image brightness.<wbr/> Note that this control will only be
2249 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2250 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2251 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2252 may take several frames to reach the newly requested exposure target.<wbr/>
2253 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2254 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
2255 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2256 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2257             </td>
2258           </tr>
2259
2260
2261           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2262            <!-- end of entry -->
2263         
2264                 
2265           <tr class="entry" id="controls_android.control.aeLock">
2266             <td class="entry_name
2267              " rowspan="3">
2268               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2269             </td>
2270             <td class="entry_type">
2271                 <span class="entry_type_name entry_type_name_enum">byte</span>
2272
2273               <span class="entry_type_visibility"> [public as boolean]</span>
2274
2275
2276               <span class="entry_type_hwlevel">[legacy] </span>
2277
2278
2279
2280                 <ul class="entry_type_enum">
2281                   <li>
2282                     <span class="entry_type_enum_name">OFF</span>
2283                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2284 is free to update its parameters.<wbr/></p></span>
2285                   </li>
2286                   <li>
2287                     <span class="entry_type_enum_name">ON</span>
2288                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2289 must not update the exposure and sensitivity parameters
2290 while the lock is active.<wbr/></p>
2291 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2292 will still take effect while auto-exposure is locked.<wbr/></p>
2293 <p>Some rare LEGACY devices may not support
2294 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2295                   </li>
2296                 </ul>
2297
2298             </td> <!-- entry_type -->
2299
2300             <td class="entry_description">
2301               <p>Whether auto-exposure (AE) is currently locked to its latest
2302 calculated values.<wbr/></p>
2303             </td>
2304
2305             <td class="entry_units">
2306             </td>
2307
2308             <td class="entry_range">
2309             </td>
2310
2311             <td class="entry_hal_version">
2312               <p>3.<wbr/>2</p>
2313             </td>
2314
2315             <td class="entry_tags">
2316               <ul class="entry_tags">
2317                   <li><a href="#tag_BC">BC</a></li>
2318               </ul>
2319             </td>
2320
2321           </tr>
2322           <tr class="entries_header">
2323             <th class="th_details" colspan="6">Details</th>
2324           </tr>
2325           <tr class="entry_cont">
2326             <td class="entry_details" colspan="6">
2327               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2328 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2329 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2330 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2331 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2332 <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
2333 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2334 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2335 when AE is already locked,<wbr/> the camera device will not change the exposure time
2336 (<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>)
2337 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2338 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2339 <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/>
2340 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2341 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2342 the AE if AE is locked by the camera device internally during precapture metering
2343 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2344 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2345 will never succeed in a sequence of preview requests where AE lock is always set
2346 to <code>false</code>.<wbr/></p>
2347 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2348 get locked do not necessarily correspond to the settings that were present in the
2349 latest capture result received from the camera device,<wbr/> since additional captures
2350 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2351 application is switching between automatic and manual control and wishes to eliminate
2352 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2353 <ol>
2354 <li>Starting in auto-AE mode:</li>
2355 <li>Lock AE</li>
2356 <li>Wait for the first result to be output that has the AE locked</li>
2357 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2358 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2359 </ol>
2360 <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>
2361             </td>
2362           </tr>
2363
2364
2365           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2366            <!-- end of entry -->
2367         
2368                 
2369           <tr class="entry" id="controls_android.control.aeMode">
2370             <td class="entry_name
2371              " rowspan="3">
2372               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2373             </td>
2374             <td class="entry_type">
2375                 <span class="entry_type_name entry_type_name_enum">byte</span>
2376
2377               <span class="entry_type_visibility"> [public]</span>
2378
2379
2380               <span class="entry_type_hwlevel">[legacy] </span>
2381
2382
2383
2384                 <ul class="entry_type_enum">
2385                   <li>
2386                     <span class="entry_type_enum_name">OFF</span>
2387                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2388 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2389 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2390 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2391 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2392 a flash unit for this camera device.<wbr/></p>
2393 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2394 behavior is device dependent when AE is in OFF mode.<wbr/>
2395 To have consistent behavior across different devices,<wbr/>
2396 it is recommended to either set AWB and AF to OFF mode
2397 or lock AWB and AF before setting AE to OFF.<wbr/>
2398 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/>
2399 <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>
2400 for more details.<wbr/></p>
2401 <p>LEGACY devices do not support the OFF mode and will
2402 override attempts to use this value to ON.<wbr/></p></span>
2403                   </li>
2404                   <li>
2405                     <span class="entry_type_enum_name">ON</span>
2406                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2407 with no flash control.<wbr/></p>
2408 <p>The application's values for
2409 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2410 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2411 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2412 application has control over the various
2413 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2414                   </li>
2415                   <li>
2416                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2417                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2418 the camera's flash unit,<wbr/> firing it in low-light
2419 conditions.<wbr/></p>
2420 <p>The flash may be fired during a precapture sequence
2421 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2422 may be fired for captures for which the
2423 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2424 STILL_<wbr/>CAPTURE</p></span>
2425                   </li>
2426                   <li>
2427                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2428                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2429 the camera's flash unit,<wbr/> always firing it for still
2430 captures.<wbr/></p>
2431 <p>The flash may be fired during a precapture sequence
2432 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2433 will always be fired for captures for which the
2434 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2435 STILL_<wbr/>CAPTURE</p></span>
2436                   </li>
2437                   <li>
2438                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2439                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2440 reduction.<wbr/></p>
2441 <p>If deemed necessary by the camera device,<wbr/> a red eye
2442 reduction flash will fire during the precapture
2443 sequence.<wbr/></p></span>
2444                   </li>
2445                 </ul>
2446
2447             </td> <!-- entry_type -->
2448
2449             <td class="entry_description">
2450               <p>The desired mode for the camera device's
2451 auto-exposure routine.<wbr/></p>
2452             </td>
2453
2454             <td class="entry_units">
2455             </td>
2456
2457             <td class="entry_range">
2458               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2459             </td>
2460
2461             <td class="entry_hal_version">
2462               <p>3.<wbr/>2</p>
2463             </td>
2464
2465             <td class="entry_tags">
2466               <ul class="entry_tags">
2467                   <li><a href="#tag_BC">BC</a></li>
2468               </ul>
2469             </td>
2470
2471           </tr>
2472           <tr class="entries_header">
2473             <th class="th_details" colspan="6">Details</th>
2474           </tr>
2475           <tr class="entry_cont">
2476             <td class="entry_details" colspan="6">
2477               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2478 AUTO.<wbr/></p>
2479 <p>When set to any of the ON modes,<wbr/> the camera device's
2480 auto-exposure routine is enabled,<wbr/> overriding the
2481 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2482 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2483 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2484 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2485 is selected,<wbr/> the camera device's flash unit controls are
2486 also overridden.<wbr/></p>
2487 <p>The FLASH modes are only available if the camera device
2488 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>
2489 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2490 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2491 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2492 camera device auto-exposure routine for the overridden
2493 fields for a given capture will be available in its
2494 CaptureResult.<wbr/></p>
2495             </td>
2496           </tr>
2497
2498
2499           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2500            <!-- end of entry -->
2501         
2502                 
2503           <tr class="entry" id="controls_android.control.aeRegions">
2504             <td class="entry_name
2505              " rowspan="5">
2506               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2507             </td>
2508             <td class="entry_type">
2509                 <span class="entry_type_name">int32</span>
2510                 <span class="entry_type_container">x</span>
2511
2512                 <span class="entry_type_array">
2513                   5 x area_count
2514                 </span>
2515               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2516
2517
2518
2519
2520
2521
2522             </td> <!-- entry_type -->
2523
2524             <td class="entry_description">
2525               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2526             </td>
2527
2528             <td class="entry_units">
2529               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2530             </td>
2531
2532             <td class="entry_range">
2533               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2534 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2535             </td>
2536
2537             <td class="entry_hal_version">
2538               <p>3.<wbr/>2</p>
2539             </td>
2540
2541             <td class="entry_tags">
2542               <ul class="entry_tags">
2543                   <li><a href="#tag_BC">BC</a></li>
2544               </ul>
2545             </td>
2546
2547           </tr>
2548           <tr class="entries_header">
2549             <th class="th_details" colspan="6">Details</th>
2550           </tr>
2551           <tr class="entry_cont">
2552             <td class="entry_details" colspan="6">
2553               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2554 Otherwise will always be present.<wbr/></p>
2555 <p>The maximum number of regions supported by the device is determined by the value
2556 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2557 <p>The coordinate system is based on the active pixel array,<wbr/>
2558 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2559 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2560 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2561 bottom-right pixel in the active pixel array.<wbr/></p>
2562 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2563 for every pixel in the area.<wbr/> This means that a large metering area
2564 with the same weight as a smaller area will have more effect in
2565 the metering result.<wbr/> Metering areas can partially overlap and the
2566 camera device will add the weights in the overlap region.<wbr/></p>
2567 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2568 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2569 weight is ignored.<wbr/></p>
2570 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2571 camera device.<wbr/></p>
2572 <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
2573 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2574 region and output only the intersection rectangle as the metering region in the result
2575 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2576 not reported in the result metadata.<wbr/></p>
2577             </td>
2578           </tr>
2579
2580           <tr class="entries_header">
2581             <th class="th_details" colspan="6">HAL Implementation Details</th>
2582           </tr>
2583           <tr class="entry_cont">
2584             <td class="entry_details" colspan="6">
2585               <p>The HAL level representation of MeteringRectangle[] is a
2586 int[5 * area_<wbr/>count].<wbr/>
2587 Every five elements represent a metering region of
2588 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2589 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2590 exclusive on xmax and ymax.<wbr/></p>
2591             </td>
2592           </tr>
2593
2594           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2595            <!-- end of entry -->
2596         
2597                 
2598           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2599             <td class="entry_name
2600              " rowspan="3">
2601               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2602             </td>
2603             <td class="entry_type">
2604                 <span class="entry_type_name">int32</span>
2605                 <span class="entry_type_container">x</span>
2606
2607                 <span class="entry_type_array">
2608                   2
2609                 </span>
2610               <span class="entry_type_visibility"> [public as rangeInt]</span>
2611
2612
2613               <span class="entry_type_hwlevel">[legacy] </span>
2614
2615
2616
2617
2618             </td> <!-- entry_type -->
2619
2620             <td class="entry_description">
2621               <p>Range over which the auto-exposure routine can
2622 adjust the capture frame rate to maintain good
2623 exposure.<wbr/></p>
2624             </td>
2625
2626             <td class="entry_units">
2627               Frames per second (FPS)
2628             </td>
2629
2630             <td class="entry_range">
2631               <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>
2632             </td>
2633
2634             <td class="entry_hal_version">
2635               <p>3.<wbr/>2</p>
2636             </td>
2637
2638             <td class="entry_tags">
2639               <ul class="entry_tags">
2640                   <li><a href="#tag_BC">BC</a></li>
2641               </ul>
2642             </td>
2643
2644           </tr>
2645           <tr class="entries_header">
2646             <th class="th_details" colspan="6">Details</th>
2647           </tr>
2648           <tr class="entry_cont">
2649             <td class="entry_details" colspan="6">
2650               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2651 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2652 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2653             </td>
2654           </tr>
2655
2656
2657           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2658            <!-- end of entry -->
2659         
2660                 
2661           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2662             <td class="entry_name
2663              " rowspan="5">
2664               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2665             </td>
2666             <td class="entry_type">
2667                 <span class="entry_type_name entry_type_name_enum">byte</span>
2668
2669               <span class="entry_type_visibility"> [public]</span>
2670
2671
2672               <span class="entry_type_hwlevel">[limited] </span>
2673
2674
2675
2676                 <ul class="entry_type_enum">
2677                   <li>
2678                     <span class="entry_type_enum_name">IDLE</span>
2679                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2680                   </li>
2681                   <li>
2682                     <span class="entry_type_enum_name">START</span>
2683                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2684 by the camera device.<wbr/></p>
2685 <p>The exact effect of the precapture trigger depends on
2686 the current AE mode and state.<wbr/></p></span>
2687                   </li>
2688                   <li>
2689                     <span class="entry_type_enum_name">CANCEL</span>
2690                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2691 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2692 initial state.<wbr/></p></span>
2693                   </li>
2694                 </ul>
2695
2696             </td> <!-- entry_type -->
2697
2698             <td class="entry_description">
2699               <p>Whether the camera device will trigger a precapture
2700 metering sequence when it processes this request.<wbr/></p>
2701             </td>
2702
2703             <td class="entry_units">
2704             </td>
2705
2706             <td class="entry_range">
2707             </td>
2708
2709             <td class="entry_hal_version">
2710               <p>3.<wbr/>2</p>
2711             </td>
2712
2713             <td class="entry_tags">
2714               <ul class="entry_tags">
2715                   <li><a href="#tag_BC">BC</a></li>
2716               </ul>
2717             </td>
2718
2719           </tr>
2720           <tr class="entries_header">
2721             <th class="th_details" colspan="6">Details</th>
2722           </tr>
2723           <tr class="entry_cont">
2724             <td class="entry_details" colspan="6">
2725               <p>This entry is normally set to IDLE,<wbr/> or is not
2726 included at all in the request settings.<wbr/> When included and
2727 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2728 precapture metering sequence.<wbr/></p>
2729 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2730 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2731 If a precapture metering sequence is already completed,<wbr/> and the camera
2732 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2733 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2734 <p>The precapture sequence should be triggered before starting a
2735 high-quality still capture for final metering decisions to
2736 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2737 scene brightness and required final capture flash power,<wbr/> when
2738 the flash is enabled.<wbr/></p>
2739 <p>Normally,<wbr/> this entry should be set to START for only a
2740 single request,<wbr/> and the application should wait until the
2741 sequence completes before starting a new one.<wbr/></p>
2742 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2743 may lock the auto-exposure routine internally to be able to accurately expose the
2744 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2745 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2746 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2747 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
2748 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
2749 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2750 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2751 internally locked AE if the application doesn't submit a still capture request after
2752 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2753 be used in devices that have earlier API levels.<wbr/></p>
2754 <p>The exact effect of auto-exposure (AE) precapture trigger
2755 depends on the current AE mode and state; see
2756 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2757 details.<wbr/></p>
2758 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2759 capturing a high-resolution JPEG image will automatically trigger a
2760 precapture sequence before the high-resolution capture,<wbr/> including
2761 potentially firing a pre-capture flash.<wbr/></p>
2762 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2763 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2764 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2765 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2766 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2767 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
2768 example.<wbr/></p>
2769 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2770 the camera device will complete them in the optimal order for that device.<wbr/></p>
2771             </td>
2772           </tr>
2773
2774           <tr class="entries_header">
2775             <th class="th_details" colspan="6">HAL Implementation Details</th>
2776           </tr>
2777           <tr class="entry_cont">
2778             <td class="entry_details" colspan="6">
2779               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2780 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2781 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2782 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2783 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2784             </td>
2785           </tr>
2786
2787           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2788            <!-- end of entry -->
2789         
2790                 
2791           <tr class="entry" id="controls_android.control.afMode">
2792             <td class="entry_name
2793              " rowspan="5">
2794               android.<wbr/>control.<wbr/>af<wbr/>Mode
2795             </td>
2796             <td class="entry_type">
2797                 <span class="entry_type_name entry_type_name_enum">byte</span>
2798
2799               <span class="entry_type_visibility"> [public]</span>
2800
2801
2802               <span class="entry_type_hwlevel">[legacy] </span>
2803
2804
2805
2806                 <ul class="entry_type_enum">
2807                   <li>
2808                     <span class="entry_type_enum_name">OFF</span>
2809                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2810 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2811 application.<wbr/></p></span>
2812                   </li>
2813                   <li>
2814                     <span class="entry_type_enum_name">AUTO</span>
2815                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2816 <p>In this mode,<wbr/> the lens does not move unless
2817 the autofocus trigger action is called.<wbr/> When that trigger
2818 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2819 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2820 <p>Always supported if lens is not fixed focus.<wbr/></p>
2821 <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
2822 is fixed-focus.<wbr/></p>
2823 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2824 and sets the AF state to INACTIVE.<wbr/></p></span>
2825                   </li>
2826                   <li>
2827                     <span class="entry_type_enum_name">MACRO</span>
2828                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2829 <p>In this mode,<wbr/> the lens does not move unless the
2830 autofocus trigger action is called.<wbr/> When that trigger is
2831 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2832 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2833 mode is optimized for focusing on objects very close to
2834 the camera.<wbr/></p>
2835 <p>When that trigger is activated,<wbr/> AF will transition to
2836 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2837 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2838 position to default,<wbr/> and sets the AF state to
2839 INACTIVE.<wbr/></p></span>
2840                   </li>
2841                   <li>
2842                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2843                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2844 position continually to attempt to provide a
2845 constantly-in-focus image stream.<wbr/></p>
2846 <p>The focusing behavior should be suitable for good quality
2847 video recording; typically this means slower focus
2848 movement and no overshoots.<wbr/> When the AF trigger is not
2849 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2850 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2851 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2852 the algorithm should immediately transition into
2853 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2854 lens position until a cancel AF trigger is received.<wbr/></p>
2855 <p>Once cancel is received,<wbr/> the algorithm should transition
2856 back to INACTIVE and resume passive scan.<wbr/> Note that this
2857 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2858 ongoing PASSIVE_<wbr/>SCAN must immediately be
2859 canceled.<wbr/></p></span>
2860                   </li>
2861                   <li>
2862                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2863                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2864 position continually to attempt to provide a
2865 constantly-in-focus image stream.<wbr/></p>
2866 <p>The focusing behavior should be suitable for still image
2867 capture; typically this means focusing as fast as
2868 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2869 algorithm should start in INACTIVE state,<wbr/> and then
2870 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2871 appropriate as it attempts to maintain focus.<wbr/> When the AF
2872 trigger is activated,<wbr/> the algorithm should finish its
2873 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2874 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2875 lens position until a cancel AF trigger is received.<wbr/></p>
2876 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2877 should transition back to INACTIVE and then act as if it
2878 has just been started.<wbr/></p></span>
2879                   </li>
2880                   <li>
2881                     <span class="entry_type_enum_name">EDOF</span>
2882                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2883 <p>The camera device will produce images with an extended
2884 depth of field automatically; no special focusing
2885 operations need to be done before taking a picture.<wbr/></p>
2886 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2887 INACTIVE.<wbr/></p></span>
2888                   </li>
2889                 </ul>
2890
2891             </td> <!-- entry_type -->
2892
2893             <td class="entry_description">
2894               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2895 mode it is set to.<wbr/></p>
2896             </td>
2897
2898             <td class="entry_units">
2899             </td>
2900
2901             <td class="entry_range">
2902               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2903             </td>
2904
2905             <td class="entry_hal_version">
2906               <p>3.<wbr/>2</p>
2907             </td>
2908
2909             <td class="entry_tags">
2910               <ul class="entry_tags">
2911                   <li><a href="#tag_BC">BC</a></li>
2912               </ul>
2913             </td>
2914
2915           </tr>
2916           <tr class="entries_header">
2917             <th class="th_details" colspan="6">Details</th>
2918           </tr>
2919           <tr class="entry_cont">
2920             <td class="entry_details" colspan="6">
2921               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2922 (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
2923 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2924 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
2925 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>
2926 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2927 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2928 in result metadata.<wbr/></p>
2929             </td>
2930           </tr>
2931
2932           <tr class="entries_header">
2933             <th class="th_details" colspan="6">HAL Implementation Details</th>
2934           </tr>
2935           <tr class="entry_cont">
2936             <td class="entry_details" colspan="6">
2937               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2938 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
2939 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2940 <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
2941 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2942 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2943 the same focal plane remains in focus.<wbr/></p>
2944 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2945 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2946 (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
2947 same lock behavior as above.<wbr/></p>
2948 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2949 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/>
2950 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2951 manual control.<wbr/></p>
2952 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2953 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2954 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2955 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2956 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2957             </td>
2958           </tr>
2959
2960           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2961            <!-- end of entry -->
2962         
2963                 
2964           <tr class="entry" id="controls_android.control.afRegions">
2965             <td class="entry_name
2966              " rowspan="5">
2967               android.<wbr/>control.<wbr/>af<wbr/>Regions
2968             </td>
2969             <td class="entry_type">
2970                 <span class="entry_type_name">int32</span>
2971                 <span class="entry_type_container">x</span>
2972
2973                 <span class="entry_type_array">
2974                   5 x area_count
2975                 </span>
2976               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2977
2978
2979
2980
2981
2982
2983             </td> <!-- entry_type -->
2984
2985             <td class="entry_description">
2986               <p>List of metering areas to use for auto-focus.<wbr/></p>
2987             </td>
2988
2989             <td class="entry_units">
2990               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2991             </td>
2992
2993             <td class="entry_range">
2994               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2995 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2996             </td>
2997
2998             <td class="entry_hal_version">
2999               <p>3.<wbr/>2</p>
3000             </td>
3001
3002             <td class="entry_tags">
3003               <ul class="entry_tags">
3004                   <li><a href="#tag_BC">BC</a></li>
3005               </ul>
3006             </td>
3007
3008           </tr>
3009           <tr class="entries_header">
3010             <th class="th_details" colspan="6">Details</th>
3011           </tr>
3012           <tr class="entry_cont">
3013             <td class="entry_details" colspan="6">
3014               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3015 Otherwise will always be present.<wbr/></p>
3016 <p>The maximum number of focus areas supported by the device is determined by the value
3017 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3018 <p>The coordinate system is based on the active pixel array,<wbr/>
3019 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3020 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3021 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3022 bottom-right pixel in the active pixel array.<wbr/></p>
3023 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3024 for every pixel in the area.<wbr/> This means that a large metering area
3025 with the same weight as a smaller area will have more effect in
3026 the metering result.<wbr/> Metering areas can partially overlap and the
3027 camera device will add the weights in the overlap region.<wbr/></p>
3028 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3029 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3030 ignored.<wbr/></p>
3031 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3032 camera device.<wbr/></p>
3033 <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
3034 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3035 region and output only the intersection rectangle as the metering region in the result
3036 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3037 not reported in the result metadata.<wbr/></p>
3038             </td>
3039           </tr>
3040
3041           <tr class="entries_header">
3042             <th class="th_details" colspan="6">HAL Implementation Details</th>
3043           </tr>
3044           <tr class="entry_cont">
3045             <td class="entry_details" colspan="6">
3046               <p>The HAL level representation of MeteringRectangle[] is a
3047 int[5 * area_<wbr/>count].<wbr/>
3048 Every five elements represent a metering region of
3049 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3050 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3051 exclusive on xmax and ymax.<wbr/></p>
3052             </td>
3053           </tr>
3054
3055           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3056            <!-- end of entry -->
3057         
3058                 
3059           <tr class="entry" id="controls_android.control.afTrigger">
3060             <td class="entry_name
3061              " rowspan="5">
3062               android.<wbr/>control.<wbr/>af<wbr/>Trigger
3063             </td>
3064             <td class="entry_type">
3065                 <span class="entry_type_name entry_type_name_enum">byte</span>
3066
3067               <span class="entry_type_visibility"> [public]</span>
3068
3069
3070               <span class="entry_type_hwlevel">[legacy] </span>
3071
3072
3073
3074                 <ul class="entry_type_enum">
3075                   <li>
3076                     <span class="entry_type_enum_name">IDLE</span>
3077                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3078                   </li>
3079                   <li>
3080                     <span class="entry_type_enum_name">START</span>
3081                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3082                   </li>
3083                   <li>
3084                     <span class="entry_type_enum_name">CANCEL</span>
3085                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3086 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3087                   </li>
3088                 </ul>
3089
3090             </td> <!-- entry_type -->
3091
3092             <td class="entry_description">
3093               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3094             </td>
3095
3096             <td class="entry_units">
3097             </td>
3098
3099             <td class="entry_range">
3100             </td>
3101
3102             <td class="entry_hal_version">
3103               <p>3.<wbr/>2</p>
3104             </td>
3105
3106             <td class="entry_tags">
3107               <ul class="entry_tags">
3108                   <li><a href="#tag_BC">BC</a></li>
3109               </ul>
3110             </td>
3111
3112           </tr>
3113           <tr class="entries_header">
3114             <th class="th_details" colspan="6">Details</th>
3115           </tr>
3116           <tr class="entry_cont">
3117             <td class="entry_details" colspan="6">
3118               <p>This entry is normally set to IDLE,<wbr/> or is not
3119 included at all in the request settings.<wbr/></p>
3120 <p>When included and set to START,<wbr/> the camera device will trigger the
3121 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3122 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3123 and return to its initial AF state.<wbr/></p>
3124 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3125 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3126 START for multiple captures in a row means restarting the AF operation over
3127 and over again.<wbr/></p>
3128 <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>
3129 <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>
3130 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3131 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3132 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3133 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3134 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3135             </td>
3136           </tr>
3137
3138           <tr class="entries_header">
3139             <th class="th_details" colspan="6">HAL Implementation Details</th>
3140           </tr>
3141           <tr class="entry_cont">
3142             <td class="entry_details" colspan="6">
3143               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3144 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3145 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3146 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3147 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3148             </td>
3149           </tr>
3150
3151           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3152            <!-- end of entry -->
3153         
3154                 
3155           <tr class="entry" id="controls_android.control.awbLock">
3156             <td class="entry_name
3157              " rowspan="3">
3158               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3159             </td>
3160             <td class="entry_type">
3161                 <span class="entry_type_name entry_type_name_enum">byte</span>
3162
3163               <span class="entry_type_visibility"> [public as boolean]</span>
3164
3165
3166               <span class="entry_type_hwlevel">[legacy] </span>
3167
3168
3169
3170                 <ul class="entry_type_enum">
3171                   <li>
3172                     <span class="entry_type_enum_name">OFF</span>
3173                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3174 algorithm is free to update its parameters if in AUTO
3175 mode.<wbr/></p></span>
3176                   </li>
3177                   <li>
3178                     <span class="entry_type_enum_name">ON</span>
3179                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3180 algorithm will not update its parameters while the lock
3181 is active.<wbr/></p></span>
3182                   </li>
3183                 </ul>
3184
3185             </td> <!-- entry_type -->
3186
3187             <td class="entry_description">
3188               <p>Whether auto-white balance (AWB) is currently locked to its
3189 latest calculated values.<wbr/></p>
3190             </td>
3191
3192             <td class="entry_units">
3193             </td>
3194
3195             <td class="entry_range">
3196             </td>
3197
3198             <td class="entry_hal_version">
3199               <p>3.<wbr/>2</p>
3200             </td>
3201
3202             <td class="entry_tags">
3203               <ul class="entry_tags">
3204                   <li><a href="#tag_BC">BC</a></li>
3205               </ul>
3206             </td>
3207
3208           </tr>
3209           <tr class="entries_header">
3210             <th class="th_details" colspan="6">Details</th>
3211           </tr>
3212           <tr class="entry_cont">
3213             <td class="entry_details" colspan="6">
3214               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3215 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3216 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3217 get locked do not necessarily correspond to the settings that were present in the
3218 latest capture result received from the camera device,<wbr/> since additional captures
3219 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3220 application is switching between automatic and manual control and wishes to eliminate
3221 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3222 <ol>
3223 <li>Starting in auto-AWB mode:</li>
3224 <li>Lock AWB</li>
3225 <li>Wait for the first result to be output that has the AWB locked</li>
3226 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3227 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3228 </ol>
3229 <p>Note that AWB lock is only meaningful when
3230 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3231 AWB is already fixed to a specific setting.<wbr/></p>
3232 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3233             </td>
3234           </tr>
3235
3236
3237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3238            <!-- end of entry -->
3239         
3240                 
3241           <tr class="entry" id="controls_android.control.awbMode">
3242             <td class="entry_name
3243              " rowspan="3">
3244               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3245             </td>
3246             <td class="entry_type">
3247                 <span class="entry_type_name entry_type_name_enum">byte</span>
3248
3249               <span class="entry_type_visibility"> [public]</span>
3250
3251
3252               <span class="entry_type_hwlevel">[legacy] </span>
3253
3254
3255
3256                 <ul class="entry_type_enum">
3257                   <li>
3258                     <span class="entry_type_enum_name">OFF</span>
3259                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3260 <p>The application-selected color transform matrix
3261 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3262 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3263 device for manual white balance control.<wbr/></p></span>
3264                   </li>
3265                   <li>
3266                     <span class="entry_type_enum_name">AUTO</span>
3267                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3268 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3269 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3270 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3271 values used by the camera device for the transform and gains
3272 will be available in the capture result for this request.<wbr/></p></span>
3273                   </li>
3274                   <li>
3275                     <span class="entry_type_enum_name">INCANDESCENT</span>
3276                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3277 the camera device uses incandescent light as the assumed scene
3278 illumination for white balance.<wbr/></p>
3279 <p>While the exact white balance transforms are up to the
3280 camera device,<wbr/> they will approximately match the CIE
3281 standard illuminant A.<wbr/></p>
3282 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3283 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3284 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3285 values used by the camera device for the transform and gains
3286 will be available in the capture result for this request.<wbr/></p></span>
3287                   </li>
3288                   <li>
3289                     <span class="entry_type_enum_name">FLUORESCENT</span>
3290                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3291 the camera device uses fluorescent light as the assumed scene
3292 illumination for white balance.<wbr/></p>
3293 <p>While the exact white balance transforms are up to the
3294 camera device,<wbr/> they will approximately match the CIE
3295 standard illuminant F2.<wbr/></p>
3296 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3297 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3298 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3299 values used by the camera device for the transform and gains
3300 will be available in the capture result for this request.<wbr/></p></span>
3301                   </li>
3302                   <li>
3303                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3304                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3305 the camera device uses warm fluorescent light as the assumed scene
3306 illumination for white balance.<wbr/></p>
3307 <p>While the exact white balance transforms are up to the
3308 camera device,<wbr/> they will approximately match the CIE
3309 standard illuminant F4.<wbr/></p>
3310 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3311 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3312 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3313 values used by the camera device for the transform and gains
3314 will be available in the capture result for this request.<wbr/></p></span>
3315                   </li>
3316                   <li>
3317                     <span class="entry_type_enum_name">DAYLIGHT</span>
3318                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3319 the camera device uses daylight light as the assumed scene
3320 illumination for white balance.<wbr/></p>
3321 <p>While the exact white balance transforms are up to the
3322 camera device,<wbr/> they will approximately match the CIE
3323 standard illuminant D65.<wbr/></p>
3324 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3325 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3326 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3327 values used by the camera device for the transform and gains
3328 will be available in the capture result for this request.<wbr/></p></span>
3329                   </li>
3330                   <li>
3331                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3332                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3333 the camera device uses cloudy daylight light as the assumed scene
3334 illumination for white balance.<wbr/></p>
3335 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3336 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3337 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3338 values used by the camera device for the transform and gains
3339 will be available in the capture result for this request.<wbr/></p></span>
3340                   </li>
3341                   <li>
3342                     <span class="entry_type_enum_name">TWILIGHT</span>
3343                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3344 the camera device uses twilight light as the assumed scene
3345 illumination for white balance.<wbr/></p>
3346 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3347 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3348 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3349 values used by the camera device for the transform and gains
3350 will be available in the capture result for this request.<wbr/></p></span>
3351                   </li>
3352                   <li>
3353                     <span class="entry_type_enum_name">SHADE</span>
3354                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3355 the camera device uses shade light as the assumed scene
3356 illumination for white balance.<wbr/></p>
3357 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3358 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3359 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3360 values used by the camera device for the transform and gains
3361 will be available in the capture result for this request.<wbr/></p></span>
3362                   </li>
3363                 </ul>
3364
3365             </td> <!-- entry_type -->
3366
3367             <td class="entry_description">
3368               <p>Whether auto-white balance (AWB) is currently setting the color
3369 transform fields,<wbr/> and what its illumination target
3370 is.<wbr/></p>
3371             </td>
3372
3373             <td class="entry_units">
3374             </td>
3375
3376             <td class="entry_range">
3377               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3378             </td>
3379
3380             <td class="entry_hal_version">
3381               <p>3.<wbr/>2</p>
3382             </td>
3383
3384             <td class="entry_tags">
3385               <ul class="entry_tags">
3386                   <li><a href="#tag_BC">BC</a></li>
3387               </ul>
3388             </td>
3389
3390           </tr>
3391           <tr class="entries_header">
3392             <th class="th_details" colspan="6">Details</th>
3393           </tr>
3394           <tr class="entry_cont">
3395             <td class="entry_details" colspan="6">
3396               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3397 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3398 routine is enabled,<wbr/> overriding the application's selected
3399 <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
3400 <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>
3401 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3402 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
3403 setting AE mode to OFF.<wbr/></p>
3404 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3405 routine is disabled.<wbr/> The application manually controls the white
3406 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>
3407 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3408 <p>When set to any other modes,<wbr/> the camera device's auto-white
3409 balance routine is disabled.<wbr/> The camera device uses each
3410 particular illumination target for white balance
3411 adjustment.<wbr/> The application's values for
3412 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3413 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3414 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3415             </td>
3416           </tr>
3417
3418
3419           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3420            <!-- end of entry -->
3421         
3422                 
3423           <tr class="entry" id="controls_android.control.awbRegions">
3424             <td class="entry_name
3425              " rowspan="5">
3426               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3427             </td>
3428             <td class="entry_type">
3429                 <span class="entry_type_name">int32</span>
3430                 <span class="entry_type_container">x</span>
3431
3432                 <span class="entry_type_array">
3433                   5 x area_count
3434                 </span>
3435               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3436
3437
3438
3439
3440
3441
3442             </td> <!-- entry_type -->
3443
3444             <td class="entry_description">
3445               <p>List of metering areas to use for auto-white-balance illuminant
3446 estimation.<wbr/></p>
3447             </td>
3448
3449             <td class="entry_units">
3450               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3451             </td>
3452
3453             <td class="entry_range">
3454               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3455 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3456             </td>
3457
3458             <td class="entry_hal_version">
3459               <p>3.<wbr/>2</p>
3460             </td>
3461
3462             <td class="entry_tags">
3463               <ul class="entry_tags">
3464                   <li><a href="#tag_BC">BC</a></li>
3465               </ul>
3466             </td>
3467
3468           </tr>
3469           <tr class="entries_header">
3470             <th class="th_details" colspan="6">Details</th>
3471           </tr>
3472           <tr class="entry_cont">
3473             <td class="entry_details" colspan="6">
3474               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3475 Otherwise will always be present.<wbr/></p>
3476 <p>The maximum number of regions supported by the device is determined by the value
3477 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3478 <p>The coordinate system is based on the active pixel array,<wbr/>
3479 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3480 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3481 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3482 bottom-right pixel in the active pixel array.<wbr/></p>
3483 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3484 for every pixel in the area.<wbr/> This means that a large metering area
3485 with the same weight as a smaller area will have more effect in
3486 the metering result.<wbr/> Metering areas can partially overlap and the
3487 camera device will add the weights in the overlap region.<wbr/></p>
3488 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3489 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3490 0 weight is ignored.<wbr/></p>
3491 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3492 camera device.<wbr/></p>
3493 <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
3494 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3495 region and output only the intersection rectangle as the metering region in the result
3496 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3497 not reported in the result metadata.<wbr/></p>
3498             </td>
3499           </tr>
3500
3501           <tr class="entries_header">
3502             <th class="th_details" colspan="6">HAL Implementation Details</th>
3503           </tr>
3504           <tr class="entry_cont">
3505             <td class="entry_details" colspan="6">
3506               <p>The HAL level representation of MeteringRectangle[] is a
3507 int[5 * area_<wbr/>count].<wbr/>
3508 Every five elements represent a metering region of
3509 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3510 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3511 exclusive on xmax and ymax.<wbr/></p>
3512             </td>
3513           </tr>
3514
3515           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3516            <!-- end of entry -->
3517         
3518                 
3519           <tr class="entry" id="controls_android.control.captureIntent">
3520             <td class="entry_name
3521              " rowspan="3">
3522               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3523             </td>
3524             <td class="entry_type">
3525                 <span class="entry_type_name entry_type_name_enum">byte</span>
3526
3527               <span class="entry_type_visibility"> [public]</span>
3528
3529
3530               <span class="entry_type_hwlevel">[legacy] </span>
3531
3532
3533
3534                 <ul class="entry_type_enum">
3535                   <li>
3536                     <span class="entry_type_enum_name">CUSTOM</span>
3537                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3538 categories.<wbr/> The camera device will default to preview-like
3539 behavior.<wbr/></p></span>
3540                   </li>
3541                   <li>
3542                     <span class="entry_type_enum_name">PREVIEW</span>
3543                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3544 <p>The precapture trigger may be used to start off a metering
3545 w/<wbr/>flash sequence.<wbr/></p></span>
3546                   </li>
3547                   <li>
3548                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
3549                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3550 use case.<wbr/></p>
3551 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3552                   </li>
3553                   <li>
3554                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
3555                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3556 use case.<wbr/></p></span>
3557                   </li>
3558                   <li>
3559                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3560                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3561 image while recording video) use case.<wbr/></p>
3562 <p>The camera device should take the highest-quality image
3563 possible (given the other settings) without disrupting the
3564 frame rate of video recording.<wbr/>  </p></span>
3565                   </li>
3566                   <li>
3567                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3568                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3569 application will stream full-resolution images and
3570 reprocess one or several later for a final
3571 capture.<wbr/></p></span>
3572                   </li>
3573                   <li>
3574                     <span class="entry_type_enum_name">MANUAL</span>
3575                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3576 the applications want to directly control the capture parameters.<wbr/></p>
3577 <p>For example,<wbr/> the application may wish to manually control
3578 <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>
3579                   </li>
3580                 </ul>
3581
3582             </td> <!-- entry_type -->
3583
3584             <td class="entry_description">
3585               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3586 auto-focus,<wbr/> auto-white balance) routines about the purpose
3587 of this capture,<wbr/> to help the camera device to decide optimal 3A
3588 strategy.<wbr/></p>
3589             </td>
3590
3591             <td class="entry_units">
3592             </td>
3593
3594             <td class="entry_range">
3595             </td>
3596
3597             <td class="entry_hal_version">
3598               <p>3.<wbr/>2</p>
3599             </td>
3600
3601             <td class="entry_tags">
3602               <ul class="entry_tags">
3603                   <li><a href="#tag_BC">BC</a></li>
3604               </ul>
3605             </td>
3606
3607           </tr>
3608           <tr class="entries_header">
3609             <th class="th_details" colspan="6">Details</th>
3610           </tr>
3611           <tr class="entry_cont">
3612             <td class="entry_details" colspan="6">
3613               <p>This control (except for MANUAL) is only effective if
3614 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3615 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3616 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3617 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3618 always supported.<wbr/></p>
3619             </td>
3620           </tr>
3621
3622
3623           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3624            <!-- end of entry -->
3625         
3626                 
3627           <tr class="entry" id="controls_android.control.effectMode">
3628             <td class="entry_name
3629              " rowspan="3">
3630               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3631             </td>
3632             <td class="entry_type">
3633                 <span class="entry_type_name entry_type_name_enum">byte</span>
3634
3635               <span class="entry_type_visibility"> [public]</span>
3636
3637
3638               <span class="entry_type_hwlevel">[legacy] </span>
3639
3640
3641
3642                 <ul class="entry_type_enum">
3643                   <li>
3644                     <span class="entry_type_enum_name">OFF</span>
3645                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3646                   </li>
3647                   <li>
3648                     <span class="entry_type_enum_name">MONO</span>
3649                     <span class="entry_type_enum_optional">[optional]</span>
3650                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3651 a single color.<wbr/></p>
3652 <p>This will typically be grayscale.<wbr/></p></span>
3653                   </li>
3654                   <li>
3655                     <span class="entry_type_enum_name">NEGATIVE</span>
3656                     <span class="entry_type_enum_optional">[optional]</span>
3657                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3658 are inverted.<wbr/></p></span>
3659                   </li>
3660                   <li>
3661                     <span class="entry_type_enum_name">SOLARIZE</span>
3662                     <span class="entry_type_enum_optional">[optional]</span>
3663                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3664 image is wholly or partially reversed in
3665 tone.<wbr/></p></span>
3666                   </li>
3667                   <li>
3668                     <span class="entry_type_enum_name">SEPIA</span>
3669                     <span class="entry_type_enum_optional">[optional]</span>
3670                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3671 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3672                   </li>
3673                   <li>
3674                     <span class="entry_type_enum_name">POSTERIZE</span>
3675                     <span class="entry_type_enum_optional">[optional]</span>
3676                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3677 discrete regions of tone rather than a continuous
3678 gradient of tones.<wbr/></p></span>
3679                   </li>
3680                   <li>
3681                     <span class="entry_type_enum_name">WHITEBOARD</span>
3682                     <span class="entry_type_enum_optional">[optional]</span>
3683                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3684 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3685                   </li>
3686                   <li>
3687                     <span class="entry_type_enum_name">BLACKBOARD</span>
3688                     <span class="entry_type_enum_optional">[optional]</span>
3689                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3690 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3691                   </li>
3692                   <li>
3693                     <span class="entry_type_enum_name">AQUA</span>
3694                     <span class="entry_type_enum_optional">[optional]</span>
3695                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3696                   </li>
3697                 </ul>
3698
3699             </td> <!-- entry_type -->
3700
3701             <td class="entry_description">
3702               <p>A special color effect to apply.<wbr/></p>
3703             </td>
3704
3705             <td class="entry_units">
3706             </td>
3707
3708             <td class="entry_range">
3709               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3710             </td>
3711
3712             <td class="entry_hal_version">
3713               <p>3.<wbr/>2</p>
3714             </td>
3715
3716             <td class="entry_tags">
3717               <ul class="entry_tags">
3718                   <li><a href="#tag_BC">BC</a></li>
3719               </ul>
3720             </td>
3721
3722           </tr>
3723           <tr class="entries_header">
3724             <th class="th_details" colspan="6">Details</th>
3725           </tr>
3726           <tr class="entry_cont">
3727             <td class="entry_details" colspan="6">
3728               <p>When this mode is set,<wbr/> a color effect will be applied
3729 to images produced by the camera device.<wbr/> The interpretation
3730 and implementation of these color effects is left to the
3731 implementor of the camera device,<wbr/> and should not be
3732 depended on to be consistent (or present) across all
3733 devices.<wbr/></p>
3734             </td>
3735           </tr>
3736
3737
3738           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3739            <!-- end of entry -->
3740         
3741                 
3742           <tr class="entry" id="controls_android.control.mode">
3743             <td class="entry_name
3744              " rowspan="3">
3745               android.<wbr/>control.<wbr/>mode
3746             </td>
3747             <td class="entry_type">
3748                 <span class="entry_type_name entry_type_name_enum">byte</span>
3749
3750               <span class="entry_type_visibility"> [public]</span>
3751
3752
3753               <span class="entry_type_hwlevel">[legacy] </span>
3754
3755
3756
3757                 <ul class="entry_type_enum">
3758                   <li>
3759                     <span class="entry_type_enum_name">OFF</span>
3760                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3761 <p>All control by the device's metering and focusing (3A)
3762 routines is disabled,<wbr/> and no other settings in
3763 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3764 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3765 device to select post-processing values for processing
3766 blocks that do not allow for manual control,<wbr/> or are not
3767 exposed by the camera API.<wbr/></p>
3768 <p>However,<wbr/> the camera device's 3A routines may continue to
3769 collect statistics and update their internal state so that
3770 when control is switched to AUTO mode,<wbr/> good control values
3771 can be immediately applied.<wbr/></p></span>
3772                   </li>
3773                   <li>
3774                     <span class="entry_type_enum_name">AUTO</span>
3775                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3776 <p>Manual control of capture parameters is disabled.<wbr/> All
3777 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3778 effect.<wbr/></p></span>
3779                   </li>
3780                   <li>
3781                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3782                     <span class="entry_type_enum_optional">[optional]</span>
3783                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3784 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3785 control.<wbr/>afMode controls; the camera device will ignore
3786 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3787 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3788 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3789 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3790 contain some modes other than DISABLED).<wbr/></p></span>
3791                   </li>
3792                   <li>
3793                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3794                     <span class="entry_type_enum_optional">[optional]</span>
3795                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3796 used by camera device background auto-exposure,<wbr/> auto-white balance and
3797 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3798 <p>Specifically,<wbr/> the 3A routines are locked to the last
3799 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3800 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3801 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3802 discarded by the camera device.<wbr/></p></span>
3803                   </li>
3804                 </ul>
3805
3806             </td> <!-- entry_type -->
3807
3808             <td class="entry_description">
3809               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3810 routines.<wbr/></p>
3811             </td>
3812
3813             <td class="entry_units">
3814             </td>
3815
3816             <td class="entry_range">
3817               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3818             </td>
3819
3820             <td class="entry_hal_version">
3821               <p>3.<wbr/>2</p>
3822             </td>
3823
3824             <td class="entry_tags">
3825               <ul class="entry_tags">
3826                   <li><a href="#tag_BC">BC</a></li>
3827               </ul>
3828             </td>
3829
3830           </tr>
3831           <tr class="entries_header">
3832             <th class="th_details" colspan="6">Details</th>
3833           </tr>
3834           <tr class="entry_cont">
3835             <td class="entry_details" colspan="6">
3836               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3837 by the camera device is disabled.<wbr/> The application must set the fields for
3838 capture parameters itself.<wbr/></p>
3839 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3840 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>
3841 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3842 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3843 implements one of the scene mode settings (such as ACTION,<wbr/>
3844 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3845 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3846 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3847 is that this frame will not be used by camera device background 3A statistics
3848 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3849 where the application doesn't want a 3A manual control capture to affect
3850 the subsequent auto 3A capture results.<wbr/></p>
3851             </td>
3852           </tr>
3853
3854
3855           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3856            <!-- end of entry -->
3857         
3858                 
3859           <tr class="entry" id="controls_android.control.sceneMode">
3860             <td class="entry_name
3861              " rowspan="5">
3862               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3863             </td>
3864             <td class="entry_type">
3865                 <span class="entry_type_name entry_type_name_enum">byte</span>
3866
3867               <span class="entry_type_visibility"> [public]</span>
3868
3869
3870               <span class="entry_type_hwlevel">[legacy] </span>
3871
3872
3873
3874                 <ul class="entry_type_enum">
3875                   <li>
3876                     <span class="entry_type_enum_name">DISABLED</span>
3877                     <span class="entry_type_enum_value">0</span>
3878                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3879                   </li>
3880                   <li>
3881                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
3882                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3883 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3884 auto-exposure routines.<wbr/></p>
3885 <p>If face detection statistics are disabled
3886 (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/>
3887 this should still operate correctly (but will not return
3888 face detection statistics to the framework).<wbr/></p>
3889 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3890 <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>
3891 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3892                   </li>
3893                   <li>
3894                     <span class="entry_type_enum_name">ACTION</span>
3895                     <span class="entry_type_enum_optional">[optional]</span>
3896                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3897 <p>Similar to SPORTS.<wbr/></p></span>
3898                   </li>
3899                   <li>
3900                     <span class="entry_type_enum_name">PORTRAIT</span>
3901                     <span class="entry_type_enum_optional">[optional]</span>
3902                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3903                   </li>
3904                   <li>
3905                     <span class="entry_type_enum_name">LANDSCAPE</span>
3906                     <span class="entry_type_enum_optional">[optional]</span>
3907                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3908                   </li>
3909                   <li>
3910                     <span class="entry_type_enum_name">NIGHT</span>
3911                     <span class="entry_type_enum_optional">[optional]</span>
3912                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3913                   </li>
3914                   <li>
3915                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3916                     <span class="entry_type_enum_optional">[optional]</span>
3917                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3918 settings.<wbr/></p></span>
3919                   </li>
3920                   <li>
3921                     <span class="entry_type_enum_name">THEATRE</span>
3922                     <span class="entry_type_enum_optional">[optional]</span>
3923                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3924 remain off.<wbr/></p></span>
3925                   </li>
3926                   <li>
3927                     <span class="entry_type_enum_name">BEACH</span>
3928                     <span class="entry_type_enum_optional">[optional]</span>
3929                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3930                   </li>
3931                   <li>
3932                     <span class="entry_type_enum_name">SNOW</span>
3933                     <span class="entry_type_enum_optional">[optional]</span>
3934                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3935                   </li>
3936                   <li>
3937                     <span class="entry_type_enum_name">SUNSET</span>
3938                     <span class="entry_type_enum_optional">[optional]</span>
3939                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3940                   </li>
3941                   <li>
3942                     <span class="entry_type_enum_name">STEADYPHOTO</span>
3943                     <span class="entry_type_enum_optional">[optional]</span>
3944                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3945 device motion (for example: due to hand shake).<wbr/></p></span>
3946                   </li>
3947                   <li>
3948                     <span class="entry_type_enum_name">FIREWORKS</span>
3949                     <span class="entry_type_enum_optional">[optional]</span>
3950                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3951                   </li>
3952                   <li>
3953                     <span class="entry_type_enum_name">SPORTS</span>
3954                     <span class="entry_type_enum_optional">[optional]</span>
3955                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3956 <p>Similar to ACTION.<wbr/></p></span>
3957                   </li>
3958                   <li>
3959                     <span class="entry_type_enum_name">PARTY</span>
3960                     <span class="entry_type_enum_optional">[optional]</span>
3961                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3962 people.<wbr/></p></span>
3963                   </li>
3964                   <li>
3965                     <span class="entry_type_enum_name">CANDLELIGHT</span>
3966                     <span class="entry_type_enum_optional">[optional]</span>
3967                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3968 is a flame.<wbr/></p></span>
3969                   </li>
3970                   <li>
3971                     <span class="entry_type_enum_name">BARCODE</span>
3972                     <span class="entry_type_enum_optional">[optional]</span>
3973                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3974 for use by camera applications that wish to read the
3975 barcode value.<wbr/></p></span>
3976                   </li>
3977                   <li>
3978                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3979                     <span class="entry_type_enum_deprecated">[deprecated]</span>
3980                     <span class="entry_type_enum_optional">[optional]</span>
3981                     <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>
3982 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3983 for high speed video recording.<wbr/></p>
3984 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3985 <p>The supported high speed video sizes and fps ranges are specified in
3986 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3987 output frame rates,<wbr/> the application is only allowed to select video size
3988 and fps range combinations listed in this static metadata.<wbr/> The fps range
3989 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3990 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3991 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3992 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3993 and post-processing parameters is possible.<wbr/> All other controls operate the
3994 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3995 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3996 <ul>
3997 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3998 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3999 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4000 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4001 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4002 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4003 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4004 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4005 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4006 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4007 </ul>
4008 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4009 <ul>
4010 <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>
4011 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4012 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4013 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4014 </ul>
4015 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4016 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4017 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4018 the application need check if the video encoder is capable of supporting the
4019 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4020 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4021 rate will be bounded by the screen refresh rate.<wbr/></p>
4022 <p>The camera device will only support up to 2 output high speed streams
4023 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4024 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4025 <ul>
4026 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4027 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4028 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>
4029 <li>The stream sizes are selected from the sizes reported by
4030 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4031 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4032 </ul>
4033 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4034 <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/>
4035 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4036 and the returned capture result metadata will give the fps range choosen
4037 by the camera device.<wbr/></p>
4038 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4039 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4040 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4041                   </li>
4042                   <li>
4043                     <span class="entry_type_enum_name">HDR</span>
4044                     <span class="entry_type_enum_optional">[optional]</span>
4045                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4046 <p>In this scene mode,<wbr/> the camera device captures images
4047 that keep a larger range of scene illumination levels
4048 visible in the final image.<wbr/> For example,<wbr/> when taking a
4049 picture of a object in front of a bright window,<wbr/> both
4050 the object and the scene through the window may be
4051 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4052 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4053 HDR mode generally takes much longer to capture a single
4054 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4055 depending on the HDR method used.<wbr/></p>
4056 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4057 than regular captures.<wbr/></p>
4058 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4059 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4060 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4061 using a high dynamic range capture technique.<wbr/>  On LEGACY
4062 devices,<wbr/> captures that target a JPEG-format output will
4063 be captured with HDR,<wbr/> and the capture intent is not
4064 relevant.<wbr/></p>
4065 <p>The HDR capture may involve the device capturing a burst
4066 of images internally and combining them into one,<wbr/> or it
4067 may involve the device using specialized high dynamic
4068 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4069 produced in response to a capture request submitted
4070 while in HDR mode.<wbr/></p>
4071 <p>Since substantial post-processing is generally needed to
4072 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4073 outputs are supported for LIMITED/<wbr/>FULL device HDR
4074 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4075 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4076 supported.<wbr/></p>
4077 <p>Some devices may also support always-on HDR,<wbr/> which
4078 applies HDR processing at full frame rate.<wbr/>  For these
4079 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4080 produce an HDR output with no frame rate impact compared
4081 to normal operation,<wbr/> though the quality may be lower
4082 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4083 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4084 or capture intents,<wbr/> the images captured will be as if
4085 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4086                   </li>
4087                   <li>
4088                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
4089                     <span class="entry_type_enum_optional">[optional]</span>
4090                     <span class="entry_type_enum_hidden">[hidden]</span>
4091                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4092 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4093 under low light conditions.<wbr/></p>
4094 <p>The camera device may be tuned to expose the images in a reduced
4095 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4096 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/>
4097 the camera device auto-exposure routine tuning process may limit the actual
4098 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4099 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4100 low light may be under-exposed when the sensor max exposure time (bounded by the
4101 <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
4102 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4103 camera device auto-exposure routine to increase the sensitivity up to the max
4104 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
4105 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4106 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4107 recommended that the application only use this scene mode when it is capable of
4108 reducing the noise level of the captured images.<wbr/></p>
4109 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4110 <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>
4111 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4112                   </li>
4113                   <li>
4114                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4115                     <span class="entry_type_enum_optional">[optional]</span>
4116                     <span class="entry_type_enum_hidden">[hidden]</span>
4117                     <span class="entry_type_enum_value">100</span>
4118                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4119 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4120 customized scene modes.<wbr/></p></span>
4121                   </li>
4122                   <li>
4123                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4124                     <span class="entry_type_enum_optional">[optional]</span>
4125                     <span class="entry_type_enum_hidden">[hidden]</span>
4126                     <span class="entry_type_enum_value">127</span>
4127                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4128 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4129 customized scene modes.<wbr/></p></span>
4130                   </li>
4131                 </ul>
4132
4133             </td> <!-- entry_type -->
4134
4135             <td class="entry_description">
4136               <p>Control for which scene mode is currently active.<wbr/></p>
4137             </td>
4138
4139             <td class="entry_units">
4140             </td>
4141
4142             <td class="entry_range">
4143               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4144             </td>
4145
4146             <td class="entry_hal_version">
4147               <p>3.<wbr/>2</p>
4148             </td>
4149
4150             <td class="entry_tags">
4151               <ul class="entry_tags">
4152                   <li><a href="#tag_BC">BC</a></li>
4153               </ul>
4154             </td>
4155
4156           </tr>
4157           <tr class="entries_header">
4158             <th class="th_details" colspan="6">Details</th>
4159           </tr>
4160           <tr class="entry_cont">
4161             <td class="entry_details" colspan="6">
4162               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4163 capture settings.<wbr/></p>
4164 <p>This is the mode that that is active when
4165 <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
4166 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>
4167 while in use.<wbr/></p>
4168 <p>The interpretation and implementation of these scene modes is left
4169 to the implementor of the camera device.<wbr/> Their behavior will not be
4170 consistent across all devices,<wbr/> and any given device may only implement
4171 a subset of these modes.<wbr/></p>
4172             </td>
4173           </tr>
4174
4175           <tr class="entries_header">
4176             <th class="th_details" colspan="6">HAL Implementation Details</th>
4177           </tr>
4178           <tr class="entry_cont">
4179             <td class="entry_details" colspan="6">
4180               <p>HAL implementations that include scene modes are expected to provide
4181 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4182 <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
4183 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4184 <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
4185 HAL must list supported video size and fps range in
4186 <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/>
4187 if the HAL has two different sensor configurations for normal streaming mode and high
4188 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4189 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4190 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4191 <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
4192 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4193             </td>
4194           </tr>
4195
4196           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4197            <!-- end of entry -->
4198         
4199                 
4200           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4201             <td class="entry_name
4202              " rowspan="3">
4203               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4204             </td>
4205             <td class="entry_type">
4206                 <span class="entry_type_name entry_type_name_enum">byte</span>
4207
4208               <span class="entry_type_visibility"> [public]</span>
4209
4210
4211               <span class="entry_type_hwlevel">[legacy] </span>
4212
4213
4214
4215                 <ul class="entry_type_enum">
4216                   <li>
4217                     <span class="entry_type_enum_name">OFF</span>
4218                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4219                   </li>
4220                   <li>
4221                     <span class="entry_type_enum_name">ON</span>
4222                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4223                   </li>
4224                 </ul>
4225
4226             </td> <!-- entry_type -->
4227
4228             <td class="entry_description">
4229               <p>Whether video stabilization is
4230 active.<wbr/></p>
4231             </td>
4232
4233             <td class="entry_units">
4234             </td>
4235
4236             <td class="entry_range">
4237             </td>
4238
4239             <td class="entry_hal_version">
4240               <p>3.<wbr/>2</p>
4241             </td>
4242
4243             <td class="entry_tags">
4244               <ul class="entry_tags">
4245                   <li><a href="#tag_BC">BC</a></li>
4246               </ul>
4247             </td>
4248
4249           </tr>
4250           <tr class="entries_header">
4251             <th class="th_details" colspan="6">Details</th>
4252           </tr>
4253           <tr class="entry_cont">
4254             <td class="entry_details" colspan="6">
4255               <p>Video stabilization automatically warps images from
4256 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4257 <p>If enabled,<wbr/> video stabilization can modify the
4258 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4259 <p>Switching between different video stabilization modes may take several
4260 frames to initialize,<wbr/> the camera device will report the current mode
4261 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4262 the video stabilization modes in the first several capture results may
4263 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4264 done.<wbr/></p>
4265 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4266 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4267 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4268 the recording resolution is less than or equal to 1920 x 1080 (width less than
4269 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4270 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4271 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4272 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4273 Surface types that can be stabilized.<wbr/></p>
4274 <p>If a camera device supports both this mode and OIS
4275 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4276 produce undesirable interaction,<wbr/> so it is recommended not to enable
4277 both at the same time.<wbr/></p>
4278             </td>
4279           </tr>
4280
4281
4282           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4283            <!-- end of entry -->
4284         
4285                 
4286           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4287             <td class="entry_name
4288              " rowspan="3">
4289               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4290             </td>
4291             <td class="entry_type">
4292                 <span class="entry_type_name">int32</span>
4293
4294               <span class="entry_type_visibility"> [public]</span>
4295
4296
4297
4298
4299
4300
4301             </td> <!-- entry_type -->
4302
4303             <td class="entry_description">
4304               <p>The amount of additional sensitivity boost applied to output images
4305 after RAW sensor data is captured.<wbr/></p>
4306             </td>
4307
4308             <td class="entry_units">
4309               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4310             </td>
4311
4312             <td class="entry_range">
4313               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4314             </td>
4315
4316             <td class="entry_hal_version">
4317               <p>3.<wbr/>2</p>
4318             </td>
4319
4320             <td class="entry_tags">
4321             </td>
4322
4323           </tr>
4324           <tr class="entries_header">
4325             <th class="th_details" colspan="6">Details</th>
4326           </tr>
4327           <tr class="entry_cont">
4328             <td class="entry_details" colspan="6">
4329               <p>Some camera devices support additional digital sensitivity boosting in the
4330 camera processing pipeline after sensor RAW image is captured.<wbr/>
4331 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4332 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4333 <p>This key will be <code>null</code> for devices that do not support any RAW format
4334 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4335 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4336 list <code>100</code> in this key.<wbr/></p>
4337 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4338 boost to the nearest supported value.<wbr/>
4339 The final boost value used will be available in the output capture result.<wbr/></p>
4340 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4341 of such device will have the total sensitivity of
4342 <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>
4343 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4344 <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
4345 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4346             </td>
4347           </tr>
4348
4349
4350           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4351            <!-- end of entry -->
4352         
4353                 
4354           <tr class="entry" id="controls_android.control.enableZsl">
4355             <td class="entry_name
4356              " rowspan="5">
4357               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4358             </td>
4359             <td class="entry_type">
4360                 <span class="entry_type_name entry_type_name_enum">byte</span>
4361
4362               <span class="entry_type_visibility"> [public as boolean]</span>
4363
4364
4365
4366
4367
4368                 <ul class="entry_type_enum">
4369                   <li>
4370                     <span class="entry_type_enum_name">FALSE</span>
4371                     <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
4372 after previous requests.<wbr/></p></span>
4373                   </li>
4374                   <li>
4375                     <span class="entry_type_enum_name">TRUE</span>
4376                     <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
4377 captured before previous requests.<wbr/></p></span>
4378                   </li>
4379                 </ul>
4380
4381             </td> <!-- entry_type -->
4382
4383             <td class="entry_description">
4384               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4385 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4386             </td>
4387
4388             <td class="entry_units">
4389             </td>
4390
4391             <td class="entry_range">
4392             </td>
4393
4394             <td class="entry_hal_version">
4395               <p>3.<wbr/>2</p>
4396             </td>
4397
4398             <td class="entry_tags">
4399             </td>
4400
4401           </tr>
4402           <tr class="entries_header">
4403             <th class="th_details" colspan="6">Details</th>
4404           </tr>
4405           <tr class="entry_cont">
4406             <td class="entry_details" colspan="6">
4407               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4408 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4409 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4410 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4411 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4412 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4413 capture intents.<wbr/></p>
4414 <p>For example,<wbr/> when requests are submitted in the following order:
4415   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4416   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>
4417 <p>The output images for request B may have contents captured before the output images for
4418 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4419 request A.<wbr/></p>
4420 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4421 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4422 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4423 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4424 <code>false</code> if present.<wbr/></p>
4425 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4426 capture templates is always <code>false</code> if present.<wbr/></p>
4427 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4428             </td>
4429           </tr>
4430
4431           <tr class="entries_header">
4432             <th class="th_details" colspan="6">HAL Implementation Details</th>
4433           </tr>
4434           <tr class="entry_cont">
4435             <td class="entry_details" colspan="6">
4436               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4437 capture intent.<wbr/></p>
4438             </td>
4439           </tr>
4440
4441           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4442            <!-- end of entry -->
4443         
4444         
4445
4446       <!-- end of kind -->
4447       </tbody>
4448       <tr><td colspan="7" class="kind">static</td></tr>
4449
4450       <thead class="entries_header">
4451         <tr>
4452           <th class="th_name">Property Name</th>
4453           <th class="th_type">Type</th>
4454           <th class="th_description">Description</th>
4455           <th class="th_units">Units</th>
4456           <th class="th_range">Range</th>
4457           <th class="th_hal_version">Initial HIDL HAL version</th>
4458           <th class="th_tags">Tags</th>
4459         </tr>
4460       </thead>
4461
4462       <tbody>
4463
4464         
4465
4466         
4467
4468         
4469
4470         
4471
4472                 
4473           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4474             <td class="entry_name
4475              " rowspan="3">
4476               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4477             </td>
4478             <td class="entry_type">
4479                 <span class="entry_type_name">byte</span>
4480                 <span class="entry_type_container">x</span>
4481
4482                 <span class="entry_type_array">
4483                   n
4484                 </span>
4485               <span class="entry_type_visibility"> [public as enumList]</span>
4486
4487
4488               <span class="entry_type_hwlevel">[legacy] </span>
4489
4490
4491                 <div class="entry_type_notes">list of enums</div>
4492
4493
4494             </td> <!-- entry_type -->
4495
4496             <td class="entry_description">
4497               <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
4498 supported by this camera device.<wbr/></p>
4499             </td>
4500
4501             <td class="entry_units">
4502             </td>
4503
4504             <td class="entry_range">
4505               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4506             </td>
4507
4508             <td class="entry_hal_version">
4509               <p>3.<wbr/>2</p>
4510             </td>
4511
4512             <td class="entry_tags">
4513               <ul class="entry_tags">
4514                   <li><a href="#tag_BC">BC</a></li>
4515               </ul>
4516             </td>
4517
4518           </tr>
4519           <tr class="entries_header">
4520             <th class="th_details" colspan="6">Details</th>
4521           </tr>
4522           <tr class="entry_cont">
4523             <td class="entry_details" colspan="6">
4524               <p>Not all of the auto-exposure anti-banding modes may be
4525 supported by a given camera device.<wbr/> This field lists the
4526 valid anti-banding modes that the application may request
4527 for this camera device with the
4528 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4529             </td>
4530           </tr>
4531
4532
4533           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4534            <!-- end of entry -->
4535         
4536                 
4537           <tr class="entry" id="static_android.control.aeAvailableModes">
4538             <td class="entry_name
4539              " rowspan="3">
4540               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4541             </td>
4542             <td class="entry_type">
4543                 <span class="entry_type_name">byte</span>
4544                 <span class="entry_type_container">x</span>
4545
4546                 <span class="entry_type_array">
4547                   n
4548                 </span>
4549               <span class="entry_type_visibility"> [public as enumList]</span>
4550
4551
4552               <span class="entry_type_hwlevel">[legacy] </span>
4553
4554
4555                 <div class="entry_type_notes">list of enums</div>
4556
4557
4558             </td> <!-- entry_type -->
4559
4560             <td class="entry_description">
4561               <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
4562 device.<wbr/></p>
4563             </td>
4564
4565             <td class="entry_units">
4566             </td>
4567
4568             <td class="entry_range">
4569               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4570             </td>
4571
4572             <td class="entry_hal_version">
4573               <p>3.<wbr/>2</p>
4574             </td>
4575
4576             <td class="entry_tags">
4577               <ul class="entry_tags">
4578                   <li><a href="#tag_BC">BC</a></li>
4579               </ul>
4580             </td>
4581
4582           </tr>
4583           <tr class="entries_header">
4584             <th class="th_details" colspan="6">Details</th>
4585           </tr>
4586           <tr class="entry_cont">
4587             <td class="entry_details" colspan="6">
4588               <p>Not all the auto-exposure modes may be supported by a
4589 given camera device,<wbr/> especially if no flash unit is
4590 available.<wbr/> This entry lists the valid modes for
4591 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4592 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4593 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4594 <p>FULL mode camera devices always support OFF mode,<wbr/>
4595 which enables application control of camera exposure time,<wbr/>
4596 sensitivity,<wbr/> and frame duration.<wbr/></p>
4597 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4598 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4599 capability.<wbr/></p>
4600             </td>
4601           </tr>
4602
4603
4604           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4605            <!-- end of entry -->
4606         
4607                 
4608           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4609             <td class="entry_name
4610              " rowspan="3">
4611               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4612             </td>
4613             <td class="entry_type">
4614                 <span class="entry_type_name">int32</span>
4615                 <span class="entry_type_container">x</span>
4616
4617                 <span class="entry_type_array">
4618                   2 x n
4619                 </span>
4620               <span class="entry_type_visibility"> [public as rangeInt]</span>
4621
4622
4623               <span class="entry_type_hwlevel">[legacy] </span>
4624
4625
4626                 <div class="entry_type_notes">list of pairs of frame rates</div>
4627
4628
4629             </td> <!-- entry_type -->
4630
4631             <td class="entry_description">
4632               <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
4633 this camera device.<wbr/></p>
4634             </td>
4635
4636             <td class="entry_units">
4637               Frames per second (FPS)
4638             </td>
4639
4640             <td class="entry_range">
4641             </td>
4642
4643             <td class="entry_hal_version">
4644               <p>3.<wbr/>2</p>
4645             </td>
4646
4647             <td class="entry_tags">
4648               <ul class="entry_tags">
4649                   <li><a href="#tag_BC">BC</a></li>
4650               </ul>
4651             </td>
4652
4653           </tr>
4654           <tr class="entries_header">
4655             <th class="th_details" colspan="6">Details</th>
4656           </tr>
4657           <tr class="entry_cont">
4658             <td class="entry_details" colspan="6">
4659               <p>For devices at the LEGACY level or above:</p>
4660 <ul>
4661 <li>
4662 <p>For constant-framerate recording,<wbr/> for each normal
4663 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4664 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4665 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4666 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4667 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4668 supported by the device and has
4669 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4670 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4671 </li>
4672 <li>
4673 <p>Also,<wbr/> a camera device must either not support any
4674 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4675 or support at least one
4676 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4677 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4678 </li>
4679 </ul>
4680 <p>For devices at the LIMITED level or above:</p>
4681 <ul>
4682 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4683 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
4684 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4685 </ul>
4686             </td>
4687           </tr>
4688
4689
4690           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4691            <!-- end of entry -->
4692         
4693                 
4694           <tr class="entry" id="static_android.control.aeCompensationRange">
4695             <td class="entry_name
4696              " rowspan="1">
4697               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4698             </td>
4699             <td class="entry_type">
4700                 <span class="entry_type_name">int32</span>
4701                 <span class="entry_type_container">x</span>
4702
4703                 <span class="entry_type_array">
4704                   2
4705                 </span>
4706               <span class="entry_type_visibility"> [public as rangeInt]</span>
4707
4708
4709               <span class="entry_type_hwlevel">[legacy] </span>
4710
4711
4712
4713
4714             </td> <!-- entry_type -->
4715
4716             <td class="entry_description">
4717               <p>Maximum and minimum exposure compensation values for
4718 <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/>
4719 that are supported by this camera device.<wbr/></p>
4720             </td>
4721
4722             <td class="entry_units">
4723             </td>
4724
4725             <td class="entry_range">
4726               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4727 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4728 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4729 <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>
4730 <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>
4731 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4732             </td>
4733
4734             <td class="entry_hal_version">
4735               <p>3.<wbr/>2</p>
4736             </td>
4737
4738             <td class="entry_tags">
4739               <ul class="entry_tags">
4740                   <li><a href="#tag_BC">BC</a></li>
4741               </ul>
4742             </td>
4743
4744           </tr>
4745
4746
4747           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4748            <!-- end of entry -->
4749         
4750                 
4751           <tr class="entry" id="static_android.control.aeCompensationStep">
4752             <td class="entry_name
4753              " rowspan="5">
4754               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4755             </td>
4756             <td class="entry_type">
4757                 <span class="entry_type_name">rational</span>
4758
4759               <span class="entry_type_visibility"> [public]</span>
4760
4761
4762               <span class="entry_type_hwlevel">[legacy] </span>
4763
4764
4765
4766
4767             </td> <!-- entry_type -->
4768
4769             <td class="entry_description">
4770               <p>Smallest step by which the exposure compensation
4771 can be changed.<wbr/></p>
4772             </td>
4773
4774             <td class="entry_units">
4775               Exposure Value (EV)
4776             </td>
4777
4778             <td class="entry_range">
4779             </td>
4780
4781             <td class="entry_hal_version">
4782               <p>3.<wbr/>2</p>
4783             </td>
4784
4785             <td class="entry_tags">
4786               <ul class="entry_tags">
4787                   <li><a href="#tag_BC">BC</a></li>
4788               </ul>
4789             </td>
4790
4791           </tr>
4792           <tr class="entries_header">
4793             <th class="th_details" colspan="6">Details</th>
4794           </tr>
4795           <tr class="entry_cont">
4796             <td class="entry_details" colspan="6">
4797               <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
4798 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
4799 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4800 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4801 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4802             </td>
4803           </tr>
4804
4805           <tr class="entries_header">
4806             <th class="th_details" colspan="6">HAL Implementation Details</th>
4807           </tr>
4808           <tr class="entry_cont">
4809             <td class="entry_details" colspan="6">
4810               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4811             </td>
4812           </tr>
4813
4814           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4815            <!-- end of entry -->
4816         
4817                 
4818           <tr class="entry" id="static_android.control.afAvailableModes">
4819             <td class="entry_name
4820              " rowspan="3">
4821               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4822             </td>
4823             <td class="entry_type">
4824                 <span class="entry_type_name">byte</span>
4825                 <span class="entry_type_container">x</span>
4826
4827                 <span class="entry_type_array">
4828                   n
4829                 </span>
4830               <span class="entry_type_visibility"> [public as enumList]</span>
4831
4832
4833               <span class="entry_type_hwlevel">[legacy] </span>
4834
4835
4836                 <div class="entry_type_notes">List of enums</div>
4837
4838
4839             </td> <!-- entry_type -->
4840
4841             <td class="entry_description">
4842               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4843 supported by this camera device.<wbr/></p>
4844             </td>
4845
4846             <td class="entry_units">
4847             </td>
4848
4849             <td class="entry_range">
4850               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4851             </td>
4852
4853             <td class="entry_hal_version">
4854               <p>3.<wbr/>2</p>
4855             </td>
4856
4857             <td class="entry_tags">
4858               <ul class="entry_tags">
4859                   <li><a href="#tag_BC">BC</a></li>
4860               </ul>
4861             </td>
4862
4863           </tr>
4864           <tr class="entries_header">
4865             <th class="th_details" colspan="6">Details</th>
4866           </tr>
4867           <tr class="entry_cont">
4868             <td class="entry_details" colspan="6">
4869               <p>Not all the auto-focus modes may be supported by a
4870 given camera device.<wbr/> This entry lists the valid modes for
4871 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4872 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4873 camera devices with adjustable focuser units
4874 (<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>
4875 <p>LEGACY devices will support OFF mode only if they support
4876 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4877 <code>0.<wbr/>0f</code>).<wbr/></p>
4878             </td>
4879           </tr>
4880
4881
4882           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4883            <!-- end of entry -->
4884         
4885                 
4886           <tr class="entry" id="static_android.control.availableEffects">
4887             <td class="entry_name
4888              " rowspan="3">
4889               android.<wbr/>control.<wbr/>available<wbr/>Effects
4890             </td>
4891             <td class="entry_type">
4892                 <span class="entry_type_name">byte</span>
4893                 <span class="entry_type_container">x</span>
4894
4895                 <span class="entry_type_array">
4896                   n
4897                 </span>
4898               <span class="entry_type_visibility"> [public as enumList]</span>
4899
4900
4901               <span class="entry_type_hwlevel">[legacy] </span>
4902
4903
4904                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4905
4906
4907             </td> <!-- entry_type -->
4908
4909             <td class="entry_description">
4910               <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
4911 device.<wbr/></p>
4912             </td>
4913
4914             <td class="entry_units">
4915             </td>
4916
4917             <td class="entry_range">
4918               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4919             </td>
4920
4921             <td class="entry_hal_version">
4922               <p>3.<wbr/>2</p>
4923             </td>
4924
4925             <td class="entry_tags">
4926               <ul class="entry_tags">
4927                   <li><a href="#tag_BC">BC</a></li>
4928               </ul>
4929             </td>
4930
4931           </tr>
4932           <tr class="entries_header">
4933             <th class="th_details" colspan="6">Details</th>
4934           </tr>
4935           <tr class="entry_cont">
4936             <td class="entry_details" colspan="6">
4937               <p>This list contains the color effect modes that can be applied to
4938 images produced by the camera device.<wbr/>
4939 Implementations are not expected to be consistent across all devices.<wbr/>
4940 If no color effect modes are available for a device,<wbr/> this will only list
4941 OFF.<wbr/></p>
4942 <p>A color effect will only be applied if
4943 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4944 <p>This control has no effect on the operation of other control routines such
4945 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4946             </td>
4947           </tr>
4948
4949
4950           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4951            <!-- end of entry -->
4952         
4953                 
4954           <tr class="entry" id="static_android.control.availableSceneModes">
4955             <td class="entry_name
4956              " rowspan="3">
4957               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4958             </td>
4959             <td class="entry_type">
4960                 <span class="entry_type_name">byte</span>
4961                 <span class="entry_type_container">x</span>
4962
4963                 <span class="entry_type_array">
4964                   n
4965                 </span>
4966               <span class="entry_type_visibility"> [public as enumList]</span>
4967
4968
4969               <span class="entry_type_hwlevel">[legacy] </span>
4970
4971
4972                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4973
4974
4975             </td> <!-- entry_type -->
4976
4977             <td class="entry_description">
4978               <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
4979 device.<wbr/></p>
4980             </td>
4981
4982             <td class="entry_units">
4983             </td>
4984
4985             <td class="entry_range">
4986               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4987             </td>
4988
4989             <td class="entry_hal_version">
4990               <p>3.<wbr/>2</p>
4991             </td>
4992
4993             <td class="entry_tags">
4994               <ul class="entry_tags">
4995                   <li><a href="#tag_BC">BC</a></li>
4996               </ul>
4997             </td>
4998
4999           </tr>
5000           <tr class="entries_header">
5001             <th class="th_details" colspan="6">Details</th>
5002           </tr>
5003           <tr class="entry_cont">
5004             <td class="entry_details" colspan="6">
5005               <p>This list contains scene modes that can be set for the camera device.<wbr/>
5006 Only scene modes that have been fully implemented for the
5007 camera device may be included here.<wbr/> Implementations are not expected
5008 to be consistent across all devices.<wbr/></p>
5009 <p>If no scene modes are supported by the camera device,<wbr/> this
5010 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5011 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5012 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;
5013 0</code>).<wbr/></p>
5014             </td>
5015           </tr>
5016
5017
5018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5019            <!-- end of entry -->
5020         
5021                 
5022           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5023             <td class="entry_name
5024              " rowspan="3">
5025               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5026             </td>
5027             <td class="entry_type">
5028                 <span class="entry_type_name">byte</span>
5029                 <span class="entry_type_container">x</span>
5030
5031                 <span class="entry_type_array">
5032                   n
5033                 </span>
5034               <span class="entry_type_visibility"> [public as enumList]</span>
5035
5036
5037               <span class="entry_type_hwlevel">[legacy] </span>
5038
5039
5040                 <div class="entry_type_notes">List of enums.<wbr/></div>
5041
5042
5043             </td> <!-- entry_type -->
5044
5045             <td class="entry_description">
5046               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5047 that are supported by this camera device.<wbr/></p>
5048             </td>
5049
5050             <td class="entry_units">
5051             </td>
5052
5053             <td class="entry_range">
5054               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5055             </td>
5056
5057             <td class="entry_hal_version">
5058               <p>3.<wbr/>2</p>
5059             </td>
5060
5061             <td class="entry_tags">
5062               <ul class="entry_tags">
5063                   <li><a href="#tag_BC">BC</a></li>
5064               </ul>
5065             </td>
5066
5067           </tr>
5068           <tr class="entries_header">
5069             <th class="th_details" colspan="6">Details</th>
5070           </tr>
5071           <tr class="entry_cont">
5072             <td class="entry_details" colspan="6">
5073               <p>OFF will always be listed.<wbr/></p>
5074             </td>
5075           </tr>
5076
5077
5078           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5079            <!-- end of entry -->
5080         
5081                 
5082           <tr class="entry" id="static_android.control.awbAvailableModes">
5083             <td class="entry_name
5084              " rowspan="3">
5085               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5086             </td>
5087             <td class="entry_type">
5088                 <span class="entry_type_name">byte</span>
5089                 <span class="entry_type_container">x</span>
5090
5091                 <span class="entry_type_array">
5092                   n
5093                 </span>
5094               <span class="entry_type_visibility"> [public as enumList]</span>
5095
5096
5097               <span class="entry_type_hwlevel">[legacy] </span>
5098
5099
5100                 <div class="entry_type_notes">List of enums</div>
5101
5102
5103             </td> <!-- entry_type -->
5104
5105             <td class="entry_description">
5106               <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
5107 camera device.<wbr/></p>
5108             </td>
5109
5110             <td class="entry_units">
5111             </td>
5112
5113             <td class="entry_range">
5114               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5115             </td>
5116
5117             <td class="entry_hal_version">
5118               <p>3.<wbr/>2</p>
5119             </td>
5120
5121             <td class="entry_tags">
5122               <ul class="entry_tags">
5123                   <li><a href="#tag_BC">BC</a></li>
5124               </ul>
5125             </td>
5126
5127           </tr>
5128           <tr class="entries_header">
5129             <th class="th_details" colspan="6">Details</th>
5130           </tr>
5131           <tr class="entry_cont">
5132             <td class="entry_details" colspan="6">
5133               <p>Not all the auto-white-balance modes may be supported by a
5134 given camera device.<wbr/> This entry lists the valid modes for
5135 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5136 <p>All camera devices will support ON mode.<wbr/></p>
5137 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5138 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5139 <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
5140 mode camera devices.<wbr/></p>
5141             </td>
5142           </tr>
5143
5144
5145           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5146            <!-- end of entry -->
5147         
5148                 
5149           <tr class="entry" id="static_android.control.maxRegions">
5150             <td class="entry_name
5151              " rowspan="1">
5152               android.<wbr/>control.<wbr/>max<wbr/>Regions
5153             </td>
5154             <td class="entry_type">
5155                 <span class="entry_type_name">int32</span>
5156                 <span class="entry_type_container">x</span>
5157
5158                 <span class="entry_type_array">
5159                   3
5160                 </span>
5161               <span class="entry_type_visibility"> [ndk_public]</span>
5162
5163
5164               <span class="entry_type_hwlevel">[legacy] </span>
5165
5166
5167
5168
5169             </td> <!-- entry_type -->
5170
5171             <td class="entry_description">
5172               <p>List of the maximum number of regions that can be used for metering in
5173 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5174 this corresponds to the the maximum number of elements in
5175 <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/>
5176 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5177             </td>
5178
5179             <td class="entry_units">
5180             </td>
5181
5182             <td class="entry_range">
5183               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5184 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5185 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5186             </td>
5187
5188             <td class="entry_hal_version">
5189               <p>3.<wbr/>2</p>
5190             </td>
5191
5192             <td class="entry_tags">
5193               <ul class="entry_tags">
5194                   <li><a href="#tag_BC">BC</a></li>
5195               </ul>
5196             </td>
5197
5198           </tr>
5199
5200
5201           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5202            <!-- end of entry -->
5203         
5204                 
5205           <tr class="entry" id="static_android.control.maxRegionsAe">
5206             <td class="entry_name
5207              " rowspan="5">
5208               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5209             </td>
5210             <td class="entry_type">
5211                 <span class="entry_type_name">int32</span>
5212
5213               <span class="entry_type_visibility"> [java_public]</span>
5214
5215               <span class="entry_type_synthetic">[synthetic] </span>
5216
5217               <span class="entry_type_hwlevel">[legacy] </span>
5218
5219
5220
5221
5222             </td> <!-- entry_type -->
5223
5224             <td class="entry_description">
5225               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5226 routine.<wbr/></p>
5227             </td>
5228
5229             <td class="entry_units">
5230             </td>
5231
5232             <td class="entry_range">
5233               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5234 value will be &gt;= 1.<wbr/></p>
5235             </td>
5236
5237             <td class="entry_hal_version">
5238               <p>3.<wbr/>2</p>
5239             </td>
5240
5241             <td class="entry_tags">
5242             </td>
5243
5244           </tr>
5245           <tr class="entries_header">
5246             <th class="th_details" colspan="6">Details</th>
5247           </tr>
5248           <tr class="entry_cont">
5249             <td class="entry_details" colspan="6">
5250               <p>This corresponds to the the maximum allowed number of elements in
5251 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5252             </td>
5253           </tr>
5254
5255           <tr class="entries_header">
5256             <th class="th_details" colspan="6">HAL Implementation Details</th>
5257           </tr>
5258           <tr class="entry_cont">
5259             <td class="entry_details" colspan="6">
5260               <p>This entry is private to the framework.<wbr/> Fill in
5261 maxRegions to have this entry be automatically populated.<wbr/></p>
5262             </td>
5263           </tr>
5264
5265           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5266            <!-- end of entry -->
5267         
5268                 
5269           <tr class="entry" id="static_android.control.maxRegionsAwb">
5270             <td class="entry_name
5271              " rowspan="5">
5272               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5273             </td>
5274             <td class="entry_type">
5275                 <span class="entry_type_name">int32</span>
5276
5277               <span class="entry_type_visibility"> [java_public]</span>
5278
5279               <span class="entry_type_synthetic">[synthetic] </span>
5280
5281               <span class="entry_type_hwlevel">[legacy] </span>
5282
5283
5284
5285
5286             </td> <!-- entry_type -->
5287
5288             <td class="entry_description">
5289               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5290 routine.<wbr/></p>
5291             </td>
5292
5293             <td class="entry_units">
5294             </td>
5295
5296             <td class="entry_range">
5297               <p>Value will be &gt;= 0.<wbr/></p>
5298             </td>
5299
5300             <td class="entry_hal_version">
5301               <p>3.<wbr/>2</p>
5302             </td>
5303
5304             <td class="entry_tags">
5305             </td>
5306
5307           </tr>
5308           <tr class="entries_header">
5309             <th class="th_details" colspan="6">Details</th>
5310           </tr>
5311           <tr class="entry_cont">
5312             <td class="entry_details" colspan="6">
5313               <p>This corresponds to the the maximum allowed number of elements in
5314 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5315             </td>
5316           </tr>
5317
5318           <tr class="entries_header">
5319             <th class="th_details" colspan="6">HAL Implementation Details</th>
5320           </tr>
5321           <tr class="entry_cont">
5322             <td class="entry_details" colspan="6">
5323               <p>This entry is private to the framework.<wbr/> Fill in
5324 maxRegions to have this entry be automatically populated.<wbr/></p>
5325             </td>
5326           </tr>
5327
5328           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5329            <!-- end of entry -->
5330         
5331                 
5332           <tr class="entry" id="static_android.control.maxRegionsAf">
5333             <td class="entry_name
5334              " rowspan="5">
5335               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5336             </td>
5337             <td class="entry_type">
5338                 <span class="entry_type_name">int32</span>
5339
5340               <span class="entry_type_visibility"> [java_public]</span>
5341
5342               <span class="entry_type_synthetic">[synthetic] </span>
5343
5344               <span class="entry_type_hwlevel">[legacy] </span>
5345
5346
5347
5348
5349             </td> <!-- entry_type -->
5350
5351             <td class="entry_description">
5352               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5353             </td>
5354
5355             <td class="entry_units">
5356             </td>
5357
5358             <td class="entry_range">
5359               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5360 value will be &gt;= 1.<wbr/></p>
5361             </td>
5362
5363             <td class="entry_hal_version">
5364               <p>3.<wbr/>2</p>
5365             </td>
5366
5367             <td class="entry_tags">
5368             </td>
5369
5370           </tr>
5371           <tr class="entries_header">
5372             <th class="th_details" colspan="6">Details</th>
5373           </tr>
5374           <tr class="entry_cont">
5375             <td class="entry_details" colspan="6">
5376               <p>This corresponds to the the maximum allowed number of elements in
5377 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5378             </td>
5379           </tr>
5380
5381           <tr class="entries_header">
5382             <th class="th_details" colspan="6">HAL Implementation Details</th>
5383           </tr>
5384           <tr class="entry_cont">
5385             <td class="entry_details" colspan="6">
5386               <p>This entry is private to the framework.<wbr/> Fill in
5387 maxRegions to have this entry be automatically populated.<wbr/></p>
5388             </td>
5389           </tr>
5390
5391           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5392            <!-- end of entry -->
5393         
5394                 
5395           <tr class="entry" id="static_android.control.sceneModeOverrides">
5396             <td class="entry_name
5397              " rowspan="5">
5398               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5399             </td>
5400             <td class="entry_type">
5401                 <span class="entry_type_name">byte</span>
5402                 <span class="entry_type_container">x</span>
5403
5404                 <span class="entry_type_array">
5405                   3 x length(availableSceneModes)
5406                 </span>
5407               <span class="entry_type_visibility"> [system]</span>
5408
5409
5410               <span class="entry_type_hwlevel">[limited] </span>
5411
5412
5413
5414
5415             </td> <!-- entry_type -->
5416
5417             <td class="entry_description">
5418               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5419 settings to use with each available scene mode.<wbr/></p>
5420             </td>
5421
5422             <td class="entry_units">
5423             </td>
5424
5425             <td class="entry_range">
5426               <p>For each available scene mode,<wbr/> the list must contain three
5427 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5428 <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
5429 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5430 where aeMode has the lowest index position.<wbr/></p>
5431             </td>
5432
5433             <td class="entry_hal_version">
5434               <p>3.<wbr/>2</p>
5435             </td>
5436
5437             <td class="entry_tags">
5438               <ul class="entry_tags">
5439                   <li><a href="#tag_BC">BC</a></li>
5440               </ul>
5441             </td>
5442
5443           </tr>
5444           <tr class="entries_header">
5445             <th class="th_details" colspan="6">Details</th>
5446           </tr>
5447           <tr class="entry_cont">
5448             <td class="entry_details" colspan="6">
5449               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5450 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/>
5451 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5452 that scene mode.<wbr/></p>
5453 <p>The order of this list matches that of availableSceneModes,<wbr/>
5454 with 3 entries for each mode.<wbr/>  The overrides listed
5455 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5456 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5457 <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
5458 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5459 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5460 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5461 <p>For example,<wbr/> if availableSceneModes contains
5462 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5463 expects sceneModeOverrides to have 9 entries formatted like:
5464 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5465 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5466             </td>
5467           </tr>
5468
5469           <tr class="entries_header">
5470             <th class="th_details" colspan="6">HAL Implementation Details</th>
5471           </tr>
5472           <tr class="entry_cont">
5473             <td class="entry_details" colspan="6">
5474               <p>To maintain backward compatibility,<wbr/> this list will be made available
5475 in the static metadata of the camera service.<wbr/>  The camera service will
5476 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5477 <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
5478 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5479             </td>
5480           </tr>
5481
5482           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5483            <!-- end of entry -->
5484         
5485                 
5486           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5487             <td class="entry_name
5488              " rowspan="5">
5489               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5490             </td>
5491             <td class="entry_type">
5492                 <span class="entry_type_name">int32</span>
5493                 <span class="entry_type_container">x</span>
5494
5495                 <span class="entry_type_array">
5496                   5 x n
5497                 </span>
5498               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5499
5500
5501               <span class="entry_type_hwlevel">[limited] </span>
5502
5503
5504
5505
5506             </td> <!-- entry_type -->
5507
5508             <td class="entry_description">
5509               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5510 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>
5511             </td>
5512
5513             <td class="entry_units">
5514             </td>
5515
5516             <td class="entry_range">
5517               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5518             </td>
5519
5520             <td class="entry_hal_version">
5521               <p>3.<wbr/>2</p>
5522             </td>
5523
5524             <td class="entry_tags">
5525               <ul class="entry_tags">
5526                   <li><a href="#tag_V1">V1</a></li>
5527               </ul>
5528             </td>
5529
5530           </tr>
5531           <tr class="entries_header">
5532             <th class="th_details" colspan="6">Details</th>
5533           </tr>
5534           <tr class="entry_cont">
5535             <td class="entry_details" colspan="6">
5536               <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/>
5537 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5538 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5539 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5540 for processed non-stalling formats.<wbr/></p>
5541 <p>For the high speed video use case,<wbr/> the application must
5542 select the video size and fps range from this metadata to configure the recording and
5543 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5544 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5545 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5546 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5547 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5548 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5549 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5550 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5551 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5552 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5553 multiple frames together and send to camera device for processing where the request
5554 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5555 the max possible number of frames the camera device will group together for this high
5556 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5557 recording request list by
5558 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5559 The max batch size for each configuration will satisfy below conditions:</p>
5560 <ul>
5561 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5562 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5563 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5564 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5565 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>
5566 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5567 </ul>
5568 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5569 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5570 <p>This fps ranges in this configuration list can only be used to create requests
5571 that are submitted to a high speed camera capture session created by
5572 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5573 The fps ranges reported in this metadata must not be used to setup capture requests for
5574 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5575             </td>
5576           </tr>
5577
5578           <tr class="entries_header">
5579             <th class="th_details" colspan="6">HAL Implementation Details</th>
5580           </tr>
5581           <tr class="entry_cont">
5582             <td class="entry_details" colspan="6">
5583               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5584 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5585 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5586 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5587 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5588 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5589 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5590 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5591 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5592 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5593 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5594 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5595 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5596 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5597 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5598 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5599 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5600             </td>
5601           </tr>
5602
5603           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5604            <!-- end of entry -->
5605         
5606                 
5607           <tr class="entry" id="static_android.control.aeLockAvailable">
5608             <td class="entry_name
5609              " rowspan="3">
5610               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5611             </td>
5612             <td class="entry_type">
5613                 <span class="entry_type_name entry_type_name_enum">byte</span>
5614
5615               <span class="entry_type_visibility"> [public as boolean]</span>
5616
5617
5618               <span class="entry_type_hwlevel">[legacy] </span>
5619
5620
5621
5622                 <ul class="entry_type_enum">
5623                   <li>
5624                     <span class="entry_type_enum_name">FALSE</span>
5625                   </li>
5626                   <li>
5627                     <span class="entry_type_enum_name">TRUE</span>
5628                   </li>
5629                 </ul>
5630
5631             </td> <!-- entry_type -->
5632
5633             <td class="entry_description">
5634               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5635             </td>
5636
5637             <td class="entry_units">
5638             </td>
5639
5640             <td class="entry_range">
5641             </td>
5642
5643             <td class="entry_hal_version">
5644               <p>3.<wbr/>2</p>
5645             </td>
5646
5647             <td class="entry_tags">
5648               <ul class="entry_tags">
5649                   <li><a href="#tag_BC">BC</a></li>
5650               </ul>
5651             </td>
5652
5653           </tr>
5654           <tr class="entries_header">
5655             <th class="th_details" colspan="6">Details</th>
5656           </tr>
5657           <tr class="entry_cont">
5658             <td class="entry_details" colspan="6">
5659               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5660 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5661             </td>
5662           </tr>
5663
5664
5665           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5666            <!-- end of entry -->
5667         
5668                 
5669           <tr class="entry" id="static_android.control.awbLockAvailable">
5670             <td class="entry_name
5671              " rowspan="3">
5672               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5673             </td>
5674             <td class="entry_type">
5675                 <span class="entry_type_name entry_type_name_enum">byte</span>
5676
5677               <span class="entry_type_visibility"> [public as boolean]</span>
5678
5679
5680               <span class="entry_type_hwlevel">[legacy] </span>
5681
5682
5683
5684                 <ul class="entry_type_enum">
5685                   <li>
5686                     <span class="entry_type_enum_name">FALSE</span>
5687                   </li>
5688                   <li>
5689                     <span class="entry_type_enum_name">TRUE</span>
5690                   </li>
5691                 </ul>
5692
5693             </td> <!-- entry_type -->
5694
5695             <td class="entry_description">
5696               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5697             </td>
5698
5699             <td class="entry_units">
5700             </td>
5701
5702             <td class="entry_range">
5703             </td>
5704
5705             <td class="entry_hal_version">
5706               <p>3.<wbr/>2</p>
5707             </td>
5708
5709             <td class="entry_tags">
5710               <ul class="entry_tags">
5711                   <li><a href="#tag_BC">BC</a></li>
5712               </ul>
5713             </td>
5714
5715           </tr>
5716           <tr class="entries_header">
5717             <th class="th_details" colspan="6">Details</th>
5718           </tr>
5719           <tr class="entry_cont">
5720             <td class="entry_details" colspan="6">
5721               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5722 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5723             </td>
5724           </tr>
5725
5726
5727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5728            <!-- end of entry -->
5729         
5730                 
5731           <tr class="entry" id="static_android.control.availableModes">
5732             <td class="entry_name
5733              " rowspan="3">
5734               android.<wbr/>control.<wbr/>available<wbr/>Modes
5735             </td>
5736             <td class="entry_type">
5737                 <span class="entry_type_name">byte</span>
5738                 <span class="entry_type_container">x</span>
5739
5740                 <span class="entry_type_array">
5741                   n
5742                 </span>
5743               <span class="entry_type_visibility"> [public as enumList]</span>
5744
5745
5746               <span class="entry_type_hwlevel">[legacy] </span>
5747
5748
5749                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5750
5751
5752             </td> <!-- entry_type -->
5753
5754             <td class="entry_description">
5755               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5756 device.<wbr/></p>
5757             </td>
5758
5759             <td class="entry_units">
5760             </td>
5761
5762             <td class="entry_range">
5763               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5764             </td>
5765
5766             <td class="entry_hal_version">
5767               <p>3.<wbr/>2</p>
5768             </td>
5769
5770             <td class="entry_tags">
5771             </td>
5772
5773           </tr>
5774           <tr class="entries_header">
5775             <th class="th_details" colspan="6">Details</th>
5776           </tr>
5777           <tr class="entry_cont">
5778             <td class="entry_details" colspan="6">
5779               <p>This list contains control modes that can be set for the camera device.<wbr/>
5780 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5781 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5782             </td>
5783           </tr>
5784
5785
5786           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5787            <!-- end of entry -->
5788         
5789                 
5790           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5791             <td class="entry_name
5792              " rowspan="5">
5793               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5794             </td>
5795             <td class="entry_type">
5796                 <span class="entry_type_name">int32</span>
5797                 <span class="entry_type_container">x</span>
5798
5799                 <span class="entry_type_array">
5800                   2
5801                 </span>
5802               <span class="entry_type_visibility"> [public as rangeInt]</span>
5803
5804
5805
5806
5807                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5808
5809
5810             </td> <!-- entry_type -->
5811
5812             <td class="entry_description">
5813               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5814 by this camera device.<wbr/></p>
5815             </td>
5816
5817             <td class="entry_units">
5818               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5819             </td>
5820
5821             <td class="entry_range">
5822             </td>
5823
5824             <td class="entry_hal_version">
5825               <p>3.<wbr/>2</p>
5826             </td>
5827
5828             <td class="entry_tags">
5829             </td>
5830
5831           </tr>
5832           <tr class="entries_header">
5833             <th class="th_details" colspan="6">Details</th>
5834           </tr>
5835           <tr class="entry_cont">
5836             <td class="entry_details" colspan="6">
5837               <p>Devices support post RAW sensitivity boost  will advertise
5838 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5839 post RAW sensitivity boost.<wbr/></p>
5840 <p>This key will be <code>null</code> for devices that do not support any RAW format
5841 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5842 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5843 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5844             </td>
5845           </tr>
5846
5847           <tr class="entries_header">
5848             <th class="th_details" colspan="6">HAL Implementation Details</th>
5849           </tr>
5850           <tr class="entry_cont">
5851             <td class="entry_details" colspan="6">
5852               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5853 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5854 formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5855 any of RAW output formats.<wbr/></p>
5856             </td>
5857           </tr>
5858
5859           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5860            <!-- end of entry -->
5861         
5862         
5863
5864       <!-- end of kind -->
5865       </tbody>
5866       <tr><td colspan="7" class="kind">dynamic</td></tr>
5867
5868       <thead class="entries_header">
5869         <tr>
5870           <th class="th_name">Property Name</th>
5871           <th class="th_type">Type</th>
5872           <th class="th_description">Description</th>
5873           <th class="th_units">Units</th>
5874           <th class="th_range">Range</th>
5875           <th class="th_hal_version">Initial HIDL HAL version</th>
5876           <th class="th_tags">Tags</th>
5877         </tr>
5878       </thead>
5879
5880       <tbody>
5881
5882         
5883
5884         
5885
5886         
5887
5888         
5889
5890                 
5891           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5892             <td class="entry_name
5893                 entry_name_deprecated
5894              " rowspan="3">
5895               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5896             </td>
5897             <td class="entry_type">
5898                 <span class="entry_type_name">int32</span>
5899
5900               <span class="entry_type_visibility"> [system]</span>
5901
5902
5903
5904               <span class="entry_type_deprecated">[deprecated] </span>
5905
5906
5907
5908             </td> <!-- entry_type -->
5909
5910             <td class="entry_description">
5911               <p>The ID sent with the latest
5912 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5913             </td>
5914
5915             <td class="entry_units">
5916             </td>
5917
5918             <td class="entry_range">
5919               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5920             </td>
5921
5922             <td class="entry_hal_version">
5923               <p>3.<wbr/>2</p>
5924             </td>
5925
5926             <td class="entry_tags">
5927             </td>
5928
5929           </tr>
5930           <tr class="entries_header">
5931             <th class="th_details" colspan="6">Details</th>
5932           </tr>
5933           <tr class="entry_cont">
5934             <td class="entry_details" colspan="6">
5935               <p>Must be 0 if no
5936 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5937 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5938 trigger</p>
5939             </td>
5940           </tr>
5941
5942
5943           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5944            <!-- end of entry -->
5945         
5946                 
5947           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5948             <td class="entry_name
5949              " rowspan="5">
5950               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5951             </td>
5952             <td class="entry_type">
5953                 <span class="entry_type_name entry_type_name_enum">byte</span>
5954
5955               <span class="entry_type_visibility"> [public]</span>
5956
5957
5958               <span class="entry_type_hwlevel">[legacy] </span>
5959
5960
5961
5962                 <ul class="entry_type_enum">
5963                   <li>
5964                     <span class="entry_type_enum_name">OFF</span>
5965                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5966 avoid banding problems.<wbr/></p></span>
5967                   </li>
5968                   <li>
5969                     <span class="entry_type_enum_name">50HZ</span>
5970                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5971 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5972                   </li>
5973                   <li>
5974                     <span class="entry_type_enum_name">60HZ</span>
5975                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5976 avoid banding problems with 60Hz illumination
5977 sources.<wbr/></p></span>
5978                   </li>
5979                   <li>
5980                     <span class="entry_type_enum_name">AUTO</span>
5981                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5982 antibanding routine to the current illumination
5983 condition.<wbr/> This is the default mode if AUTO is
5984 available on given camera device.<wbr/></p></span>
5985                   </li>
5986                 </ul>
5987
5988             </td> <!-- entry_type -->
5989
5990             <td class="entry_description">
5991               <p>The desired setting for the camera device's auto-exposure
5992 algorithm's antibanding compensation.<wbr/></p>
5993             </td>
5994
5995             <td class="entry_units">
5996             </td>
5997
5998             <td class="entry_range">
5999               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6000             </td>
6001
6002             <td class="entry_hal_version">
6003               <p>3.<wbr/>2</p>
6004             </td>
6005
6006             <td class="entry_tags">
6007               <ul class="entry_tags">
6008                   <li><a href="#tag_BC">BC</a></li>
6009               </ul>
6010             </td>
6011
6012           </tr>
6013           <tr class="entries_header">
6014             <th class="th_details" colspan="6">Details</th>
6015           </tr>
6016           <tr class="entry_cont">
6017             <td class="entry_details" colspan="6">
6018               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6019 lights,<wbr/> flicker at the rate of the power supply frequency
6020 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6021 typically not noticeable to a person,<wbr/> it can be visible to
6022 a camera device.<wbr/> If a camera sets its exposure time to the
6023 wrong value,<wbr/> the flicker may become visible in the
6024 viewfinder as flicker or in a final captured image,<wbr/> as a
6025 set of variable-brightness bands across the image.<wbr/></p>
6026 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6027 include antibanding routines that ensure that the chosen
6028 exposure value will not cause such banding.<wbr/> The choice of
6029 exposure time depends on the rate of flicker,<wbr/> which the
6030 camera device can detect automatically,<wbr/> or the expected
6031 rate can be selected by the application using this
6032 control.<wbr/></p>
6033 <p>A given camera device may not support all of the possible
6034 options for the antibanding mode.<wbr/> The
6035 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6036 the available modes for a given camera device.<wbr/></p>
6037 <p>AUTO mode is the default if it is available on given
6038 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6039 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6040 and 60HZ will be available.<wbr/></p>
6041 <p>If manual exposure control is enabled (by setting
6042 <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/>
6043 then this setting has no effect,<wbr/> and the application must
6044 ensure it selects exposure times that do not cause banding
6045 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6046 the application in this.<wbr/></p>
6047             </td>
6048           </tr>
6049
6050           <tr class="entries_header">
6051             <th class="th_details" colspan="6">HAL Implementation Details</th>
6052           </tr>
6053           <tr class="entry_cont">
6054             <td class="entry_details" colspan="6">
6055               <p>For all capture request templates,<wbr/> this field must be set
6056 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6057 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6058 60HZ must be available.<wbr/></p>
6059 <p>If manual exposure control is enabled (by setting
6060 <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/>
6061 then the exposure values provided by the application must not be
6062 adjusted for antibanding.<wbr/></p>
6063             </td>
6064           </tr>
6065
6066           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6067            <!-- end of entry -->
6068         
6069                 
6070           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6071             <td class="entry_name
6072              " rowspan="3">
6073               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6074             </td>
6075             <td class="entry_type">
6076                 <span class="entry_type_name">int32</span>
6077
6078               <span class="entry_type_visibility"> [public]</span>
6079
6080
6081               <span class="entry_type_hwlevel">[legacy] </span>
6082
6083
6084
6085
6086             </td> <!-- entry_type -->
6087
6088             <td class="entry_description">
6089               <p>Adjustment to auto-exposure (AE) target image
6090 brightness.<wbr/></p>
6091             </td>
6092
6093             <td class="entry_units">
6094               Compensation steps
6095             </td>
6096
6097             <td class="entry_range">
6098               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6099             </td>
6100
6101             <td class="entry_hal_version">
6102               <p>3.<wbr/>2</p>
6103             </td>
6104
6105             <td class="entry_tags">
6106               <ul class="entry_tags">
6107                   <li><a href="#tag_BC">BC</a></li>
6108               </ul>
6109             </td>
6110
6111           </tr>
6112           <tr class="entries_header">
6113             <th class="th_details" colspan="6">Details</th>
6114           </tr>
6115           <tr class="entry_cont">
6116             <td class="entry_details" colspan="6">
6117               <p>The adjustment is measured as a count of steps,<wbr/> with the
6118 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6119 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6120 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6121 will mean an exposure compensation of +2 EV; -3 will mean an
6122 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6123 of image brightness.<wbr/> Note that this control will only be
6124 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6125 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6126 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6127 may take several frames to reach the newly requested exposure target.<wbr/>
6128 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6129 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
6130 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6131 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6132             </td>
6133           </tr>
6134
6135
6136           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6137            <!-- end of entry -->
6138         
6139                 
6140           <tr class="entry" id="dynamic_android.control.aeLock">
6141             <td class="entry_name
6142              " rowspan="3">
6143               android.<wbr/>control.<wbr/>ae<wbr/>Lock
6144             </td>
6145             <td class="entry_type">
6146                 <span class="entry_type_name entry_type_name_enum">byte</span>
6147
6148               <span class="entry_type_visibility"> [public as boolean]</span>
6149
6150
6151               <span class="entry_type_hwlevel">[legacy] </span>
6152
6153
6154
6155                 <ul class="entry_type_enum">
6156                   <li>
6157                     <span class="entry_type_enum_name">OFF</span>
6158                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6159 is free to update its parameters.<wbr/></p></span>
6160                   </li>
6161                   <li>
6162                     <span class="entry_type_enum_name">ON</span>
6163                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6164 must not update the exposure and sensitivity parameters
6165 while the lock is active.<wbr/></p>
6166 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6167 will still take effect while auto-exposure is locked.<wbr/></p>
6168 <p>Some rare LEGACY devices may not support
6169 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6170                   </li>
6171                 </ul>
6172
6173             </td> <!-- entry_type -->
6174
6175             <td class="entry_description">
6176               <p>Whether auto-exposure (AE) is currently locked to its latest
6177 calculated values.<wbr/></p>
6178             </td>
6179
6180             <td class="entry_units">
6181             </td>
6182
6183             <td class="entry_range">
6184             </td>
6185
6186             <td class="entry_hal_version">
6187               <p>3.<wbr/>2</p>
6188             </td>
6189
6190             <td class="entry_tags">
6191               <ul class="entry_tags">
6192                   <li><a href="#tag_BC">BC</a></li>
6193               </ul>
6194             </td>
6195
6196           </tr>
6197           <tr class="entries_header">
6198             <th class="th_details" colspan="6">Details</th>
6199           </tr>
6200           <tr class="entry_cont">
6201             <td class="entry_details" colspan="6">
6202               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6203 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6204 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6205 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6206 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6207 <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
6208 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6209 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6210 when AE is already locked,<wbr/> the camera device will not change the exposure time
6211 (<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>)
6212 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6213 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6214 <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/>
6215 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6216 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6217 the AE if AE is locked by the camera device internally during precapture metering
6218 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6219 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6220 will never succeed in a sequence of preview requests where AE lock is always set
6221 to <code>false</code>.<wbr/></p>
6222 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6223 get locked do not necessarily correspond to the settings that were present in the
6224 latest capture result received from the camera device,<wbr/> since additional captures
6225 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6226 application is switching between automatic and manual control and wishes to eliminate
6227 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6228 <ol>
6229 <li>Starting in auto-AE mode:</li>
6230 <li>Lock AE</li>
6231 <li>Wait for the first result to be output that has the AE locked</li>
6232 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6233 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6234 </ol>
6235 <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>
6236             </td>
6237           </tr>
6238
6239
6240           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6241            <!-- end of entry -->
6242         
6243                 
6244           <tr class="entry" id="dynamic_android.control.aeMode">
6245             <td class="entry_name
6246              " rowspan="3">
6247               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6248             </td>
6249             <td class="entry_type">
6250                 <span class="entry_type_name entry_type_name_enum">byte</span>
6251
6252               <span class="entry_type_visibility"> [public]</span>
6253
6254
6255               <span class="entry_type_hwlevel">[legacy] </span>
6256
6257
6258
6259                 <ul class="entry_type_enum">
6260                   <li>
6261                     <span class="entry_type_enum_name">OFF</span>
6262                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6263 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6264 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6265 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6266 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6267 a flash unit for this camera device.<wbr/></p>
6268 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6269 behavior is device dependent when AE is in OFF mode.<wbr/>
6270 To have consistent behavior across different devices,<wbr/>
6271 it is recommended to either set AWB and AF to OFF mode
6272 or lock AWB and AF before setting AE to OFF.<wbr/>
6273 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/>
6274 <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>
6275 for more details.<wbr/></p>
6276 <p>LEGACY devices do not support the OFF mode and will
6277 override attempts to use this value to ON.<wbr/></p></span>
6278                   </li>
6279                   <li>
6280                     <span class="entry_type_enum_name">ON</span>
6281                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6282 with no flash control.<wbr/></p>
6283 <p>The application's values for
6284 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6285 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6286 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6287 application has control over the various
6288 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6289                   </li>
6290                   <li>
6291                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
6292                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6293 the camera's flash unit,<wbr/> firing it in low-light
6294 conditions.<wbr/></p>
6295 <p>The flash may be fired during a precapture sequence
6296 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6297 may be fired for captures for which the
6298 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6299 STILL_<wbr/>CAPTURE</p></span>
6300                   </li>
6301                   <li>
6302                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
6303                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6304 the camera's flash unit,<wbr/> always firing it for still
6305 captures.<wbr/></p>
6306 <p>The flash may be fired during a precapture sequence
6307 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6308 will always be fired for captures for which the
6309 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6310 STILL_<wbr/>CAPTURE</p></span>
6311                   </li>
6312                   <li>
6313                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6314                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6315 reduction.<wbr/></p>
6316 <p>If deemed necessary by the camera device,<wbr/> a red eye
6317 reduction flash will fire during the precapture
6318 sequence.<wbr/></p></span>
6319                   </li>
6320                 </ul>
6321
6322             </td> <!-- entry_type -->
6323
6324             <td class="entry_description">
6325               <p>The desired mode for the camera device's
6326 auto-exposure routine.<wbr/></p>
6327             </td>
6328
6329             <td class="entry_units">
6330             </td>
6331
6332             <td class="entry_range">
6333               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6334             </td>
6335
6336             <td class="entry_hal_version">
6337               <p>3.<wbr/>2</p>
6338             </td>
6339
6340             <td class="entry_tags">
6341               <ul class="entry_tags">
6342                   <li><a href="#tag_BC">BC</a></li>
6343               </ul>
6344             </td>
6345
6346           </tr>
6347           <tr class="entries_header">
6348             <th class="th_details" colspan="6">Details</th>
6349           </tr>
6350           <tr class="entry_cont">
6351             <td class="entry_details" colspan="6">
6352               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6353 AUTO.<wbr/></p>
6354 <p>When set to any of the ON modes,<wbr/> the camera device's
6355 auto-exposure routine is enabled,<wbr/> overriding the
6356 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6357 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6358 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6359 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6360 is selected,<wbr/> the camera device's flash unit controls are
6361 also overridden.<wbr/></p>
6362 <p>The FLASH modes are only available if the camera device
6363 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>
6364 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6365 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6366 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6367 camera device auto-exposure routine for the overridden
6368 fields for a given capture will be available in its
6369 CaptureResult.<wbr/></p>
6370             </td>
6371           </tr>
6372
6373
6374           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6375            <!-- end of entry -->
6376         
6377                 
6378           <tr class="entry" id="dynamic_android.control.aeRegions">
6379             <td class="entry_name
6380              " rowspan="5">
6381               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6382             </td>
6383             <td class="entry_type">
6384                 <span class="entry_type_name">int32</span>
6385                 <span class="entry_type_container">x</span>
6386
6387                 <span class="entry_type_array">
6388                   5 x area_count
6389                 </span>
6390               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6391
6392
6393
6394
6395
6396
6397             </td> <!-- entry_type -->
6398
6399             <td class="entry_description">
6400               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6401             </td>
6402
6403             <td class="entry_units">
6404               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6405             </td>
6406
6407             <td class="entry_range">
6408               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6409 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6410             </td>
6411
6412             <td class="entry_hal_version">
6413               <p>3.<wbr/>2</p>
6414             </td>
6415
6416             <td class="entry_tags">
6417               <ul class="entry_tags">
6418                   <li><a href="#tag_BC">BC</a></li>
6419               </ul>
6420             </td>
6421
6422           </tr>
6423           <tr class="entries_header">
6424             <th class="th_details" colspan="6">Details</th>
6425           </tr>
6426           <tr class="entry_cont">
6427             <td class="entry_details" colspan="6">
6428               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6429 Otherwise will always be present.<wbr/></p>
6430 <p>The maximum number of regions supported by the device is determined by the value
6431 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6432 <p>The coordinate system is based on the active pixel array,<wbr/>
6433 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6434 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6435 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6436 bottom-right pixel in the active pixel array.<wbr/></p>
6437 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6438 for every pixel in the area.<wbr/> This means that a large metering area
6439 with the same weight as a smaller area will have more effect in
6440 the metering result.<wbr/> Metering areas can partially overlap and the
6441 camera device will add the weights in the overlap region.<wbr/></p>
6442 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6443 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6444 weight is ignored.<wbr/></p>
6445 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6446 camera device.<wbr/></p>
6447 <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
6448 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6449 region and output only the intersection rectangle as the metering region in the result
6450 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6451 not reported in the result metadata.<wbr/></p>
6452             </td>
6453           </tr>
6454
6455           <tr class="entries_header">
6456             <th class="th_details" colspan="6">HAL Implementation Details</th>
6457           </tr>
6458           <tr class="entry_cont">
6459             <td class="entry_details" colspan="6">
6460               <p>The HAL level representation of MeteringRectangle[] is a
6461 int[5 * area_<wbr/>count].<wbr/>
6462 Every five elements represent a metering region of
6463 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6464 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6465 exclusive on xmax and ymax.<wbr/></p>
6466             </td>
6467           </tr>
6468
6469           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6470            <!-- end of entry -->
6471         
6472                 
6473           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6474             <td class="entry_name
6475              " rowspan="3">
6476               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6477             </td>
6478             <td class="entry_type">
6479                 <span class="entry_type_name">int32</span>
6480                 <span class="entry_type_container">x</span>
6481
6482                 <span class="entry_type_array">
6483                   2
6484                 </span>
6485               <span class="entry_type_visibility"> [public as rangeInt]</span>
6486
6487
6488               <span class="entry_type_hwlevel">[legacy] </span>
6489
6490
6491
6492
6493             </td> <!-- entry_type -->
6494
6495             <td class="entry_description">
6496               <p>Range over which the auto-exposure routine can
6497 adjust the capture frame rate to maintain good
6498 exposure.<wbr/></p>
6499             </td>
6500
6501             <td class="entry_units">
6502               Frames per second (FPS)
6503             </td>
6504
6505             <td class="entry_range">
6506               <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>
6507             </td>
6508
6509             <td class="entry_hal_version">
6510               <p>3.<wbr/>2</p>
6511             </td>
6512
6513             <td class="entry_tags">
6514               <ul class="entry_tags">
6515                   <li><a href="#tag_BC">BC</a></li>
6516               </ul>
6517             </td>
6518
6519           </tr>
6520           <tr class="entries_header">
6521             <th class="th_details" colspan="6">Details</th>
6522           </tr>
6523           <tr class="entry_cont">
6524             <td class="entry_details" colspan="6">
6525               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6526 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6527 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6528             </td>
6529           </tr>
6530
6531
6532           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6533            <!-- end of entry -->
6534         
6535                 
6536           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6537             <td class="entry_name
6538              " rowspan="5">
6539               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6540             </td>
6541             <td class="entry_type">
6542                 <span class="entry_type_name entry_type_name_enum">byte</span>
6543
6544               <span class="entry_type_visibility"> [public]</span>
6545
6546
6547               <span class="entry_type_hwlevel">[limited] </span>
6548
6549
6550
6551                 <ul class="entry_type_enum">
6552                   <li>
6553                     <span class="entry_type_enum_name">IDLE</span>
6554                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6555                   </li>
6556                   <li>
6557                     <span class="entry_type_enum_name">START</span>
6558                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6559 by the camera device.<wbr/></p>
6560 <p>The exact effect of the precapture trigger depends on
6561 the current AE mode and state.<wbr/></p></span>
6562                   </li>
6563                   <li>
6564                     <span class="entry_type_enum_name">CANCEL</span>
6565                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6566 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6567 initial state.<wbr/></p></span>
6568                   </li>
6569                 </ul>
6570
6571             </td> <!-- entry_type -->
6572
6573             <td class="entry_description">
6574               <p>Whether the camera device will trigger a precapture
6575 metering sequence when it processes this request.<wbr/></p>
6576             </td>
6577
6578             <td class="entry_units">
6579             </td>
6580
6581             <td class="entry_range">
6582             </td>
6583
6584             <td class="entry_hal_version">
6585               <p>3.<wbr/>2</p>
6586             </td>
6587
6588             <td class="entry_tags">
6589               <ul class="entry_tags">
6590                   <li><a href="#tag_BC">BC</a></li>
6591               </ul>
6592             </td>
6593
6594           </tr>
6595           <tr class="entries_header">
6596             <th class="th_details" colspan="6">Details</th>
6597           </tr>
6598           <tr class="entry_cont">
6599             <td class="entry_details" colspan="6">
6600               <p>This entry is normally set to IDLE,<wbr/> or is not
6601 included at all in the request settings.<wbr/> When included and
6602 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6603 precapture metering sequence.<wbr/></p>
6604 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6605 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6606 If a precapture metering sequence is already completed,<wbr/> and the camera
6607 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6608 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6609 <p>The precapture sequence should be triggered before starting a
6610 high-quality still capture for final metering decisions to
6611 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6612 scene brightness and required final capture flash power,<wbr/> when
6613 the flash is enabled.<wbr/></p>
6614 <p>Normally,<wbr/> this entry should be set to START for only a
6615 single request,<wbr/> and the application should wait until the
6616 sequence completes before starting a new one.<wbr/></p>
6617 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6618 may lock the auto-exposure routine internally to be able to accurately expose the
6619 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6620 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6621 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6622 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
6623 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
6624 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6625 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6626 internally locked AE if the application doesn't submit a still capture request after
6627 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6628 be used in devices that have earlier API levels.<wbr/></p>
6629 <p>The exact effect of auto-exposure (AE) precapture trigger
6630 depends on the current AE mode and state; see
6631 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6632 details.<wbr/></p>
6633 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6634 capturing a high-resolution JPEG image will automatically trigger a
6635 precapture sequence before the high-resolution capture,<wbr/> including
6636 potentially firing a pre-capture flash.<wbr/></p>
6637 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6638 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6639 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6640 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6641 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6642 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
6643 example.<wbr/></p>
6644 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6645 the camera device will complete them in the optimal order for that device.<wbr/></p>
6646             </td>
6647           </tr>
6648
6649           <tr class="entries_header">
6650             <th class="th_details" colspan="6">HAL Implementation Details</th>
6651           </tr>
6652           <tr class="entry_cont">
6653             <td class="entry_details" colspan="6">
6654               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6655 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6656 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6657 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6658 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6659             </td>
6660           </tr>
6661
6662           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6663            <!-- end of entry -->
6664         
6665                 
6666           <tr class="entry" id="dynamic_android.control.aeState">
6667             <td class="entry_name
6668              " rowspan="3">
6669               android.<wbr/>control.<wbr/>ae<wbr/>State
6670             </td>
6671             <td class="entry_type">
6672                 <span class="entry_type_name entry_type_name_enum">byte</span>
6673
6674               <span class="entry_type_visibility"> [public]</span>
6675
6676
6677               <span class="entry_type_hwlevel">[limited] </span>
6678
6679
6680
6681                 <ul class="entry_type_enum">
6682                   <li>
6683                     <span class="entry_type_enum_name">INACTIVE</span>
6684                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6685 <p>When a camera device is opened,<wbr/> it starts in
6686 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6687 this state in capture result.<wbr/></p></span>
6688                   </li>
6689                   <li>
6690                     <span class="entry_type_enum_name">SEARCHING</span>
6691                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6692 for the current scene.<wbr/></p>
6693 <p>This is a transient state,<wbr/> the camera device may skip
6694 reporting this state in capture result.<wbr/></p></span>
6695                   </li>
6696                   <li>
6697                     <span class="entry_type_enum_name">CONVERGED</span>
6698                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6699 current scene.<wbr/></p></span>
6700                   </li>
6701                   <li>
6702                     <span class="entry_type_enum_name">LOCKED</span>
6703                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6704                   </li>
6705                   <li>
6706                     <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6707                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6708 needs to be fired for good quality still
6709 capture.<wbr/></p></span>
6710                   </li>
6711                   <li>
6712                     <span class="entry_type_enum_name">PRECAPTURE</span>
6713                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6714 and is currently executing it.<wbr/></p>
6715 <p>Precapture can be triggered through setting
6716 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6717 active and completed (if it causes camera device internal AE lock) precapture
6718 metering sequence can be canceled through setting
6719 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6720 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6721 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6722 state,<wbr/> the camera device may skip reporting this state in
6723 capture result.<wbr/></p></span>
6724                   </li>
6725                 </ul>
6726
6727             </td> <!-- entry_type -->
6728
6729             <td class="entry_description">
6730               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6731             </td>
6732
6733             <td class="entry_units">
6734             </td>
6735
6736             <td class="entry_range">
6737             </td>
6738
6739             <td class="entry_hal_version">
6740               <p>3.<wbr/>2</p>
6741             </td>
6742
6743             <td class="entry_tags">
6744             </td>
6745
6746           </tr>
6747           <tr class="entries_header">
6748             <th class="th_details" colspan="6">Details</th>
6749           </tr>
6750           <tr class="entry_cont">
6751             <td class="entry_details" colspan="6">
6752               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6753 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6754 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
6755 the algorithm states to INACTIVE.<wbr/></p>
6756 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6757 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6758 seen in a result.<wbr/></p>
6759 <p>The state in the result is the state for this image (in sync with this image): if
6760 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6761 be good to use.<wbr/></p>
6762 <p>Below are state transition tables for different AE modes.<wbr/></p>
6763 <table>
6764 <thead>
6765 <tr>
6766 <th align="center">State</th>
6767 <th align="center">Transition Cause</th>
6768 <th align="center">New State</th>
6769 <th align="center">Notes</th>
6770 </tr>
6771 </thead>
6772 <tbody>
6773 <tr>
6774 <td align="center">INACTIVE</td>
6775 <td align="center"></td>
6776 <td align="center">INACTIVE</td>
6777 <td align="center">Camera device auto exposure algorithm is disabled</td>
6778 </tr>
6779 </tbody>
6780 </table>
6781 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6782 <table>
6783 <thead>
6784 <tr>
6785 <th align="center">State</th>
6786 <th align="center">Transition Cause</th>
6787 <th align="center">New State</th>
6788 <th align="center">Notes</th>
6789 </tr>
6790 </thead>
6791 <tbody>
6792 <tr>
6793 <td align="center">INACTIVE</td>
6794 <td align="center">Camera device initiates AE scan</td>
6795 <td align="center">SEARCHING</td>
6796 <td align="center">Values changing</td>
6797 </tr>
6798 <tr>
6799 <td align="center">INACTIVE</td>
6800 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6801 <td align="center">LOCKED</td>
6802 <td align="center">Values locked</td>
6803 </tr>
6804 <tr>
6805 <td align="center">SEARCHING</td>
6806 <td align="center">Camera device finishes AE scan</td>
6807 <td align="center">CONVERGED</td>
6808 <td align="center">Good values,<wbr/> not changing</td>
6809 </tr>
6810 <tr>
6811 <td align="center">SEARCHING</td>
6812 <td align="center">Camera device finishes AE scan</td>
6813 <td align="center">FLASH_<wbr/>REQUIRED</td>
6814 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6815 </tr>
6816 <tr>
6817 <td align="center">SEARCHING</td>
6818 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6819 <td align="center">LOCKED</td>
6820 <td align="center">Values locked</td>
6821 </tr>
6822 <tr>
6823 <td align="center">CONVERGED</td>
6824 <td align="center">Camera device initiates AE scan</td>
6825 <td align="center">SEARCHING</td>
6826 <td align="center">Values changing</td>
6827 </tr>
6828 <tr>
6829 <td align="center">CONVERGED</td>
6830 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6831 <td align="center">LOCKED</td>
6832 <td align="center">Values locked</td>
6833 </tr>
6834 <tr>
6835 <td align="center">FLASH_<wbr/>REQUIRED</td>
6836 <td align="center">Camera device initiates AE scan</td>
6837 <td align="center">SEARCHING</td>
6838 <td align="center">Values changing</td>
6839 </tr>
6840 <tr>
6841 <td align="center">FLASH_<wbr/>REQUIRED</td>
6842 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6843 <td align="center">LOCKED</td>
6844 <td align="center">Values locked</td>
6845 </tr>
6846 <tr>
6847 <td align="center">LOCKED</td>
6848 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6849 <td align="center">SEARCHING</td>
6850 <td align="center">Values not good after unlock</td>
6851 </tr>
6852 <tr>
6853 <td align="center">LOCKED</td>
6854 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6855 <td align="center">CONVERGED</td>
6856 <td align="center">Values good after unlock</td>
6857 </tr>
6858 <tr>
6859 <td align="center">LOCKED</td>
6860 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6861 <td align="center">FLASH_<wbr/>REQUIRED</td>
6862 <td align="center">Exposure good,<wbr/> but too dark</td>
6863 </tr>
6864 <tr>
6865 <td align="center">PRECAPTURE</td>
6866 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6867 <td align="center">CONVERGED</td>
6868 <td align="center">Ready for high-quality capture</td>
6869 </tr>
6870 <tr>
6871 <td align="center">PRECAPTURE</td>
6872 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6873 <td align="center">LOCKED</td>
6874 <td align="center">Ready for high-quality capture</td>
6875 </tr>
6876 <tr>
6877 <td align="center">LOCKED</td>
6878 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6879 <td align="center">LOCKED</td>
6880 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6881 </tr>
6882 <tr>
6883 <td align="center">LOCKED</td>
6884 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6885 <td align="center">LOCKED</td>
6886 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6887 </tr>
6888 <tr>
6889 <td align="center">Any state (excluding LOCKED)</td>
6890 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6891 <td align="center">PRECAPTURE</td>
6892 <td align="center">Start AE precapture metering sequence</td>
6893 </tr>
6894 <tr>
6895 <td align="center">Any state (excluding LOCKED)</td>
6896 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6897 <td align="center">INACTIVE</td>
6898 <td align="center">Currently active precapture metering sequence is canceled</td>
6899 </tr>
6900 </tbody>
6901 </table>
6902 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6903 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6904 can be skipped in that manner is called a transient state.<wbr/></p>
6905 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6906 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6907 transient states between two results.<wbr/> See below table for examples:</p>
6908 <table>
6909 <thead>
6910 <tr>
6911 <th align="center">State</th>
6912 <th align="center">Transition Cause</th>
6913 <th align="center">New State</th>
6914 <th align="center">Notes</th>
6915 </tr>
6916 </thead>
6917 <tbody>
6918 <tr>
6919 <td align="center">INACTIVE</td>
6920 <td align="center">Camera device finished AE scan</td>
6921 <td align="center">CONVERGED</td>
6922 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6923 </tr>
6924 <tr>
6925 <td align="center">Any state (excluding LOCKED)</td>
6926 <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>
6927 <td align="center">FLASH_<wbr/>REQUIRED</td>
6928 <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>
6929 </tr>
6930 <tr>
6931 <td align="center">Any state (excluding LOCKED)</td>
6932 <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>
6933 <td align="center">CONVERGED</td>
6934 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6935 </tr>
6936 <tr>
6937 <td align="center">Any state (excluding LOCKED)</td>
6938 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6939 <td align="center">FLASH_<wbr/>REQUIRED</td>
6940 <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>
6941 </tr>
6942 <tr>
6943 <td align="center">Any state (excluding LOCKED)</td>
6944 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6945 <td align="center">CONVERGED</td>
6946 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6947 </tr>
6948 <tr>
6949 <td align="center">CONVERGED</td>
6950 <td align="center">Camera device finished AE scan</td>
6951 <td align="center">FLASH_<wbr/>REQUIRED</td>
6952 <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>
6953 </tr>
6954 <tr>
6955 <td align="center">FLASH_<wbr/>REQUIRED</td>
6956 <td align="center">Camera device finished AE scan</td>
6957 <td align="center">CONVERGED</td>
6958 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6959 </tr>
6960 </tbody>
6961 </table>
6962             </td>
6963           </tr>
6964
6965
6966           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6967            <!-- end of entry -->
6968         
6969                 
6970           <tr class="entry" id="dynamic_android.control.afMode">
6971             <td class="entry_name
6972              " rowspan="5">
6973               android.<wbr/>control.<wbr/>af<wbr/>Mode
6974             </td>
6975             <td class="entry_type">
6976                 <span class="entry_type_name entry_type_name_enum">byte</span>
6977
6978               <span class="entry_type_visibility"> [public]</span>
6979
6980
6981               <span class="entry_type_hwlevel">[legacy] </span>
6982
6983
6984
6985                 <ul class="entry_type_enum">
6986                   <li>
6987                     <span class="entry_type_enum_name">OFF</span>
6988                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6989 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6990 application.<wbr/></p></span>
6991                   </li>
6992                   <li>
6993                     <span class="entry_type_enum_name">AUTO</span>
6994                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6995 <p>In this mode,<wbr/> the lens does not move unless
6996 the autofocus trigger action is called.<wbr/> When that trigger
6997 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6998 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6999 <p>Always supported if lens is not fixed focus.<wbr/></p>
7000 <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
7001 is fixed-focus.<wbr/></p>
7002 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7003 and sets the AF state to INACTIVE.<wbr/></p></span>
7004                   </li>
7005                   <li>
7006                     <span class="entry_type_enum_name">MACRO</span>
7007                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7008 <p>In this mode,<wbr/> the lens does not move unless the
7009 autofocus trigger action is called.<wbr/> When that trigger is
7010 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7011 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7012 mode is optimized for focusing on objects very close to
7013 the camera.<wbr/></p>
7014 <p>When that trigger is activated,<wbr/> AF will transition to
7015 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7016 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7017 position to default,<wbr/> and sets the AF state to
7018 INACTIVE.<wbr/></p></span>
7019                   </li>
7020                   <li>
7021                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
7022                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7023 position continually to attempt to provide a
7024 constantly-in-focus image stream.<wbr/></p>
7025 <p>The focusing behavior should be suitable for good quality
7026 video recording; typically this means slower focus
7027 movement and no overshoots.<wbr/> When the AF trigger is not
7028 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7029 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7030 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7031 the algorithm should immediately transition into
7032 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7033 lens position until a cancel AF trigger is received.<wbr/></p>
7034 <p>Once cancel is received,<wbr/> the algorithm should transition
7035 back to INACTIVE and resume passive scan.<wbr/> Note that this
7036 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7037 ongoing PASSIVE_<wbr/>SCAN must immediately be
7038 canceled.<wbr/></p></span>
7039                   </li>
7040                   <li>
7041                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
7042                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7043 position continually to attempt to provide a
7044 constantly-in-focus image stream.<wbr/></p>
7045 <p>The focusing behavior should be suitable for still image
7046 capture; typically this means focusing as fast as
7047 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7048 algorithm should start in INACTIVE state,<wbr/> and then
7049 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7050 appropriate as it attempts to maintain focus.<wbr/> When the AF
7051 trigger is activated,<wbr/> the algorithm should finish its
7052 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7053 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7054 lens position until a cancel AF trigger is received.<wbr/></p>
7055 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7056 should transition back to INACTIVE and then act as if it
7057 has just been started.<wbr/></p></span>
7058                   </li>
7059                   <li>
7060                     <span class="entry_type_enum_name">EDOF</span>
7061                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7062 <p>The camera device will produce images with an extended
7063 depth of field automatically; no special focusing
7064 operations need to be done before taking a picture.<wbr/></p>
7065 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7066 INACTIVE.<wbr/></p></span>
7067                   </li>
7068                 </ul>
7069
7070             </td> <!-- entry_type -->
7071
7072             <td class="entry_description">
7073               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7074 mode it is set to.<wbr/></p>
7075             </td>
7076
7077             <td class="entry_units">
7078             </td>
7079
7080             <td class="entry_range">
7081               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7082             </td>
7083
7084             <td class="entry_hal_version">
7085               <p>3.<wbr/>2</p>
7086             </td>
7087
7088             <td class="entry_tags">
7089               <ul class="entry_tags">
7090                   <li><a href="#tag_BC">BC</a></li>
7091               </ul>
7092             </td>
7093
7094           </tr>
7095           <tr class="entries_header">
7096             <th class="th_details" colspan="6">Details</th>
7097           </tr>
7098           <tr class="entry_cont">
7099             <td class="entry_details" colspan="6">
7100               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7101 (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
7102 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7103 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
7104 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>
7105 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7106 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7107 in result metadata.<wbr/></p>
7108             </td>
7109           </tr>
7110
7111           <tr class="entries_header">
7112             <th class="th_details" colspan="6">HAL Implementation Details</th>
7113           </tr>
7114           <tr class="entry_cont">
7115             <td class="entry_details" colspan="6">
7116               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7117 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
7118 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7119 <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
7120 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7121 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7122 the same focal plane remains in focus.<wbr/></p>
7123 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7124 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7125 (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
7126 same lock behavior as above.<wbr/></p>
7127 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7128 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/>
7129 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7130 manual control.<wbr/></p>
7131 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7132 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7133 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7134 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7135 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7136             </td>
7137           </tr>
7138
7139           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7140            <!-- end of entry -->
7141         
7142                 
7143           <tr class="entry" id="dynamic_android.control.afRegions">
7144             <td class="entry_name
7145              " rowspan="5">
7146               android.<wbr/>control.<wbr/>af<wbr/>Regions
7147             </td>
7148             <td class="entry_type">
7149                 <span class="entry_type_name">int32</span>
7150                 <span class="entry_type_container">x</span>
7151
7152                 <span class="entry_type_array">
7153                   5 x area_count
7154                 </span>
7155               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7156
7157
7158
7159
7160
7161
7162             </td> <!-- entry_type -->
7163
7164             <td class="entry_description">
7165               <p>List of metering areas to use for auto-focus.<wbr/></p>
7166             </td>
7167
7168             <td class="entry_units">
7169               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7170             </td>
7171
7172             <td class="entry_range">
7173               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7174 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7175             </td>
7176
7177             <td class="entry_hal_version">
7178               <p>3.<wbr/>2</p>
7179             </td>
7180
7181             <td class="entry_tags">
7182               <ul class="entry_tags">
7183                   <li><a href="#tag_BC">BC</a></li>
7184               </ul>
7185             </td>
7186
7187           </tr>
7188           <tr class="entries_header">
7189             <th class="th_details" colspan="6">Details</th>
7190           </tr>
7191           <tr class="entry_cont">
7192             <td class="entry_details" colspan="6">
7193               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7194 Otherwise will always be present.<wbr/></p>
7195 <p>The maximum number of focus areas supported by the device is determined by the value
7196 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7197 <p>The coordinate system is based on the active pixel array,<wbr/>
7198 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7199 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7200 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7201 bottom-right pixel in the active pixel array.<wbr/></p>
7202 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7203 for every pixel in the area.<wbr/> This means that a large metering area
7204 with the same weight as a smaller area will have more effect in
7205 the metering result.<wbr/> Metering areas can partially overlap and the
7206 camera device will add the weights in the overlap region.<wbr/></p>
7207 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7208 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7209 ignored.<wbr/></p>
7210 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7211 camera device.<wbr/></p>
7212 <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
7213 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7214 region and output only the intersection rectangle as the metering region in the result
7215 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7216 not reported in the result metadata.<wbr/></p>
7217             </td>
7218           </tr>
7219
7220           <tr class="entries_header">
7221             <th class="th_details" colspan="6">HAL Implementation Details</th>
7222           </tr>
7223           <tr class="entry_cont">
7224             <td class="entry_details" colspan="6">
7225               <p>The HAL level representation of MeteringRectangle[] is a
7226 int[5 * area_<wbr/>count].<wbr/>
7227 Every five elements represent a metering region of
7228 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7229 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7230 exclusive on xmax and ymax.<wbr/></p>
7231             </td>
7232           </tr>
7233
7234           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7235            <!-- end of entry -->
7236         
7237                 
7238           <tr class="entry" id="dynamic_android.control.afTrigger">
7239             <td class="entry_name
7240              " rowspan="5">
7241               android.<wbr/>control.<wbr/>af<wbr/>Trigger
7242             </td>
7243             <td class="entry_type">
7244                 <span class="entry_type_name entry_type_name_enum">byte</span>
7245
7246               <span class="entry_type_visibility"> [public]</span>
7247
7248
7249               <span class="entry_type_hwlevel">[legacy] </span>
7250
7251
7252
7253                 <ul class="entry_type_enum">
7254                   <li>
7255                     <span class="entry_type_enum_name">IDLE</span>
7256                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7257                   </li>
7258                   <li>
7259                     <span class="entry_type_enum_name">START</span>
7260                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7261                   </li>
7262                   <li>
7263                     <span class="entry_type_enum_name">CANCEL</span>
7264                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7265 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7266                   </li>
7267                 </ul>
7268
7269             </td> <!-- entry_type -->
7270
7271             <td class="entry_description">
7272               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7273             </td>
7274
7275             <td class="entry_units">
7276             </td>
7277
7278             <td class="entry_range">
7279             </td>
7280
7281             <td class="entry_hal_version">
7282               <p>3.<wbr/>2</p>
7283             </td>
7284
7285             <td class="entry_tags">
7286               <ul class="entry_tags">
7287                   <li><a href="#tag_BC">BC</a></li>
7288               </ul>
7289             </td>
7290
7291           </tr>
7292           <tr class="entries_header">
7293             <th class="th_details" colspan="6">Details</th>
7294           </tr>
7295           <tr class="entry_cont">
7296             <td class="entry_details" colspan="6">
7297               <p>This entry is normally set to IDLE,<wbr/> or is not
7298 included at all in the request settings.<wbr/></p>
7299 <p>When included and set to START,<wbr/> the camera device will trigger the
7300 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7301 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7302 and return to its initial AF state.<wbr/></p>
7303 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7304 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7305 START for multiple captures in a row means restarting the AF operation over
7306 and over again.<wbr/></p>
7307 <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>
7308 <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>
7309 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7310 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7311 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7312 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7313 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7314             </td>
7315           </tr>
7316
7317           <tr class="entries_header">
7318             <th class="th_details" colspan="6">HAL Implementation Details</th>
7319           </tr>
7320           <tr class="entry_cont">
7321             <td class="entry_details" colspan="6">
7322               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7323 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7324 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7325 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7326 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7327             </td>
7328           </tr>
7329
7330           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7331            <!-- end of entry -->
7332         
7333                 
7334           <tr class="entry" id="dynamic_android.control.afState">
7335             <td class="entry_name
7336              " rowspan="3">
7337               android.<wbr/>control.<wbr/>af<wbr/>State
7338             </td>
7339             <td class="entry_type">
7340                 <span class="entry_type_name entry_type_name_enum">byte</span>
7341
7342               <span class="entry_type_visibility"> [public]</span>
7343
7344
7345               <span class="entry_type_hwlevel">[legacy] </span>
7346
7347
7348
7349                 <ul class="entry_type_enum">
7350                   <li>
7351                     <span class="entry_type_enum_name">INACTIVE</span>
7352                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7353 to scan.<wbr/></p>
7354 <p>When a camera device is opened,<wbr/> it starts in this
7355 state.<wbr/> This is a transient state,<wbr/> the camera device may
7356 skip reporting this state in capture
7357 result.<wbr/></p></span>
7358                   </li>
7359                   <li>
7360                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7361                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7362 camera device in a continuous autofocus mode.<wbr/></p>
7363 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7364 state,<wbr/> the camera device may skip reporting this state in
7365 capture result.<wbr/></p></span>
7366                   </li>
7367                   <li>
7368                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7369                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7370 restart scanning at any time.<wbr/></p>
7371 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7372 state,<wbr/> the camera device may skip reporting this state in
7373 capture result.<wbr/></p></span>
7374                   </li>
7375                   <li>
7376                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7377                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7378 triggered by AF trigger.<wbr/></p>
7379 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7380 state,<wbr/> the camera device may skip reporting this state in
7381 capture result.<wbr/></p></span>
7382                   </li>
7383                   <li>
7384                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7385                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7386 focus.<wbr/></p>
7387 <p>This state is reached only after an explicit START AF trigger has been
7388 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7389 <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
7390 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>
7391                   </li>
7392                   <li>
7393                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7394                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7395 focus.<wbr/></p>
7396 <p>This state is reached only after an explicit START AF trigger has been
7397 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7398 <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
7399 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>
7400                   </li>
7401                   <li>
7402                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7403                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7404 and may restart scanning at any time.<wbr/></p>
7405 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7406 device may skip reporting this state in capture result.<wbr/></p>
7407 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7408 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7409                   </li>
7410                 </ul>
7411
7412             </td> <!-- entry_type -->
7413
7414             <td class="entry_description">
7415               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7416             </td>
7417
7418             <td class="entry_units">
7419             </td>
7420
7421             <td class="entry_range">
7422             </td>
7423
7424             <td class="entry_hal_version">
7425               <p>3.<wbr/>2</p>
7426             </td>
7427
7428             <td class="entry_tags">
7429             </td>
7430
7431           </tr>
7432           <tr class="entries_header">
7433             <th class="th_details" colspan="6">Details</th>
7434           </tr>
7435           <tr class="entry_cont">
7436             <td class="entry_details" colspan="6">
7437               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7438 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7439 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
7440 the algorithm states to INACTIVE.<wbr/></p>
7441 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7442 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7443 seen in a result.<wbr/></p>
7444 <p>The state in the result is the state for this image (in sync with this image): if
7445 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7446 be sharp.<wbr/></p>
7447 <p>Below are state transition tables for different AF modes.<wbr/></p>
7448 <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>
7449 <table>
7450 <thead>
7451 <tr>
7452 <th align="center">State</th>
7453 <th align="center">Transition Cause</th>
7454 <th align="center">New State</th>
7455 <th align="center">Notes</th>
7456 </tr>
7457 </thead>
7458 <tbody>
7459 <tr>
7460 <td align="center">INACTIVE</td>
7461 <td align="center"></td>
7462 <td align="center">INACTIVE</td>
7463 <td align="center">Never changes</td>
7464 </tr>
7465 </tbody>
7466 </table>
7467 <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>
7468 <table>
7469 <thead>
7470 <tr>
7471 <th align="center">State</th>
7472 <th align="center">Transition Cause</th>
7473 <th align="center">New State</th>
7474 <th align="center">Notes</th>
7475 </tr>
7476 </thead>
7477 <tbody>
7478 <tr>
7479 <td align="center">INACTIVE</td>
7480 <td align="center">AF_<wbr/>TRIGGER</td>
7481 <td align="center">ACTIVE_<wbr/>SCAN</td>
7482 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7483 </tr>
7484 <tr>
7485 <td align="center">ACTIVE_<wbr/>SCAN</td>
7486 <td align="center">AF sweep done</td>
7487 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7488 <td align="center">Focused,<wbr/> Lens now locked</td>
7489 </tr>
7490 <tr>
7491 <td align="center">ACTIVE_<wbr/>SCAN</td>
7492 <td align="center">AF sweep done</td>
7493 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7494 <td align="center">Not focused,<wbr/> Lens now locked</td>
7495 </tr>
7496 <tr>
7497 <td align="center">ACTIVE_<wbr/>SCAN</td>
7498 <td align="center">AF_<wbr/>CANCEL</td>
7499 <td align="center">INACTIVE</td>
7500 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7501 </tr>
7502 <tr>
7503 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7504 <td align="center">AF_<wbr/>CANCEL</td>
7505 <td align="center">INACTIVE</td>
7506 <td align="center">Cancel/<wbr/>reset AF</td>
7507 </tr>
7508 <tr>
7509 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7510 <td align="center">AF_<wbr/>TRIGGER</td>
7511 <td align="center">ACTIVE_<wbr/>SCAN</td>
7512 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7513 </tr>
7514 <tr>
7515 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7516 <td align="center">AF_<wbr/>CANCEL</td>
7517 <td align="center">INACTIVE</td>
7518 <td align="center">Cancel/<wbr/>reset AF</td>
7519 </tr>
7520 <tr>
7521 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7522 <td align="center">AF_<wbr/>TRIGGER</td>
7523 <td align="center">ACTIVE_<wbr/>SCAN</td>
7524 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7525 </tr>
7526 <tr>
7527 <td align="center">Any state</td>
7528 <td align="center">Mode change</td>
7529 <td align="center">INACTIVE</td>
7530 <td align="center"></td>
7531 </tr>
7532 </tbody>
7533 </table>
7534 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7535 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7536 can be skipped in that manner is called a transient state.<wbr/></p>
7537 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7538 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7539 one or more transient states between two results.<wbr/> See below table for examples:</p>
7540 <table>
7541 <thead>
7542 <tr>
7543 <th align="center">State</th>
7544 <th align="center">Transition Cause</th>
7545 <th align="center">New State</th>
7546 <th align="center">Notes</th>
7547 </tr>
7548 </thead>
7549 <tbody>
7550 <tr>
7551 <td align="center">INACTIVE</td>
7552 <td align="center">AF_<wbr/>TRIGGER</td>
7553 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7554 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7555 </tr>
7556 <tr>
7557 <td align="center">INACTIVE</td>
7558 <td align="center">AF_<wbr/>TRIGGER</td>
7559 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7561 </tr>
7562 <tr>
7563 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7564 <td align="center">AF_<wbr/>TRIGGER</td>
7565 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7567 </tr>
7568 <tr>
7569 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7570 <td align="center">AF_<wbr/>TRIGGER</td>
7571 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7572 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7573 </tr>
7574 </tbody>
7575 </table>
7576 <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>
7577 <table>
7578 <thead>
7579 <tr>
7580 <th align="center">State</th>
7581 <th align="center">Transition Cause</th>
7582 <th align="center">New State</th>
7583 <th align="center">Notes</th>
7584 </tr>
7585 </thead>
7586 <tbody>
7587 <tr>
7588 <td align="center">INACTIVE</td>
7589 <td align="center">Camera device initiates new scan</td>
7590 <td align="center">PASSIVE_<wbr/>SCAN</td>
7591 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7592 </tr>
7593 <tr>
7594 <td align="center">INACTIVE</td>
7595 <td align="center">AF_<wbr/>TRIGGER</td>
7596 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7597 <td align="center">AF state query,<wbr/> Lens now locked</td>
7598 </tr>
7599 <tr>
7600 <td align="center">PASSIVE_<wbr/>SCAN</td>
7601 <td align="center">Camera device completes current scan</td>
7602 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7603 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7604 </tr>
7605 <tr>
7606 <td align="center">PASSIVE_<wbr/>SCAN</td>
7607 <td align="center">Camera device fails current scan</td>
7608 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7609 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7610 </tr>
7611 <tr>
7612 <td align="center">PASSIVE_<wbr/>SCAN</td>
7613 <td align="center">AF_<wbr/>TRIGGER</td>
7614 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7615 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7616 </tr>
7617 <tr>
7618 <td align="center">PASSIVE_<wbr/>SCAN</td>
7619 <td align="center">AF_<wbr/>TRIGGER</td>
7620 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7621 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7622 </tr>
7623 <tr>
7624 <td align="center">PASSIVE_<wbr/>SCAN</td>
7625 <td align="center">AF_<wbr/>CANCEL</td>
7626 <td align="center">INACTIVE</td>
7627 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7628 </tr>
7629 <tr>
7630 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7631 <td align="center">Camera device initiates new scan</td>
7632 <td align="center">PASSIVE_<wbr/>SCAN</td>
7633 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7634 </tr>
7635 <tr>
7636 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7637 <td align="center">Camera device initiates new scan</td>
7638 <td align="center">PASSIVE_<wbr/>SCAN</td>
7639 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7640 </tr>
7641 <tr>
7642 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7643 <td align="center">AF_<wbr/>TRIGGER</td>
7644 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7645 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7646 </tr>
7647 <tr>
7648 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7649 <td align="center">AF_<wbr/>TRIGGER</td>
7650 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7651 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7652 </tr>
7653 <tr>
7654 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7655 <td align="center">AF_<wbr/>TRIGGER</td>
7656 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7657 <td align="center">No effect</td>
7658 </tr>
7659 <tr>
7660 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7661 <td align="center">AF_<wbr/>CANCEL</td>
7662 <td align="center">INACTIVE</td>
7663 <td align="center">Restart AF scan</td>
7664 </tr>
7665 <tr>
7666 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7667 <td align="center">AF_<wbr/>TRIGGER</td>
7668 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7669 <td align="center">No effect</td>
7670 </tr>
7671 <tr>
7672 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7673 <td align="center">AF_<wbr/>CANCEL</td>
7674 <td align="center">INACTIVE</td>
7675 <td align="center">Restart AF scan</td>
7676 </tr>
7677 </tbody>
7678 </table>
7679 <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>
7680 <table>
7681 <thead>
7682 <tr>
7683 <th align="center">State</th>
7684 <th align="center">Transition Cause</th>
7685 <th align="center">New State</th>
7686 <th align="center">Notes</th>
7687 </tr>
7688 </thead>
7689 <tbody>
7690 <tr>
7691 <td align="center">INACTIVE</td>
7692 <td align="center">Camera device initiates new scan</td>
7693 <td align="center">PASSIVE_<wbr/>SCAN</td>
7694 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7695 </tr>
7696 <tr>
7697 <td align="center">INACTIVE</td>
7698 <td align="center">AF_<wbr/>TRIGGER</td>
7699 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7700 <td align="center">AF state query,<wbr/> Lens now locked</td>
7701 </tr>
7702 <tr>
7703 <td align="center">PASSIVE_<wbr/>SCAN</td>
7704 <td align="center">Camera device completes current scan</td>
7705 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7706 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7707 </tr>
7708 <tr>
7709 <td align="center">PASSIVE_<wbr/>SCAN</td>
7710 <td align="center">Camera device fails current scan</td>
7711 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7712 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7713 </tr>
7714 <tr>
7715 <td align="center">PASSIVE_<wbr/>SCAN</td>
7716 <td align="center">AF_<wbr/>TRIGGER</td>
7717 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7718 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7719 </tr>
7720 <tr>
7721 <td align="center">PASSIVE_<wbr/>SCAN</td>
7722 <td align="center">AF_<wbr/>TRIGGER</td>
7723 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7724 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7725 </tr>
7726 <tr>
7727 <td align="center">PASSIVE_<wbr/>SCAN</td>
7728 <td align="center">AF_<wbr/>CANCEL</td>
7729 <td align="center">INACTIVE</td>
7730 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7731 </tr>
7732 <tr>
7733 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7734 <td align="center">Camera device initiates new scan</td>
7735 <td align="center">PASSIVE_<wbr/>SCAN</td>
7736 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7737 </tr>
7738 <tr>
7739 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7740 <td align="center">Camera device initiates new scan</td>
7741 <td align="center">PASSIVE_<wbr/>SCAN</td>
7742 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7743 </tr>
7744 <tr>
7745 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7746 <td align="center">AF_<wbr/>TRIGGER</td>
7747 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7748 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7749 </tr>
7750 <tr>
7751 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7752 <td align="center">AF_<wbr/>TRIGGER</td>
7753 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7754 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7755 </tr>
7756 <tr>
7757 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7758 <td align="center">AF_<wbr/>TRIGGER</td>
7759 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7760 <td align="center">No effect</td>
7761 </tr>
7762 <tr>
7763 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7764 <td align="center">AF_<wbr/>CANCEL</td>
7765 <td align="center">INACTIVE</td>
7766 <td align="center">Restart AF scan</td>
7767 </tr>
7768 <tr>
7769 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7770 <td align="center">AF_<wbr/>TRIGGER</td>
7771 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7772 <td align="center">No effect</td>
7773 </tr>
7774 <tr>
7775 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7776 <td align="center">AF_<wbr/>CANCEL</td>
7777 <td align="center">INACTIVE</td>
7778 <td align="center">Restart AF scan</td>
7779 </tr>
7780 </tbody>
7781 </table>
7782 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7783 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7784 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7785 will be evaluated in the context of the new mode in the request.<wbr/>
7786 See below table for examples:</p>
7787 <table>
7788 <thead>
7789 <tr>
7790 <th align="center">State</th>
7791 <th align="center">Transition Cause</th>
7792 <th align="center">New State</th>
7793 <th align="center">Notes</th>
7794 </tr>
7795 </thead>
7796 <tbody>
7797 <tr>
7798 <td align="center">any state</td>
7799 <td align="center">CAF--&gt;AUTO mode switch</td>
7800 <td align="center">INACTIVE</td>
7801 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7802 </tr>
7803 <tr>
7804 <td align="center">any state</td>
7805 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7806 <td align="center">trigger-reachable states from INACTIVE</td>
7807 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7808 </tr>
7809 <tr>
7810 <td align="center">any state</td>
7811 <td align="center">AUTO--&gt;CAF mode switch</td>
7812 <td align="center">passively reachable states from INACTIVE</td>
7813 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7814 </tr>
7815 </tbody>
7816 </table>
7817             </td>
7818           </tr>
7819
7820
7821           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7822            <!-- end of entry -->
7823         
7824                 
7825           <tr class="entry" id="dynamic_android.control.afTriggerId">
7826             <td class="entry_name
7827                 entry_name_deprecated
7828              " rowspan="3">
7829               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7830             </td>
7831             <td class="entry_type">
7832                 <span class="entry_type_name">int32</span>
7833
7834               <span class="entry_type_visibility"> [system]</span>
7835
7836
7837
7838               <span class="entry_type_deprecated">[deprecated] </span>
7839
7840
7841
7842             </td> <!-- entry_type -->
7843
7844             <td class="entry_description">
7845               <p>The ID sent with the latest
7846 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7847             </td>
7848
7849             <td class="entry_units">
7850             </td>
7851
7852             <td class="entry_range">
7853               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7854             </td>
7855
7856             <td class="entry_hal_version">
7857               <p>3.<wbr/>2</p>
7858             </td>
7859
7860             <td class="entry_tags">
7861             </td>
7862
7863           </tr>
7864           <tr class="entries_header">
7865             <th class="th_details" colspan="6">Details</th>
7866           </tr>
7867           <tr class="entry_cont">
7868             <td class="entry_details" colspan="6">
7869               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7870 received yet by HAL.<wbr/> Always updated even if AF algorithm
7871 ignores the trigger</p>
7872             </td>
7873           </tr>
7874
7875
7876           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7877            <!-- end of entry -->
7878         
7879                 
7880           <tr class="entry" id="dynamic_android.control.awbLock">
7881             <td class="entry_name
7882              " rowspan="3">
7883               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7884             </td>
7885             <td class="entry_type">
7886                 <span class="entry_type_name entry_type_name_enum">byte</span>
7887
7888               <span class="entry_type_visibility"> [public as boolean]</span>
7889
7890
7891               <span class="entry_type_hwlevel">[legacy] </span>
7892
7893
7894
7895                 <ul class="entry_type_enum">
7896                   <li>
7897                     <span class="entry_type_enum_name">OFF</span>
7898                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7899 algorithm is free to update its parameters if in AUTO
7900 mode.<wbr/></p></span>
7901                   </li>
7902                   <li>
7903                     <span class="entry_type_enum_name">ON</span>
7904                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7905 algorithm will not update its parameters while the lock
7906 is active.<wbr/></p></span>
7907                   </li>
7908                 </ul>
7909
7910             </td> <!-- entry_type -->
7911
7912             <td class="entry_description">
7913               <p>Whether auto-white balance (AWB) is currently locked to its
7914 latest calculated values.<wbr/></p>
7915             </td>
7916
7917             <td class="entry_units">
7918             </td>
7919
7920             <td class="entry_range">
7921             </td>
7922
7923             <td class="entry_hal_version">
7924               <p>3.<wbr/>2</p>
7925             </td>
7926
7927             <td class="entry_tags">
7928               <ul class="entry_tags">
7929                   <li><a href="#tag_BC">BC</a></li>
7930               </ul>
7931             </td>
7932
7933           </tr>
7934           <tr class="entries_header">
7935             <th class="th_details" colspan="6">Details</th>
7936           </tr>
7937           <tr class="entry_cont">
7938             <td class="entry_details" colspan="6">
7939               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7940 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7941 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7942 get locked do not necessarily correspond to the settings that were present in the
7943 latest capture result received from the camera device,<wbr/> since additional captures
7944 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7945 application is switching between automatic and manual control and wishes to eliminate
7946 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7947 <ol>
7948 <li>Starting in auto-AWB mode:</li>
7949 <li>Lock AWB</li>
7950 <li>Wait for the first result to be output that has the AWB locked</li>
7951 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7952 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7953 </ol>
7954 <p>Note that AWB lock is only meaningful when
7955 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7956 AWB is already fixed to a specific setting.<wbr/></p>
7957 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7958             </td>
7959           </tr>
7960
7961
7962           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7963            <!-- end of entry -->
7964         
7965                 
7966           <tr class="entry" id="dynamic_android.control.awbMode">
7967             <td class="entry_name
7968              " rowspan="3">
7969               android.<wbr/>control.<wbr/>awb<wbr/>Mode
7970             </td>
7971             <td class="entry_type">
7972                 <span class="entry_type_name entry_type_name_enum">byte</span>
7973
7974               <span class="entry_type_visibility"> [public]</span>
7975
7976
7977               <span class="entry_type_hwlevel">[legacy] </span>
7978
7979
7980
7981                 <ul class="entry_type_enum">
7982                   <li>
7983                     <span class="entry_type_enum_name">OFF</span>
7984                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7985 <p>The application-selected color transform matrix
7986 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7987 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7988 device for manual white balance control.<wbr/></p></span>
7989                   </li>
7990                   <li>
7991                     <span class="entry_type_enum_name">AUTO</span>
7992                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7993 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7994 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7995 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7996 values used by the camera device for the transform and gains
7997 will be available in the capture result for this request.<wbr/></p></span>
7998                   </li>
7999                   <li>
8000                     <span class="entry_type_enum_name">INCANDESCENT</span>
8001                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8002 the camera device uses incandescent light as the assumed scene
8003 illumination for white balance.<wbr/></p>
8004 <p>While the exact white balance transforms are up to the
8005 camera device,<wbr/> they will approximately match the CIE
8006 standard illuminant A.<wbr/></p>
8007 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8008 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8009 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8010 values used by the camera device for the transform and gains
8011 will be available in the capture result for this request.<wbr/></p></span>
8012                   </li>
8013                   <li>
8014                     <span class="entry_type_enum_name">FLUORESCENT</span>
8015                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8016 the camera device uses fluorescent light as the assumed scene
8017 illumination for white balance.<wbr/></p>
8018 <p>While the exact white balance transforms are up to the
8019 camera device,<wbr/> they will approximately match the CIE
8020 standard illuminant F2.<wbr/></p>
8021 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8022 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8023 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8024 values used by the camera device for the transform and gains
8025 will be available in the capture result for this request.<wbr/></p></span>
8026                   </li>
8027                   <li>
8028                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
8029                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8030 the camera device uses warm fluorescent light as the assumed scene
8031 illumination for white balance.<wbr/></p>
8032 <p>While the exact white balance transforms are up to the
8033 camera device,<wbr/> they will approximately match the CIE
8034 standard illuminant F4.<wbr/></p>
8035 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8036 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8037 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8038 values used by the camera device for the transform and gains
8039 will be available in the capture result for this request.<wbr/></p></span>
8040                   </li>
8041                   <li>
8042                     <span class="entry_type_enum_name">DAYLIGHT</span>
8043                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8044 the camera device uses daylight light as the assumed scene
8045 illumination for white balance.<wbr/></p>
8046 <p>While the exact white balance transforms are up to the
8047 camera device,<wbr/> they will approximately match the CIE
8048 standard illuminant D65.<wbr/></p>
8049 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8050 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8051 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8052 values used by the camera device for the transform and gains
8053 will be available in the capture result for this request.<wbr/></p></span>
8054                   </li>
8055                   <li>
8056                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
8057                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8058 the camera device uses cloudy daylight light as the assumed scene
8059 illumination for white balance.<wbr/></p>
8060 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8061 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8062 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8063 values used by the camera device for the transform and gains
8064 will be available in the capture result for this request.<wbr/></p></span>
8065                   </li>
8066                   <li>
8067                     <span class="entry_type_enum_name">TWILIGHT</span>
8068                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8069 the camera device uses twilight light as the assumed scene
8070 illumination for white balance.<wbr/></p>
8071 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8072 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8073 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8074 values used by the camera device for the transform and gains
8075 will be available in the capture result for this request.<wbr/></p></span>
8076                   </li>
8077                   <li>
8078                     <span class="entry_type_enum_name">SHADE</span>
8079                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8080 the camera device uses shade light as the assumed scene
8081 illumination for white balance.<wbr/></p>
8082 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8083 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8084 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8085 values used by the camera device for the transform and gains
8086 will be available in the capture result for this request.<wbr/></p></span>
8087                   </li>
8088                 </ul>
8089
8090             </td> <!-- entry_type -->
8091
8092             <td class="entry_description">
8093               <p>Whether auto-white balance (AWB) is currently setting the color
8094 transform fields,<wbr/> and what its illumination target
8095 is.<wbr/></p>
8096             </td>
8097
8098             <td class="entry_units">
8099             </td>
8100
8101             <td class="entry_range">
8102               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8103             </td>
8104
8105             <td class="entry_hal_version">
8106               <p>3.<wbr/>2</p>
8107             </td>
8108
8109             <td class="entry_tags">
8110               <ul class="entry_tags">
8111                   <li><a href="#tag_BC">BC</a></li>
8112               </ul>
8113             </td>
8114
8115           </tr>
8116           <tr class="entries_header">
8117             <th class="th_details" colspan="6">Details</th>
8118           </tr>
8119           <tr class="entry_cont">
8120             <td class="entry_details" colspan="6">
8121               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8122 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8123 routine is enabled,<wbr/> overriding the application's selected
8124 <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
8125 <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>
8126 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8127 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
8128 setting AE mode to OFF.<wbr/></p>
8129 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8130 routine is disabled.<wbr/> The application manually controls the white
8131 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>
8132 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8133 <p>When set to any other modes,<wbr/> the camera device's auto-white
8134 balance routine is disabled.<wbr/> The camera device uses each
8135 particular illumination target for white balance
8136 adjustment.<wbr/> The application's values for
8137 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8138 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8139 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8140             </td>
8141           </tr>
8142
8143
8144           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8145            <!-- end of entry -->
8146         
8147                 
8148           <tr class="entry" id="dynamic_android.control.awbRegions">
8149             <td class="entry_name
8150              " rowspan="5">
8151               android.<wbr/>control.<wbr/>awb<wbr/>Regions
8152             </td>
8153             <td class="entry_type">
8154                 <span class="entry_type_name">int32</span>
8155                 <span class="entry_type_container">x</span>
8156
8157                 <span class="entry_type_array">
8158                   5 x area_count
8159                 </span>
8160               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8161
8162
8163
8164
8165
8166
8167             </td> <!-- entry_type -->
8168
8169             <td class="entry_description">
8170               <p>List of metering areas to use for auto-white-balance illuminant
8171 estimation.<wbr/></p>
8172             </td>
8173
8174             <td class="entry_units">
8175               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8176             </td>
8177
8178             <td class="entry_range">
8179               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8180 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8181             </td>
8182
8183             <td class="entry_hal_version">
8184               <p>3.<wbr/>2</p>
8185             </td>
8186
8187             <td class="entry_tags">
8188               <ul class="entry_tags">
8189                   <li><a href="#tag_BC">BC</a></li>
8190               </ul>
8191             </td>
8192
8193           </tr>
8194           <tr class="entries_header">
8195             <th class="th_details" colspan="6">Details</th>
8196           </tr>
8197           <tr class="entry_cont">
8198             <td class="entry_details" colspan="6">
8199               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8200 Otherwise will always be present.<wbr/></p>
8201 <p>The maximum number of regions supported by the device is determined by the value
8202 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8203 <p>The coordinate system is based on the active pixel array,<wbr/>
8204 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8205 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8206 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8207 bottom-right pixel in the active pixel array.<wbr/></p>
8208 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8209 for every pixel in the area.<wbr/> This means that a large metering area
8210 with the same weight as a smaller area will have more effect in
8211 the metering result.<wbr/> Metering areas can partially overlap and the
8212 camera device will add the weights in the overlap region.<wbr/></p>
8213 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8214 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8215 0 weight is ignored.<wbr/></p>
8216 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8217 camera device.<wbr/></p>
8218 <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
8219 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8220 region and output only the intersection rectangle as the metering region in the result
8221 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8222 not reported in the result metadata.<wbr/></p>
8223             </td>
8224           </tr>
8225
8226           <tr class="entries_header">
8227             <th class="th_details" colspan="6">HAL Implementation Details</th>
8228           </tr>
8229           <tr class="entry_cont">
8230             <td class="entry_details" colspan="6">
8231               <p>The HAL level representation of MeteringRectangle[] is a
8232 int[5 * area_<wbr/>count].<wbr/>
8233 Every five elements represent a metering region of
8234 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8235 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8236 exclusive on xmax and ymax.<wbr/></p>
8237             </td>
8238           </tr>
8239
8240           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8241            <!-- end of entry -->
8242         
8243                 
8244           <tr class="entry" id="dynamic_android.control.captureIntent">
8245             <td class="entry_name
8246              " rowspan="3">
8247               android.<wbr/>control.<wbr/>capture<wbr/>Intent
8248             </td>
8249             <td class="entry_type">
8250                 <span class="entry_type_name entry_type_name_enum">byte</span>
8251
8252               <span class="entry_type_visibility"> [public]</span>
8253
8254
8255               <span class="entry_type_hwlevel">[legacy] </span>
8256
8257
8258
8259                 <ul class="entry_type_enum">
8260                   <li>
8261                     <span class="entry_type_enum_name">CUSTOM</span>
8262                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8263 categories.<wbr/> The camera device will default to preview-like
8264 behavior.<wbr/></p></span>
8265                   </li>
8266                   <li>
8267                     <span class="entry_type_enum_name">PREVIEW</span>
8268                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8269 <p>The precapture trigger may be used to start off a metering
8270 w/<wbr/>flash sequence.<wbr/></p></span>
8271                   </li>
8272                   <li>
8273                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
8274                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8275 use case.<wbr/></p>
8276 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8277                   </li>
8278                   <li>
8279                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
8280                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8281 use case.<wbr/></p></span>
8282                   </li>
8283                   <li>
8284                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
8285                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8286 image while recording video) use case.<wbr/></p>
8287 <p>The camera device should take the highest-quality image
8288 possible (given the other settings) without disrupting the
8289 frame rate of video recording.<wbr/>  </p></span>
8290                   </li>
8291                   <li>
8292                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8293                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8294 application will stream full-resolution images and
8295 reprocess one or several later for a final
8296 capture.<wbr/></p></span>
8297                   </li>
8298                   <li>
8299                     <span class="entry_type_enum_name">MANUAL</span>
8300                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8301 the applications want to directly control the capture parameters.<wbr/></p>
8302 <p>For example,<wbr/> the application may wish to manually control
8303 <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>
8304                   </li>
8305                 </ul>
8306
8307             </td> <!-- entry_type -->
8308
8309             <td class="entry_description">
8310               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8311 auto-focus,<wbr/> auto-white balance) routines about the purpose
8312 of this capture,<wbr/> to help the camera device to decide optimal 3A
8313 strategy.<wbr/></p>
8314             </td>
8315
8316             <td class="entry_units">
8317             </td>
8318
8319             <td class="entry_range">
8320             </td>
8321
8322             <td class="entry_hal_version">
8323               <p>3.<wbr/>2</p>
8324             </td>
8325
8326             <td class="entry_tags">
8327               <ul class="entry_tags">
8328                   <li><a href="#tag_BC">BC</a></li>
8329               </ul>
8330             </td>
8331
8332           </tr>
8333           <tr class="entries_header">
8334             <th class="th_details" colspan="6">Details</th>
8335           </tr>
8336           <tr class="entry_cont">
8337             <td class="entry_details" colspan="6">
8338               <p>This control (except for MANUAL) is only effective if
8339 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8340 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8341 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8342 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8343 always supported.<wbr/></p>
8344             </td>
8345           </tr>
8346
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.awbState">
8353             <td class="entry_name
8354              " rowspan="3">
8355               android.<wbr/>control.<wbr/>awb<wbr/>State
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">[limited] </span>
8364
8365
8366
8367                 <ul class="entry_type_enum">
8368                   <li>
8369                     <span class="entry_type_enum_name">INACTIVE</span>
8370                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8371 <p>When a camera device is opened,<wbr/> it starts in this
8372 state.<wbr/> This is a transient state,<wbr/> the camera device may
8373 skip reporting this state in capture
8374 result.<wbr/></p></span>
8375                   </li>
8376                   <li>
8377                     <span class="entry_type_enum_name">SEARCHING</span>
8378                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8379 values for the current scene.<wbr/></p>
8380 <p>This is a transient state,<wbr/> the camera device
8381 may skip reporting this state in capture result.<wbr/></p></span>
8382                   </li>
8383                   <li>
8384                     <span class="entry_type_enum_name">CONVERGED</span>
8385                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8386 current scene.<wbr/></p></span>
8387                   </li>
8388                   <li>
8389                     <span class="entry_type_enum_name">LOCKED</span>
8390                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8391                   </li>
8392                 </ul>
8393
8394             </td> <!-- entry_type -->
8395
8396             <td class="entry_description">
8397               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8398             </td>
8399
8400             <td class="entry_units">
8401             </td>
8402
8403             <td class="entry_range">
8404             </td>
8405
8406             <td class="entry_hal_version">
8407               <p>3.<wbr/>2</p>
8408             </td>
8409
8410             <td class="entry_tags">
8411             </td>
8412
8413           </tr>
8414           <tr class="entries_header">
8415             <th class="th_details" colspan="6">Details</th>
8416           </tr>
8417           <tr class="entry_cont">
8418             <td class="entry_details" colspan="6">
8419               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8420 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8421 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
8422 the algorithm states to INACTIVE.<wbr/></p>
8423 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8424 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8425 a result.<wbr/></p>
8426 <p>The state in the result is the state for this image (in sync with this image): if
8427 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8428 be good to use.<wbr/></p>
8429 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8430 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8431 <table>
8432 <thead>
8433 <tr>
8434 <th align="center">State</th>
8435 <th align="center">Transition Cause</th>
8436 <th align="center">New State</th>
8437 <th align="center">Notes</th>
8438 </tr>
8439 </thead>
8440 <tbody>
8441 <tr>
8442 <td align="center">INACTIVE</td>
8443 <td align="center"></td>
8444 <td align="center">INACTIVE</td>
8445 <td align="center">Camera device auto white balance algorithm is disabled</td>
8446 </tr>
8447 </tbody>
8448 </table>
8449 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8450 <table>
8451 <thead>
8452 <tr>
8453 <th align="center">State</th>
8454 <th align="center">Transition Cause</th>
8455 <th align="center">New State</th>
8456 <th align="center">Notes</th>
8457 </tr>
8458 </thead>
8459 <tbody>
8460 <tr>
8461 <td align="center">INACTIVE</td>
8462 <td align="center">Camera device initiates AWB scan</td>
8463 <td align="center">SEARCHING</td>
8464 <td align="center">Values changing</td>
8465 </tr>
8466 <tr>
8467 <td align="center">INACTIVE</td>
8468 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8469 <td align="center">LOCKED</td>
8470 <td align="center">Values locked</td>
8471 </tr>
8472 <tr>
8473 <td align="center">SEARCHING</td>
8474 <td align="center">Camera device finishes AWB scan</td>
8475 <td align="center">CONVERGED</td>
8476 <td align="center">Good values,<wbr/> not changing</td>
8477 </tr>
8478 <tr>
8479 <td align="center">SEARCHING</td>
8480 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8481 <td align="center">LOCKED</td>
8482 <td align="center">Values locked</td>
8483 </tr>
8484 <tr>
8485 <td align="center">CONVERGED</td>
8486 <td align="center">Camera device initiates AWB scan</td>
8487 <td align="center">SEARCHING</td>
8488 <td align="center">Values changing</td>
8489 </tr>
8490 <tr>
8491 <td align="center">CONVERGED</td>
8492 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8493 <td align="center">LOCKED</td>
8494 <td align="center">Values locked</td>
8495 </tr>
8496 <tr>
8497 <td align="center">LOCKED</td>
8498 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8499 <td align="center">SEARCHING</td>
8500 <td align="center">Values not good after unlock</td>
8501 </tr>
8502 </tbody>
8503 </table>
8504 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8505 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8506 can be skipped in that manner is called a transient state.<wbr/></p>
8507 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8508 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8509 transient states between two results.<wbr/> See below table for examples:</p>
8510 <table>
8511 <thead>
8512 <tr>
8513 <th align="center">State</th>
8514 <th align="center">Transition Cause</th>
8515 <th align="center">New State</th>
8516 <th align="center">Notes</th>
8517 </tr>
8518 </thead>
8519 <tbody>
8520 <tr>
8521 <td align="center">INACTIVE</td>
8522 <td align="center">Camera device finished AWB scan</td>
8523 <td align="center">CONVERGED</td>
8524 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8525 </tr>
8526 <tr>
8527 <td align="center">LOCKED</td>
8528 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8529 <td align="center">CONVERGED</td>
8530 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8531 </tr>
8532 </tbody>
8533 </table>
8534             </td>
8535           </tr>
8536
8537
8538           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8539            <!-- end of entry -->
8540         
8541                 
8542           <tr class="entry" id="dynamic_android.control.effectMode">
8543             <td class="entry_name
8544              " rowspan="3">
8545               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8546             </td>
8547             <td class="entry_type">
8548                 <span class="entry_type_name entry_type_name_enum">byte</span>
8549
8550               <span class="entry_type_visibility"> [public]</span>
8551
8552
8553               <span class="entry_type_hwlevel">[legacy] </span>
8554
8555
8556
8557                 <ul class="entry_type_enum">
8558                   <li>
8559                     <span class="entry_type_enum_name">OFF</span>
8560                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8561                   </li>
8562                   <li>
8563                     <span class="entry_type_enum_name">MONO</span>
8564                     <span class="entry_type_enum_optional">[optional]</span>
8565                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8566 a single color.<wbr/></p>
8567 <p>This will typically be grayscale.<wbr/></p></span>
8568                   </li>
8569                   <li>
8570                     <span class="entry_type_enum_name">NEGATIVE</span>
8571                     <span class="entry_type_enum_optional">[optional]</span>
8572                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8573 are inverted.<wbr/></p></span>
8574                   </li>
8575                   <li>
8576                     <span class="entry_type_enum_name">SOLARIZE</span>
8577                     <span class="entry_type_enum_optional">[optional]</span>
8578                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8579 image is wholly or partially reversed in
8580 tone.<wbr/></p></span>
8581                   </li>
8582                   <li>
8583                     <span class="entry_type_enum_name">SEPIA</span>
8584                     <span class="entry_type_enum_optional">[optional]</span>
8585                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8586 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8587                   </li>
8588                   <li>
8589                     <span class="entry_type_enum_name">POSTERIZE</span>
8590                     <span class="entry_type_enum_optional">[optional]</span>
8591                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8592 discrete regions of tone rather than a continuous
8593 gradient of tones.<wbr/></p></span>
8594                   </li>
8595                   <li>
8596                     <span class="entry_type_enum_name">WHITEBOARD</span>
8597                     <span class="entry_type_enum_optional">[optional]</span>
8598                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8599 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8600                   </li>
8601                   <li>
8602                     <span class="entry_type_enum_name">BLACKBOARD</span>
8603                     <span class="entry_type_enum_optional">[optional]</span>
8604                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8605 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8606                   </li>
8607                   <li>
8608                     <span class="entry_type_enum_name">AQUA</span>
8609                     <span class="entry_type_enum_optional">[optional]</span>
8610                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8611                   </li>
8612                 </ul>
8613
8614             </td> <!-- entry_type -->
8615
8616             <td class="entry_description">
8617               <p>A special color effect to apply.<wbr/></p>
8618             </td>
8619
8620             <td class="entry_units">
8621             </td>
8622
8623             <td class="entry_range">
8624               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8625             </td>
8626
8627             <td class="entry_hal_version">
8628               <p>3.<wbr/>2</p>
8629             </td>
8630
8631             <td class="entry_tags">
8632               <ul class="entry_tags">
8633                   <li><a href="#tag_BC">BC</a></li>
8634               </ul>
8635             </td>
8636
8637           </tr>
8638           <tr class="entries_header">
8639             <th class="th_details" colspan="6">Details</th>
8640           </tr>
8641           <tr class="entry_cont">
8642             <td class="entry_details" colspan="6">
8643               <p>When this mode is set,<wbr/> a color effect will be applied
8644 to images produced by the camera device.<wbr/> The interpretation
8645 and implementation of these color effects is left to the
8646 implementor of the camera device,<wbr/> and should not be
8647 depended on to be consistent (or present) across all
8648 devices.<wbr/></p>
8649             </td>
8650           </tr>
8651
8652
8653           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8654            <!-- end of entry -->
8655         
8656                 
8657           <tr class="entry" id="dynamic_android.control.mode">
8658             <td class="entry_name
8659              " rowspan="3">
8660               android.<wbr/>control.<wbr/>mode
8661             </td>
8662             <td class="entry_type">
8663                 <span class="entry_type_name entry_type_name_enum">byte</span>
8664
8665               <span class="entry_type_visibility"> [public]</span>
8666
8667
8668               <span class="entry_type_hwlevel">[legacy] </span>
8669
8670
8671
8672                 <ul class="entry_type_enum">
8673                   <li>
8674                     <span class="entry_type_enum_name">OFF</span>
8675                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8676 <p>All control by the device's metering and focusing (3A)
8677 routines is disabled,<wbr/> and no other settings in
8678 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8679 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8680 device to select post-processing values for processing
8681 blocks that do not allow for manual control,<wbr/> or are not
8682 exposed by the camera API.<wbr/></p>
8683 <p>However,<wbr/> the camera device's 3A routines may continue to
8684 collect statistics and update their internal state so that
8685 when control is switched to AUTO mode,<wbr/> good control values
8686 can be immediately applied.<wbr/></p></span>
8687                   </li>
8688                   <li>
8689                     <span class="entry_type_enum_name">AUTO</span>
8690                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8691 <p>Manual control of capture parameters is disabled.<wbr/> All
8692 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8693 effect.<wbr/></p></span>
8694                   </li>
8695                   <li>
8696                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8697                     <span class="entry_type_enum_optional">[optional]</span>
8698                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8699 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8700 control.<wbr/>afMode controls; the camera device will ignore
8701 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8702 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8703 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8704 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8705 contain some modes other than DISABLED).<wbr/></p></span>
8706                   </li>
8707                   <li>
8708                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8709                     <span class="entry_type_enum_optional">[optional]</span>
8710                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8711 used by camera device background auto-exposure,<wbr/> auto-white balance and
8712 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8713 <p>Specifically,<wbr/> the 3A routines are locked to the last
8714 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8715 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8716 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8717 discarded by the camera device.<wbr/></p></span>
8718                   </li>
8719                 </ul>
8720
8721             </td> <!-- entry_type -->
8722
8723             <td class="entry_description">
8724               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8725 routines.<wbr/></p>
8726             </td>
8727
8728             <td class="entry_units">
8729             </td>
8730
8731             <td class="entry_range">
8732               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8733             </td>
8734
8735             <td class="entry_hal_version">
8736               <p>3.<wbr/>2</p>
8737             </td>
8738
8739             <td class="entry_tags">
8740               <ul class="entry_tags">
8741                   <li><a href="#tag_BC">BC</a></li>
8742               </ul>
8743             </td>
8744
8745           </tr>
8746           <tr class="entries_header">
8747             <th class="th_details" colspan="6">Details</th>
8748           </tr>
8749           <tr class="entry_cont">
8750             <td class="entry_details" colspan="6">
8751               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8752 by the camera device is disabled.<wbr/> The application must set the fields for
8753 capture parameters itself.<wbr/></p>
8754 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8755 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>
8756 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8757 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8758 implements one of the scene mode settings (such as ACTION,<wbr/>
8759 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8760 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8761 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8762 is that this frame will not be used by camera device background 3A statistics
8763 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8764 where the application doesn't want a 3A manual control capture to affect
8765 the subsequent auto 3A capture results.<wbr/></p>
8766             </td>
8767           </tr>
8768
8769
8770           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8771            <!-- end of entry -->
8772         
8773                 
8774           <tr class="entry" id="dynamic_android.control.sceneMode">
8775             <td class="entry_name
8776              " rowspan="5">
8777               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8778             </td>
8779             <td class="entry_type">
8780                 <span class="entry_type_name entry_type_name_enum">byte</span>
8781
8782               <span class="entry_type_visibility"> [public]</span>
8783
8784
8785               <span class="entry_type_hwlevel">[legacy] </span>
8786
8787
8788
8789                 <ul class="entry_type_enum">
8790                   <li>
8791                     <span class="entry_type_enum_name">DISABLED</span>
8792                     <span class="entry_type_enum_value">0</span>
8793                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8794                   </li>
8795                   <li>
8796                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
8797                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8798 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8799 auto-exposure routines.<wbr/></p>
8800 <p>If face detection statistics are disabled
8801 (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/>
8802 this should still operate correctly (but will not return
8803 face detection statistics to the framework).<wbr/></p>
8804 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8805 <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>
8806 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8807                   </li>
8808                   <li>
8809                     <span class="entry_type_enum_name">ACTION</span>
8810                     <span class="entry_type_enum_optional">[optional]</span>
8811                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8812 <p>Similar to SPORTS.<wbr/></p></span>
8813                   </li>
8814                   <li>
8815                     <span class="entry_type_enum_name">PORTRAIT</span>
8816                     <span class="entry_type_enum_optional">[optional]</span>
8817                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8818                   </li>
8819                   <li>
8820                     <span class="entry_type_enum_name">LANDSCAPE</span>
8821                     <span class="entry_type_enum_optional">[optional]</span>
8822                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8823                   </li>
8824                   <li>
8825                     <span class="entry_type_enum_name">NIGHT</span>
8826                     <span class="entry_type_enum_optional">[optional]</span>
8827                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8828                   </li>
8829                   <li>
8830                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8831                     <span class="entry_type_enum_optional">[optional]</span>
8832                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8833 settings.<wbr/></p></span>
8834                   </li>
8835                   <li>
8836                     <span class="entry_type_enum_name">THEATRE</span>
8837                     <span class="entry_type_enum_optional">[optional]</span>
8838                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8839 remain off.<wbr/></p></span>
8840                   </li>
8841                   <li>
8842                     <span class="entry_type_enum_name">BEACH</span>
8843                     <span class="entry_type_enum_optional">[optional]</span>
8844                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8845                   </li>
8846                   <li>
8847                     <span class="entry_type_enum_name">SNOW</span>
8848                     <span class="entry_type_enum_optional">[optional]</span>
8849                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8850                   </li>
8851                   <li>
8852                     <span class="entry_type_enum_name">SUNSET</span>
8853                     <span class="entry_type_enum_optional">[optional]</span>
8854                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8855                   </li>
8856                   <li>
8857                     <span class="entry_type_enum_name">STEADYPHOTO</span>
8858                     <span class="entry_type_enum_optional">[optional]</span>
8859                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8860 device motion (for example: due to hand shake).<wbr/></p></span>
8861                   </li>
8862                   <li>
8863                     <span class="entry_type_enum_name">FIREWORKS</span>
8864                     <span class="entry_type_enum_optional">[optional]</span>
8865                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8866                   </li>
8867                   <li>
8868                     <span class="entry_type_enum_name">SPORTS</span>
8869                     <span class="entry_type_enum_optional">[optional]</span>
8870                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8871 <p>Similar to ACTION.<wbr/></p></span>
8872                   </li>
8873                   <li>
8874                     <span class="entry_type_enum_name">PARTY</span>
8875                     <span class="entry_type_enum_optional">[optional]</span>
8876                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8877 people.<wbr/></p></span>
8878                   </li>
8879                   <li>
8880                     <span class="entry_type_enum_name">CANDLELIGHT</span>
8881                     <span class="entry_type_enum_optional">[optional]</span>
8882                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8883 is a flame.<wbr/></p></span>
8884                   </li>
8885                   <li>
8886                     <span class="entry_type_enum_name">BARCODE</span>
8887                     <span class="entry_type_enum_optional">[optional]</span>
8888                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8889 for use by camera applications that wish to read the
8890 barcode value.<wbr/></p></span>
8891                   </li>
8892                   <li>
8893                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8894                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8895                     <span class="entry_type_enum_optional">[optional]</span>
8896                     <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>
8897 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8898 for high speed video recording.<wbr/></p>
8899 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8900 <p>The supported high speed video sizes and fps ranges are specified in
8901 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8902 output frame rates,<wbr/> the application is only allowed to select video size
8903 and fps range combinations listed in this static metadata.<wbr/> The fps range
8904 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8905 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8906 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8907 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8908 and post-processing parameters is possible.<wbr/> All other controls operate the
8909 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8910 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8911 <ul>
8912 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8913 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8914 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8915 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8916 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8917 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8918 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8919 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8920 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8921 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8922 </ul>
8923 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8924 <ul>
8925 <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>
8926 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8927 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8928 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8929 </ul>
8930 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8931 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8932 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8933 the application need check if the video encoder is capable of supporting the
8934 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8935 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8936 rate will be bounded by the screen refresh rate.<wbr/></p>
8937 <p>The camera device will only support up to 2 output high speed streams
8938 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8939 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8940 <ul>
8941 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8942 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8943 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>
8944 <li>The stream sizes are selected from the sizes reported by
8945 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8946 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8947 </ul>
8948 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8949 <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/>
8950 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8951 and the returned capture result metadata will give the fps range choosen
8952 by the camera device.<wbr/></p>
8953 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8954 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8955 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8956                   </li>
8957                   <li>
8958                     <span class="entry_type_enum_name">HDR</span>
8959                     <span class="entry_type_enum_optional">[optional]</span>
8960                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8961 <p>In this scene mode,<wbr/> the camera device captures images
8962 that keep a larger range of scene illumination levels
8963 visible in the final image.<wbr/> For example,<wbr/> when taking a
8964 picture of a object in front of a bright window,<wbr/> both
8965 the object and the scene through the window may be
8966 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8967 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8968 HDR mode generally takes much longer to capture a single
8969 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8970 depending on the HDR method used.<wbr/></p>
8971 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8972 than regular captures.<wbr/></p>
8973 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8974 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8975 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8976 using a high dynamic range capture technique.<wbr/>  On LEGACY
8977 devices,<wbr/> captures that target a JPEG-format output will
8978 be captured with HDR,<wbr/> and the capture intent is not
8979 relevant.<wbr/></p>
8980 <p>The HDR capture may involve the device capturing a burst
8981 of images internally and combining them into one,<wbr/> or it
8982 may involve the device using specialized high dynamic
8983 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8984 produced in response to a capture request submitted
8985 while in HDR mode.<wbr/></p>
8986 <p>Since substantial post-processing is generally needed to
8987 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8988 outputs are supported for LIMITED/<wbr/>FULL device HDR
8989 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8990 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8991 supported.<wbr/></p>
8992 <p>Some devices may also support always-on HDR,<wbr/> which
8993 applies HDR processing at full frame rate.<wbr/>  For these
8994 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8995 produce an HDR output with no frame rate impact compared
8996 to normal operation,<wbr/> though the quality may be lower
8997 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8998 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8999 or capture intents,<wbr/> the images captured will be as if
9000 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9001                   </li>
9002                   <li>
9003                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
9004                     <span class="entry_type_enum_optional">[optional]</span>
9005                     <span class="entry_type_enum_hidden">[hidden]</span>
9006                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9007 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9008 under low light conditions.<wbr/></p>
9009 <p>The camera device may be tuned to expose the images in a reduced
9010 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9011 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/>
9012 the camera device auto-exposure routine tuning process may limit the actual
9013 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9014 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9015 low light may be under-exposed when the sensor max exposure time (bounded by the
9016 <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
9017 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9018 camera device auto-exposure routine to increase the sensitivity up to the max
9019 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
9020 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9021 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9022 recommended that the application only use this scene mode when it is capable of
9023 reducing the noise level of the captured images.<wbr/></p>
9024 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9025 <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>
9026 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9027                   </li>
9028                   <li>
9029                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
9030                     <span class="entry_type_enum_optional">[optional]</span>
9031                     <span class="entry_type_enum_hidden">[hidden]</span>
9032                     <span class="entry_type_enum_value">100</span>
9033                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9034 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9035 customized scene modes.<wbr/></p></span>
9036                   </li>
9037                   <li>
9038                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
9039                     <span class="entry_type_enum_optional">[optional]</span>
9040                     <span class="entry_type_enum_hidden">[hidden]</span>
9041                     <span class="entry_type_enum_value">127</span>
9042                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9043 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9044 customized scene modes.<wbr/></p></span>
9045                   </li>
9046                 </ul>
9047
9048             </td> <!-- entry_type -->
9049
9050             <td class="entry_description">
9051               <p>Control for which scene mode is currently active.<wbr/></p>
9052             </td>
9053
9054             <td class="entry_units">
9055             </td>
9056
9057             <td class="entry_range">
9058               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9059             </td>
9060
9061             <td class="entry_hal_version">
9062               <p>3.<wbr/>2</p>
9063             </td>
9064
9065             <td class="entry_tags">
9066               <ul class="entry_tags">
9067                   <li><a href="#tag_BC">BC</a></li>
9068               </ul>
9069             </td>
9070
9071           </tr>
9072           <tr class="entries_header">
9073             <th class="th_details" colspan="6">Details</th>
9074           </tr>
9075           <tr class="entry_cont">
9076             <td class="entry_details" colspan="6">
9077               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9078 capture settings.<wbr/></p>
9079 <p>This is the mode that that is active when
9080 <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
9081 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>
9082 while in use.<wbr/></p>
9083 <p>The interpretation and implementation of these scene modes is left
9084 to the implementor of the camera device.<wbr/> Their behavior will not be
9085 consistent across all devices,<wbr/> and any given device may only implement
9086 a subset of these modes.<wbr/></p>
9087             </td>
9088           </tr>
9089
9090           <tr class="entries_header">
9091             <th class="th_details" colspan="6">HAL Implementation Details</th>
9092           </tr>
9093           <tr class="entry_cont">
9094             <td class="entry_details" colspan="6">
9095               <p>HAL implementations that include scene modes are expected to provide
9096 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9097 <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
9098 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9099 <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
9100 HAL must list supported video size and fps range in
9101 <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/>
9102 if the HAL has two different sensor configurations for normal streaming mode and high
9103 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9104 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9105 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9106 <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
9107 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9108             </td>
9109           </tr>
9110
9111           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9112            <!-- end of entry -->
9113         
9114                 
9115           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9116             <td class="entry_name
9117              " rowspan="3">
9118               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9119             </td>
9120             <td class="entry_type">
9121                 <span class="entry_type_name entry_type_name_enum">byte</span>
9122
9123               <span class="entry_type_visibility"> [public]</span>
9124
9125
9126               <span class="entry_type_hwlevel">[legacy] </span>
9127
9128
9129
9130                 <ul class="entry_type_enum">
9131                   <li>
9132                     <span class="entry_type_enum_name">OFF</span>
9133                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9134                   </li>
9135                   <li>
9136                     <span class="entry_type_enum_name">ON</span>
9137                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9138                   </li>
9139                 </ul>
9140
9141             </td> <!-- entry_type -->
9142
9143             <td class="entry_description">
9144               <p>Whether video stabilization is
9145 active.<wbr/></p>
9146             </td>
9147
9148             <td class="entry_units">
9149             </td>
9150
9151             <td class="entry_range">
9152             </td>
9153
9154             <td class="entry_hal_version">
9155               <p>3.<wbr/>2</p>
9156             </td>
9157
9158             <td class="entry_tags">
9159               <ul class="entry_tags">
9160                   <li><a href="#tag_BC">BC</a></li>
9161               </ul>
9162             </td>
9163
9164           </tr>
9165           <tr class="entries_header">
9166             <th class="th_details" colspan="6">Details</th>
9167           </tr>
9168           <tr class="entry_cont">
9169             <td class="entry_details" colspan="6">
9170               <p>Video stabilization automatically warps images from
9171 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9172 <p>If enabled,<wbr/> video stabilization can modify the
9173 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9174 <p>Switching between different video stabilization modes may take several
9175 frames to initialize,<wbr/> the camera device will report the current mode
9176 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9177 the video stabilization modes in the first several capture results may
9178 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9179 done.<wbr/></p>
9180 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9181 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9182 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9183 the recording resolution is less than or equal to 1920 x 1080 (width less than
9184 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9185 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9186 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9187 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9188 Surface types that can be stabilized.<wbr/></p>
9189 <p>If a camera device supports both this mode and OIS
9190 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9191 produce undesirable interaction,<wbr/> so it is recommended not to enable
9192 both at the same time.<wbr/></p>
9193             </td>
9194           </tr>
9195
9196
9197           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9198            <!-- end of entry -->
9199         
9200                 
9201           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9202             <td class="entry_name
9203              " rowspan="3">
9204               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9205             </td>
9206             <td class="entry_type">
9207                 <span class="entry_type_name">int32</span>
9208
9209               <span class="entry_type_visibility"> [public]</span>
9210
9211
9212
9213
9214
9215
9216             </td> <!-- entry_type -->
9217
9218             <td class="entry_description">
9219               <p>The amount of additional sensitivity boost applied to output images
9220 after RAW sensor data is captured.<wbr/></p>
9221             </td>
9222
9223             <td class="entry_units">
9224               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9225             </td>
9226
9227             <td class="entry_range">
9228               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9229             </td>
9230
9231             <td class="entry_hal_version">
9232               <p>3.<wbr/>2</p>
9233             </td>
9234
9235             <td class="entry_tags">
9236             </td>
9237
9238           </tr>
9239           <tr class="entries_header">
9240             <th class="th_details" colspan="6">Details</th>
9241           </tr>
9242           <tr class="entry_cont">
9243             <td class="entry_details" colspan="6">
9244               <p>Some camera devices support additional digital sensitivity boosting in the
9245 camera processing pipeline after sensor RAW image is captured.<wbr/>
9246 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9247 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9248 <p>This key will be <code>null</code> for devices that do not support any RAW format
9249 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9250 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9251 list <code>100</code> in this key.<wbr/></p>
9252 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9253 boost to the nearest supported value.<wbr/>
9254 The final boost value used will be available in the output capture result.<wbr/></p>
9255 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9256 of such device will have the total sensitivity of
9257 <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>
9258 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9259 <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
9260 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9261             </td>
9262           </tr>
9263
9264
9265           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9266            <!-- end of entry -->
9267         
9268                 
9269           <tr class="entry" id="dynamic_android.control.enableZsl">
9270             <td class="entry_name
9271              " rowspan="5">
9272               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9273             </td>
9274             <td class="entry_type">
9275                 <span class="entry_type_name entry_type_name_enum">byte</span>
9276
9277               <span class="entry_type_visibility"> [public as boolean]</span>
9278
9279
9280
9281
9282
9283                 <ul class="entry_type_enum">
9284                   <li>
9285                     <span class="entry_type_enum_name">FALSE</span>
9286                     <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
9287 after previous requests.<wbr/></p></span>
9288                   </li>
9289                   <li>
9290                     <span class="entry_type_enum_name">TRUE</span>
9291                     <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
9292 captured before previous requests.<wbr/></p></span>
9293                   </li>
9294                 </ul>
9295
9296             </td> <!-- entry_type -->
9297
9298             <td class="entry_description">
9299               <p>Allow camera device to enable zero-shutter-lag mode for requests with
9300 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9301             </td>
9302
9303             <td class="entry_units">
9304             </td>
9305
9306             <td class="entry_range">
9307             </td>
9308
9309             <td class="entry_hal_version">
9310               <p>3.<wbr/>2</p>
9311             </td>
9312
9313             <td class="entry_tags">
9314             </td>
9315
9316           </tr>
9317           <tr class="entries_header">
9318             <th class="th_details" colspan="6">Details</th>
9319           </tr>
9320           <tr class="entry_cont">
9321             <td class="entry_details" colspan="6">
9322               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9323 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9324 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9325 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9326 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9327 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9328 capture intents.<wbr/></p>
9329 <p>For example,<wbr/> when requests are submitted in the following order:
9330   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9331   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>
9332 <p>The output images for request B may have contents captured before the output images for
9333 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9334 request A.<wbr/></p>
9335 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9336 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9337 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9338 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9339 <code>false</code> if present.<wbr/></p>
9340 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9341 capture templates is always <code>false</code> if present.<wbr/></p>
9342 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9343             </td>
9344           </tr>
9345
9346           <tr class="entries_header">
9347             <th class="th_details" colspan="6">HAL Implementation Details</th>
9348           </tr>
9349           <tr class="entry_cont">
9350             <td class="entry_details" colspan="6">
9351               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9352 capture intent.<wbr/></p>
9353             </td>
9354           </tr>
9355
9356           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9357            <!-- end of entry -->
9358         
9359                 
9360           <tr class="entry" id="dynamic_android.control.afSceneChange">
9361             <td class="entry_name
9362              " rowspan="3">
9363               android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9364             </td>
9365             <td class="entry_type">
9366                 <span class="entry_type_name entry_type_name_enum">int32</span>
9367
9368               <span class="entry_type_visibility"> [public]</span>
9369
9370
9371
9372
9373
9374                 <ul class="entry_type_enum">
9375                   <li>
9376                     <span class="entry_type_enum_name">NOT_DETECTED</span>
9377                     <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9378                   </li>
9379                   <li>
9380                     <span class="entry_type_enum_name">DETECTED</span>
9381                     <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9382                   </li>
9383                 </ul>
9384
9385             </td> <!-- entry_type -->
9386
9387             <td class="entry_description">
9388               <p>Whether a significant scene change is detected within the currently-set AF
9389 region(s).<wbr/></p>
9390             </td>
9391
9392             <td class="entry_units">
9393             </td>
9394
9395             <td class="entry_range">
9396             </td>
9397
9398             <td class="entry_hal_version">
9399               <p>3.<wbr/>3</p>
9400             </td>
9401
9402             <td class="entry_tags">
9403             </td>
9404
9405           </tr>
9406           <tr class="entries_header">
9407             <th class="th_details" colspan="6">Details</th>
9408           </tr>
9409           <tr class="entry_cont">
9410             <td class="entry_details" colspan="6">
9411               <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9412 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9413 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9414 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9415 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9416 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9417 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9418 <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>
9419             </td>
9420           </tr>
9421
9422
9423           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9424            <!-- end of entry -->
9425         
9426         
9427
9428       <!-- end of kind -->
9429       </tbody>
9430
9431   <!-- end of section -->
9432   <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9433
9434
9435       <tr><td colspan="7" class="kind">controls</td></tr>
9436
9437       <thead class="entries_header">
9438         <tr>
9439           <th class="th_name">Property Name</th>
9440           <th class="th_type">Type</th>
9441           <th class="th_description">Description</th>
9442           <th class="th_units">Units</th>
9443           <th class="th_range">Range</th>
9444           <th class="th_hal_version">Initial HIDL HAL version</th>
9445           <th class="th_tags">Tags</th>
9446         </tr>
9447       </thead>
9448
9449       <tbody>
9450
9451         
9452
9453         
9454
9455         
9456
9457         
9458
9459                 
9460           <tr class="entry" id="controls_android.demosaic.mode">
9461             <td class="entry_name
9462              " rowspan="1">
9463               android.<wbr/>demosaic.<wbr/>mode
9464             </td>
9465             <td class="entry_type">
9466                 <span class="entry_type_name entry_type_name_enum">byte</span>
9467
9468               <span class="entry_type_visibility"> [system]</span>
9469
9470
9471
9472
9473
9474                 <ul class="entry_type_enum">
9475                   <li>
9476                     <span class="entry_type_enum_name">FAST</span>
9477                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9478 Bayer RAW output.<wbr/></p></span>
9479                   </li>
9480                   <li>
9481                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9482                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9483 relative to raw output.<wbr/></p></span>
9484                   </li>
9485                 </ul>
9486
9487             </td> <!-- entry_type -->
9488
9489             <td class="entry_description">
9490               <p>Controls the quality of the demosaicing
9491 processing.<wbr/></p>
9492             </td>
9493
9494             <td class="entry_units">
9495             </td>
9496
9497             <td class="entry_range">
9498             </td>
9499
9500             <td class="entry_hal_version">
9501               <p>3.<wbr/>2</p>
9502             </td>
9503
9504             <td class="entry_tags">
9505               <ul class="entry_tags">
9506                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9507               </ul>
9508             </td>
9509
9510           </tr>
9511
9512
9513           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9514            <!-- end of entry -->
9515         
9516         
9517
9518       <!-- end of kind -->
9519       </tbody>
9520
9521   <!-- end of section -->
9522   <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9523
9524
9525       <tr><td colspan="7" class="kind">controls</td></tr>
9526
9527       <thead class="entries_header">
9528         <tr>
9529           <th class="th_name">Property Name</th>
9530           <th class="th_type">Type</th>
9531           <th class="th_description">Description</th>
9532           <th class="th_units">Units</th>
9533           <th class="th_range">Range</th>
9534           <th class="th_hal_version">Initial HIDL HAL version</th>
9535           <th class="th_tags">Tags</th>
9536         </tr>
9537       </thead>
9538
9539       <tbody>
9540
9541         
9542
9543         
9544
9545         
9546
9547         
9548
9549                 
9550           <tr class="entry" id="controls_android.edge.mode">
9551             <td class="entry_name
9552              " rowspan="5">
9553               android.<wbr/>edge.<wbr/>mode
9554             </td>
9555             <td class="entry_type">
9556                 <span class="entry_type_name entry_type_name_enum">byte</span>
9557
9558               <span class="entry_type_visibility"> [public]</span>
9559
9560
9561               <span class="entry_type_hwlevel">[full] </span>
9562
9563
9564
9565                 <ul class="entry_type_enum">
9566                   <li>
9567                     <span class="entry_type_enum_name">OFF</span>
9568                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9569                   </li>
9570                   <li>
9571                     <span class="entry_type_enum_name">FAST</span>
9572                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9573 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9574 slow down frame rate relative to sensor.<wbr/></p></span>
9575                   </li>
9576                   <li>
9577                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9578                     <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>
9579                   </li>
9580                   <li>
9581                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9582                     <span class="entry_type_enum_optional">[optional]</span>
9583                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9584 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9585 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9586 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9587 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9588 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9589 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9590 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9591 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9592 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9593 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9594 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9595 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9596 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9597 reasonable preview quality.<wbr/></p>
9598 <p>This mode is guaranteed to be supported by devices that support either the
9599 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9600 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9601 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9602                   </li>
9603                 </ul>
9604
9605             </td> <!-- entry_type -->
9606
9607             <td class="entry_description">
9608               <p>Operation mode for edge
9609 enhancement.<wbr/></p>
9610             </td>
9611
9612             <td class="entry_units">
9613             </td>
9614
9615             <td class="entry_range">
9616               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9617             </td>
9618
9619             <td class="entry_hal_version">
9620               <p>3.<wbr/>2</p>
9621             </td>
9622
9623             <td class="entry_tags">
9624               <ul class="entry_tags">
9625                   <li><a href="#tag_V1">V1</a></li>
9626                   <li><a href="#tag_REPROC">REPROC</a></li>
9627               </ul>
9628             </td>
9629
9630           </tr>
9631           <tr class="entries_header">
9632             <th class="th_details" colspan="6">Details</th>
9633           </tr>
9634           <tr class="entry_cont">
9635             <td class="entry_details" colspan="6">
9636               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9637 no enhancement will be applied by the camera device.<wbr/></p>
9638 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9639 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9640 camera device will use the highest-quality enhancement algorithms,<wbr/>
9641 even if it slows down capture rate.<wbr/> FAST means the camera device will
9642 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9643 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9644 amount of enhancement applied.<wbr/></p>
9645 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9646 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9647 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9648 edge enhancement to low-resolution streams (below maximum recording resolution) to
9649 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9650 since those will be reprocessed later if necessary.<wbr/></p>
9651 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9652 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9653 The camera device may adjust its internal edge enhancement parameters for best
9654 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>
9655             </td>
9656           </tr>
9657
9658           <tr class="entries_header">
9659             <th class="th_details" colspan="6">HAL Implementation Details</th>
9660           </tr>
9661           <tr class="entry_cont">
9662             <td class="entry_details" colspan="6">
9663               <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
9664 adjust the internal edge enhancement reduction parameters appropriately to get the best
9665 quality images.<wbr/></p>
9666             </td>
9667           </tr>
9668
9669           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9670            <!-- end of entry -->
9671         
9672                 
9673           <tr class="entry" id="controls_android.edge.strength">
9674             <td class="entry_name
9675              " rowspan="1">
9676               android.<wbr/>edge.<wbr/>strength
9677             </td>
9678             <td class="entry_type">
9679                 <span class="entry_type_name">byte</span>
9680
9681               <span class="entry_type_visibility"> [system]</span>
9682
9683
9684
9685
9686
9687
9688             </td> <!-- entry_type -->
9689
9690             <td class="entry_description">
9691               <p>Control the amount of edge enhancement
9692 applied to the images</p>
9693             </td>
9694
9695             <td class="entry_units">
9696               1-10; 10 is maximum sharpening
9697             </td>
9698
9699             <td class="entry_range">
9700             </td>
9701
9702             <td class="entry_hal_version">
9703               <p>3.<wbr/>2</p>
9704             </td>
9705
9706             <td class="entry_tags">
9707               <ul class="entry_tags">
9708                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9709               </ul>
9710             </td>
9711
9712           </tr>
9713
9714
9715           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9716            <!-- end of entry -->
9717         
9718         
9719
9720       <!-- end of kind -->
9721       </tbody>
9722       <tr><td colspan="7" class="kind">static</td></tr>
9723
9724       <thead class="entries_header">
9725         <tr>
9726           <th class="th_name">Property Name</th>
9727           <th class="th_type">Type</th>
9728           <th class="th_description">Description</th>
9729           <th class="th_units">Units</th>
9730           <th class="th_range">Range</th>
9731           <th class="th_hal_version">Initial HIDL HAL version</th>
9732           <th class="th_tags">Tags</th>
9733         </tr>
9734       </thead>
9735
9736       <tbody>
9737
9738         
9739
9740         
9741
9742         
9743
9744         
9745
9746                 
9747           <tr class="entry" id="static_android.edge.availableEdgeModes">
9748             <td class="entry_name
9749              " rowspan="5">
9750               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9751             </td>
9752             <td class="entry_type">
9753                 <span class="entry_type_name">byte</span>
9754                 <span class="entry_type_container">x</span>
9755
9756                 <span class="entry_type_array">
9757                   n
9758                 </span>
9759               <span class="entry_type_visibility"> [public as enumList]</span>
9760
9761
9762               <span class="entry_type_hwlevel">[full] </span>
9763
9764
9765                 <div class="entry_type_notes">list of enums</div>
9766
9767
9768             </td> <!-- entry_type -->
9769
9770             <td class="entry_description">
9771               <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
9772 device.<wbr/></p>
9773             </td>
9774
9775             <td class="entry_units">
9776             </td>
9777
9778             <td class="entry_range">
9779               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9780             </td>
9781
9782             <td class="entry_hal_version">
9783               <p>3.<wbr/>2</p>
9784             </td>
9785
9786             <td class="entry_tags">
9787               <ul class="entry_tags">
9788                   <li><a href="#tag_V1">V1</a></li>
9789                   <li><a href="#tag_REPROC">REPROC</a></li>
9790               </ul>
9791             </td>
9792
9793           </tr>
9794           <tr class="entries_header">
9795             <th class="th_details" colspan="6">Details</th>
9796           </tr>
9797           <tr class="entry_cont">
9798             <td class="entry_details" colspan="6">
9799               <p>Full-capability camera devices must always support OFF; camera devices that support
9800 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9801 list FAST.<wbr/></p>
9802             </td>
9803           </tr>
9804
9805           <tr class="entries_header">
9806             <th class="th_details" colspan="6">HAL Implementation Details</th>
9807           </tr>
9808           <tr class="entry_cont">
9809             <td class="entry_details" colspan="6">
9810               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9811 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9812 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9813 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9814             </td>
9815           </tr>
9816
9817           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9818            <!-- end of entry -->
9819         
9820         
9821
9822       <!-- end of kind -->
9823       </tbody>
9824       <tr><td colspan="7" class="kind">dynamic</td></tr>
9825
9826       <thead class="entries_header">
9827         <tr>
9828           <th class="th_name">Property Name</th>
9829           <th class="th_type">Type</th>
9830           <th class="th_description">Description</th>
9831           <th class="th_units">Units</th>
9832           <th class="th_range">Range</th>
9833           <th class="th_hal_version">Initial HIDL HAL version</th>
9834           <th class="th_tags">Tags</th>
9835         </tr>
9836       </thead>
9837
9838       <tbody>
9839
9840         
9841
9842         
9843
9844         
9845
9846         
9847
9848                 
9849           <tr class="entry" id="dynamic_android.edge.mode">
9850             <td class="entry_name
9851              " rowspan="5">
9852               android.<wbr/>edge.<wbr/>mode
9853             </td>
9854             <td class="entry_type">
9855                 <span class="entry_type_name entry_type_name_enum">byte</span>
9856
9857               <span class="entry_type_visibility"> [public]</span>
9858
9859
9860               <span class="entry_type_hwlevel">[full] </span>
9861
9862
9863
9864                 <ul class="entry_type_enum">
9865                   <li>
9866                     <span class="entry_type_enum_name">OFF</span>
9867                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9868                   </li>
9869                   <li>
9870                     <span class="entry_type_enum_name">FAST</span>
9871                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9872 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9873 slow down frame rate relative to sensor.<wbr/></p></span>
9874                   </li>
9875                   <li>
9876                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9877                     <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>
9878                   </li>
9879                   <li>
9880                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9881                     <span class="entry_type_enum_optional">[optional]</span>
9882                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9883 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9884 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9885 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9886 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9887 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9888 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9889 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9890 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9891 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9892 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9893 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9894 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9895 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9896 reasonable preview quality.<wbr/></p>
9897 <p>This mode is guaranteed to be supported by devices that support either the
9898 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9899 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9900 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9901                   </li>
9902                 </ul>
9903
9904             </td> <!-- entry_type -->
9905
9906             <td class="entry_description">
9907               <p>Operation mode for edge
9908 enhancement.<wbr/></p>
9909             </td>
9910
9911             <td class="entry_units">
9912             </td>
9913
9914             <td class="entry_range">
9915               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9916             </td>
9917
9918             <td class="entry_hal_version">
9919               <p>3.<wbr/>2</p>
9920             </td>
9921
9922             <td class="entry_tags">
9923               <ul class="entry_tags">
9924                   <li><a href="#tag_V1">V1</a></li>
9925                   <li><a href="#tag_REPROC">REPROC</a></li>
9926               </ul>
9927             </td>
9928
9929           </tr>
9930           <tr class="entries_header">
9931             <th class="th_details" colspan="6">Details</th>
9932           </tr>
9933           <tr class="entry_cont">
9934             <td class="entry_details" colspan="6">
9935               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9936 no enhancement will be applied by the camera device.<wbr/></p>
9937 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9938 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9939 camera device will use the highest-quality enhancement algorithms,<wbr/>
9940 even if it slows down capture rate.<wbr/> FAST means the camera device will
9941 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9942 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9943 amount of enhancement applied.<wbr/></p>
9944 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9945 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9946 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9947 edge enhancement to low-resolution streams (below maximum recording resolution) to
9948 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9949 since those will be reprocessed later if necessary.<wbr/></p>
9950 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9951 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9952 The camera device may adjust its internal edge enhancement parameters for best
9953 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>
9954             </td>
9955           </tr>
9956
9957           <tr class="entries_header">
9958             <th class="th_details" colspan="6">HAL Implementation Details</th>
9959           </tr>
9960           <tr class="entry_cont">
9961             <td class="entry_details" colspan="6">
9962               <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
9963 adjust the internal edge enhancement reduction parameters appropriately to get the best
9964 quality images.<wbr/></p>
9965             </td>
9966           </tr>
9967
9968           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9969            <!-- end of entry -->
9970         
9971         
9972
9973       <!-- end of kind -->
9974       </tbody>
9975
9976   <!-- end of section -->
9977   <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
9978
9979
9980       <tr><td colspan="7" class="kind">controls</td></tr>
9981
9982       <thead class="entries_header">
9983         <tr>
9984           <th class="th_name">Property Name</th>
9985           <th class="th_type">Type</th>
9986           <th class="th_description">Description</th>
9987           <th class="th_units">Units</th>
9988           <th class="th_range">Range</th>
9989           <th class="th_hal_version">Initial HIDL HAL version</th>
9990           <th class="th_tags">Tags</th>
9991         </tr>
9992       </thead>
9993
9994       <tbody>
9995
9996         
9997
9998         
9999
10000         
10001
10002         
10003
10004                 
10005           <tr class="entry" id="controls_android.flash.firingPower">
10006             <td class="entry_name
10007              " rowspan="3">
10008               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10009             </td>
10010             <td class="entry_type">
10011                 <span class="entry_type_name">byte</span>
10012
10013               <span class="entry_type_visibility"> [system]</span>
10014
10015
10016
10017
10018
10019
10020             </td> <!-- entry_type -->
10021
10022             <td class="entry_description">
10023               <p>Power for flash firing/<wbr/>torch</p>
10024             </td>
10025
10026             <td class="entry_units">
10027               10 is max power; 0 is no flash.<wbr/> Linear
10028             </td>
10029
10030             <td class="entry_range">
10031               <p>0 - 10</p>
10032             </td>
10033
10034             <td class="entry_hal_version">
10035               <p>3.<wbr/>2</p>
10036             </td>
10037
10038             <td class="entry_tags">
10039               <ul class="entry_tags">
10040                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10041               </ul>
10042             </td>
10043
10044           </tr>
10045           <tr class="entries_header">
10046             <th class="th_details" colspan="6">Details</th>
10047           </tr>
10048           <tr class="entry_cont">
10049             <td class="entry_details" colspan="6">
10050               <p>Power for snapshot may use a different scale than
10051 for torch mode.<wbr/> Only one entry for torch mode will be
10052 used</p>
10053             </td>
10054           </tr>
10055
10056
10057           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10058            <!-- end of entry -->
10059         
10060                 
10061           <tr class="entry" id="controls_android.flash.firingTime">
10062             <td class="entry_name
10063              " rowspan="3">
10064               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10065             </td>
10066             <td class="entry_type">
10067                 <span class="entry_type_name">int64</span>
10068
10069               <span class="entry_type_visibility"> [system]</span>
10070
10071
10072
10073
10074
10075
10076             </td> <!-- entry_type -->
10077
10078             <td class="entry_description">
10079               <p>Firing time of flash relative to start of
10080 exposure</p>
10081             </td>
10082
10083             <td class="entry_units">
10084               nanoseconds
10085             </td>
10086
10087             <td class="entry_range">
10088               <p>0-(exposure time-flash duration)</p>
10089             </td>
10090
10091             <td class="entry_hal_version">
10092               <p>3.<wbr/>2</p>
10093             </td>
10094
10095             <td class="entry_tags">
10096               <ul class="entry_tags">
10097                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10098               </ul>
10099             </td>
10100
10101           </tr>
10102           <tr class="entries_header">
10103             <th class="th_details" colspan="6">Details</th>
10104           </tr>
10105           <tr class="entry_cont">
10106             <td class="entry_details" colspan="6">
10107               <p>Clamped to (0,<wbr/> exposure time - flash
10108 duration).<wbr/></p>
10109             </td>
10110           </tr>
10111
10112
10113           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10114            <!-- end of entry -->
10115         
10116                 
10117           <tr class="entry" id="controls_android.flash.mode">
10118             <td class="entry_name
10119              " rowspan="3">
10120               android.<wbr/>flash.<wbr/>mode
10121             </td>
10122             <td class="entry_type">
10123                 <span class="entry_type_name entry_type_name_enum">byte</span>
10124
10125               <span class="entry_type_visibility"> [public]</span>
10126
10127
10128               <span class="entry_type_hwlevel">[legacy] </span>
10129
10130
10131
10132                 <ul class="entry_type_enum">
10133                   <li>
10134                     <span class="entry_type_enum_name">OFF</span>
10135                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10136                   </li>
10137                   <li>
10138                     <span class="entry_type_enum_name">SINGLE</span>
10139                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10140 for this capture.<wbr/></p></span>
10141                   </li>
10142                   <li>
10143                     <span class="entry_type_enum_name">TORCH</span>
10144                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10145                   </li>
10146                 </ul>
10147
10148             </td> <!-- entry_type -->
10149
10150             <td class="entry_description">
10151               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10152             </td>
10153
10154             <td class="entry_units">
10155             </td>
10156
10157             <td class="entry_range">
10158             </td>
10159
10160             <td class="entry_hal_version">
10161               <p>3.<wbr/>2</p>
10162             </td>
10163
10164             <td class="entry_tags">
10165               <ul class="entry_tags">
10166                   <li><a href="#tag_BC">BC</a></li>
10167               </ul>
10168             </td>
10169
10170           </tr>
10171           <tr class="entries_header">
10172             <th class="th_details" colspan="6">Details</th>
10173           </tr>
10174           <tr class="entry_cont">
10175             <td class="entry_details" colspan="6">
10176               <p>This control is only effective when flash unit is available
10177 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10178 <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/>
10179 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10180 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10181 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10182 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10183 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10184 control should be used along with auto-exposure (AE) precapture metering sequence
10185 (<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>
10186 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10187 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10188 <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>
10189             </td>
10190           </tr>
10191
10192
10193           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10194            <!-- end of entry -->
10195         
10196         
10197
10198       <!-- end of kind -->
10199       </tbody>
10200       <tr><td colspan="7" class="kind">static</td></tr>
10201
10202       <thead class="entries_header">
10203         <tr>
10204           <th class="th_name">Property Name</th>
10205           <th class="th_type">Type</th>
10206           <th class="th_description">Description</th>
10207           <th class="th_units">Units</th>
10208           <th class="th_range">Range</th>
10209           <th class="th_hal_version">Initial HIDL HAL version</th>
10210           <th class="th_tags">Tags</th>
10211         </tr>
10212       </thead>
10213
10214       <tbody>
10215
10216         
10217
10218         
10219
10220         
10221
10222         
10223                 
10224             
10225
10226                 
10227           <tr class="entry" id="static_android.flash.info.available">
10228             <td class="entry_name
10229              " rowspan="3">
10230               android.<wbr/>flash.<wbr/>info.<wbr/>available
10231             </td>
10232             <td class="entry_type">
10233                 <span class="entry_type_name entry_type_name_enum">byte</span>
10234
10235               <span class="entry_type_visibility"> [public as boolean]</span>
10236
10237
10238               <span class="entry_type_hwlevel">[legacy] </span>
10239
10240
10241
10242                 <ul class="entry_type_enum">
10243                   <li>
10244                     <span class="entry_type_enum_name">FALSE</span>
10245                   </li>
10246                   <li>
10247                     <span class="entry_type_enum_name">TRUE</span>
10248                   </li>
10249                 </ul>
10250
10251             </td> <!-- entry_type -->
10252
10253             <td class="entry_description">
10254               <p>Whether this camera device has a
10255 flash unit.<wbr/></p>
10256             </td>
10257
10258             <td class="entry_units">
10259             </td>
10260
10261             <td class="entry_range">
10262             </td>
10263
10264             <td class="entry_hal_version">
10265               <p>3.<wbr/>2</p>
10266             </td>
10267
10268             <td class="entry_tags">
10269               <ul class="entry_tags">
10270                   <li><a href="#tag_BC">BC</a></li>
10271               </ul>
10272             </td>
10273
10274           </tr>
10275           <tr class="entries_header">
10276             <th class="th_details" colspan="6">Details</th>
10277           </tr>
10278           <tr class="entry_cont">
10279             <td class="entry_details" colspan="6">
10280               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10281 <p>If there is no flash unit,<wbr/> none of the flash controls do
10282 anything.<wbr/></p>
10283             </td>
10284           </tr>
10285
10286
10287           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10288            <!-- end of entry -->
10289         
10290                 
10291           <tr class="entry" id="static_android.flash.info.chargeDuration">
10292             <td class="entry_name
10293              " rowspan="3">
10294               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10295             </td>
10296             <td class="entry_type">
10297                 <span class="entry_type_name">int64</span>
10298
10299               <span class="entry_type_visibility"> [system]</span>
10300
10301
10302
10303
10304
10305
10306             </td> <!-- entry_type -->
10307
10308             <td class="entry_description">
10309               <p>Time taken before flash can fire
10310 again</p>
10311             </td>
10312
10313             <td class="entry_units">
10314               nanoseconds
10315             </td>
10316
10317             <td class="entry_range">
10318               <p>0-1e9</p>
10319             </td>
10320
10321             <td class="entry_hal_version">
10322               <p>3.<wbr/>2</p>
10323             </td>
10324
10325             <td class="entry_tags">
10326               <ul class="entry_tags">
10327                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10328               </ul>
10329             </td>
10330
10331           </tr>
10332           <tr class="entries_header">
10333             <th class="th_details" colspan="6">Details</th>
10334           </tr>
10335           <tr class="entry_cont">
10336             <td class="entry_details" colspan="6">
10337               <p>1 second too long/<wbr/>too short for recharge? Should
10338 this be power-dependent?</p>
10339             </td>
10340           </tr>
10341
10342
10343           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10344            <!-- end of entry -->
10345         
10346         
10347         
10348
10349                 
10350           <tr class="entry" id="static_android.flash.colorTemperature">
10351             <td class="entry_name
10352              " rowspan="1">
10353               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10354             </td>
10355             <td class="entry_type">
10356                 <span class="entry_type_name">byte</span>
10357
10358               <span class="entry_type_visibility"> [system]</span>
10359
10360
10361
10362
10363
10364
10365             </td> <!-- entry_type -->
10366
10367             <td class="entry_description">
10368               <p>The x,<wbr/>y whitepoint of the
10369 flash</p>
10370             </td>
10371
10372             <td class="entry_units">
10373               pair of floats
10374             </td>
10375
10376             <td class="entry_range">
10377               <p>0-1 for both</p>
10378             </td>
10379
10380             <td class="entry_hal_version">
10381               <p>3.<wbr/>2</p>
10382             </td>
10383
10384             <td class="entry_tags">
10385               <ul class="entry_tags">
10386                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10387               </ul>
10388             </td>
10389
10390           </tr>
10391
10392
10393           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10394            <!-- end of entry -->
10395         
10396                 
10397           <tr class="entry" id="static_android.flash.maxEnergy">
10398             <td class="entry_name
10399              " rowspan="1">
10400               android.<wbr/>flash.<wbr/>max<wbr/>Energy
10401             </td>
10402             <td class="entry_type">
10403                 <span class="entry_type_name">byte</span>
10404
10405               <span class="entry_type_visibility"> [system]</span>
10406
10407
10408
10409
10410
10411
10412             </td> <!-- entry_type -->
10413
10414             <td class="entry_description">
10415               <p>Max energy output of the flash for a full
10416 power single flash</p>
10417             </td>
10418
10419             <td class="entry_units">
10420               lumen-seconds
10421             </td>
10422
10423             <td class="entry_range">
10424               <p>&gt;= 0</p>
10425             </td>
10426
10427             <td class="entry_hal_version">
10428               <p>3.<wbr/>2</p>
10429             </td>
10430
10431             <td class="entry_tags">
10432               <ul class="entry_tags">
10433                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10434               </ul>
10435             </td>
10436
10437           </tr>
10438
10439
10440           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10441            <!-- end of entry -->
10442         
10443         
10444
10445       <!-- end of kind -->
10446       </tbody>
10447       <tr><td colspan="7" class="kind">dynamic</td></tr>
10448
10449       <thead class="entries_header">
10450         <tr>
10451           <th class="th_name">Property Name</th>
10452           <th class="th_type">Type</th>
10453           <th class="th_description">Description</th>
10454           <th class="th_units">Units</th>
10455           <th class="th_range">Range</th>
10456           <th class="th_hal_version">Initial HIDL HAL version</th>
10457           <th class="th_tags">Tags</th>
10458         </tr>
10459       </thead>
10460
10461       <tbody>
10462
10463         
10464
10465         
10466
10467         
10468
10469         
10470
10471                 
10472           <tr class="entry" id="dynamic_android.flash.firingPower">
10473             <td class="entry_name
10474              " rowspan="3">
10475               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10476             </td>
10477             <td class="entry_type">
10478                 <span class="entry_type_name">byte</span>
10479
10480               <span class="entry_type_visibility"> [system]</span>
10481
10482
10483
10484
10485
10486
10487             </td> <!-- entry_type -->
10488
10489             <td class="entry_description">
10490               <p>Power for flash firing/<wbr/>torch</p>
10491             </td>
10492
10493             <td class="entry_units">
10494               10 is max power; 0 is no flash.<wbr/> Linear
10495             </td>
10496
10497             <td class="entry_range">
10498               <p>0 - 10</p>
10499             </td>
10500
10501             <td class="entry_hal_version">
10502               <p>3.<wbr/>2</p>
10503             </td>
10504
10505             <td class="entry_tags">
10506               <ul class="entry_tags">
10507                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10508               </ul>
10509             </td>
10510
10511           </tr>
10512           <tr class="entries_header">
10513             <th class="th_details" colspan="6">Details</th>
10514           </tr>
10515           <tr class="entry_cont">
10516             <td class="entry_details" colspan="6">
10517               <p>Power for snapshot may use a different scale than
10518 for torch mode.<wbr/> Only one entry for torch mode will be
10519 used</p>
10520             </td>
10521           </tr>
10522
10523
10524           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10525            <!-- end of entry -->
10526         
10527                 
10528           <tr class="entry" id="dynamic_android.flash.firingTime">
10529             <td class="entry_name
10530              " rowspan="3">
10531               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10532             </td>
10533             <td class="entry_type">
10534                 <span class="entry_type_name">int64</span>
10535
10536               <span class="entry_type_visibility"> [system]</span>
10537
10538
10539
10540
10541
10542
10543             </td> <!-- entry_type -->
10544
10545             <td class="entry_description">
10546               <p>Firing time of flash relative to start of
10547 exposure</p>
10548             </td>
10549
10550             <td class="entry_units">
10551               nanoseconds
10552             </td>
10553
10554             <td class="entry_range">
10555               <p>0-(exposure time-flash duration)</p>
10556             </td>
10557
10558             <td class="entry_hal_version">
10559               <p>3.<wbr/>2</p>
10560             </td>
10561
10562             <td class="entry_tags">
10563               <ul class="entry_tags">
10564                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10565               </ul>
10566             </td>
10567
10568           </tr>
10569           <tr class="entries_header">
10570             <th class="th_details" colspan="6">Details</th>
10571           </tr>
10572           <tr class="entry_cont">
10573             <td class="entry_details" colspan="6">
10574               <p>Clamped to (0,<wbr/> exposure time - flash
10575 duration).<wbr/></p>
10576             </td>
10577           </tr>
10578
10579
10580           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10581            <!-- end of entry -->
10582         
10583                 
10584           <tr class="entry" id="dynamic_android.flash.mode">
10585             <td class="entry_name
10586              " rowspan="3">
10587               android.<wbr/>flash.<wbr/>mode
10588             </td>
10589             <td class="entry_type">
10590                 <span class="entry_type_name entry_type_name_enum">byte</span>
10591
10592               <span class="entry_type_visibility"> [public]</span>
10593
10594
10595               <span class="entry_type_hwlevel">[legacy] </span>
10596
10597
10598
10599                 <ul class="entry_type_enum">
10600                   <li>
10601                     <span class="entry_type_enum_name">OFF</span>
10602                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10603                   </li>
10604                   <li>
10605                     <span class="entry_type_enum_name">SINGLE</span>
10606                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10607 for this capture.<wbr/></p></span>
10608                   </li>
10609                   <li>
10610                     <span class="entry_type_enum_name">TORCH</span>
10611                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10612                   </li>
10613                 </ul>
10614
10615             </td> <!-- entry_type -->
10616
10617             <td class="entry_description">
10618               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10619             </td>
10620
10621             <td class="entry_units">
10622             </td>
10623
10624             <td class="entry_range">
10625             </td>
10626
10627             <td class="entry_hal_version">
10628               <p>3.<wbr/>2</p>
10629             </td>
10630
10631             <td class="entry_tags">
10632               <ul class="entry_tags">
10633                   <li><a href="#tag_BC">BC</a></li>
10634               </ul>
10635             </td>
10636
10637           </tr>
10638           <tr class="entries_header">
10639             <th class="th_details" colspan="6">Details</th>
10640           </tr>
10641           <tr class="entry_cont">
10642             <td class="entry_details" colspan="6">
10643               <p>This control is only effective when flash unit is available
10644 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10645 <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/>
10646 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10647 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10648 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10649 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10650 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10651 control should be used along with auto-exposure (AE) precapture metering sequence
10652 (<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>
10653 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10654 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10655 <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>
10656             </td>
10657           </tr>
10658
10659
10660           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10661            <!-- end of entry -->
10662         
10663                 
10664           <tr class="entry" id="dynamic_android.flash.state">
10665             <td class="entry_name
10666              " rowspan="3">
10667               android.<wbr/>flash.<wbr/>state
10668             </td>
10669             <td class="entry_type">
10670                 <span class="entry_type_name entry_type_name_enum">byte</span>
10671
10672               <span class="entry_type_visibility"> [public]</span>
10673
10674
10675               <span class="entry_type_hwlevel">[limited] </span>
10676
10677
10678
10679                 <ul class="entry_type_enum">
10680                   <li>
10681                     <span class="entry_type_enum_name">UNAVAILABLE</span>
10682                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10683                   </li>
10684                   <li>
10685                     <span class="entry_type_enum_name">CHARGING</span>
10686                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10687                   </li>
10688                   <li>
10689                     <span class="entry_type_enum_name">READY</span>
10690                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10691                   </li>
10692                   <li>
10693                     <span class="entry_type_enum_name">FIRED</span>
10694                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10695                   </li>
10696                   <li>
10697                     <span class="entry_type_enum_name">PARTIAL</span>
10698                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10699 <p>This is usually due to the next or previous frame having
10700 the flash fire,<wbr/> and the flash spilling into this capture
10701 due to hardware limitations.<wbr/></p></span>
10702                   </li>
10703                 </ul>
10704
10705             </td> <!-- entry_type -->
10706
10707             <td class="entry_description">
10708               <p>Current state of the flash
10709 unit.<wbr/></p>
10710             </td>
10711
10712             <td class="entry_units">
10713             </td>
10714
10715             <td class="entry_range">
10716             </td>
10717
10718             <td class="entry_hal_version">
10719               <p>3.<wbr/>2</p>
10720             </td>
10721
10722             <td class="entry_tags">
10723             </td>
10724
10725           </tr>
10726           <tr class="entries_header">
10727             <th class="th_details" colspan="6">Details</th>
10728           </tr>
10729           <tr class="entry_cont">
10730             <td class="entry_details" colspan="6">
10731               <p>When the camera device doesn't have flash unit
10732 (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/>
10733 Other states indicate the current flash status.<wbr/></p>
10734 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10735 <ul>
10736 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10737 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10738    will always return FIRED.<wbr/></li>
10739 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10740    will always return FIRED.<wbr/></li>
10741 </ul>
10742 <p>In all other conditions the state will not be available on
10743 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10744             </td>
10745           </tr>
10746
10747
10748           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10749            <!-- end of entry -->
10750         
10751         
10752
10753       <!-- end of kind -->
10754       </tbody>
10755
10756   <!-- end of section -->
10757   <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10758
10759
10760       <tr><td colspan="7" class="kind">controls</td></tr>
10761
10762       <thead class="entries_header">
10763         <tr>
10764           <th class="th_name">Property Name</th>
10765           <th class="th_type">Type</th>
10766           <th class="th_description">Description</th>
10767           <th class="th_units">Units</th>
10768           <th class="th_range">Range</th>
10769           <th class="th_hal_version">Initial HIDL HAL version</th>
10770           <th class="th_tags">Tags</th>
10771         </tr>
10772       </thead>
10773
10774       <tbody>
10775
10776         
10777
10778         
10779
10780         
10781
10782         
10783
10784                 
10785           <tr class="entry" id="controls_android.hotPixel.mode">
10786             <td class="entry_name
10787              " rowspan="3">
10788               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10789             </td>
10790             <td class="entry_type">
10791                 <span class="entry_type_name entry_type_name_enum">byte</span>
10792
10793               <span class="entry_type_visibility"> [public]</span>
10794
10795
10796
10797
10798
10799                 <ul class="entry_type_enum">
10800                   <li>
10801                     <span class="entry_type_enum_name">OFF</span>
10802                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10803 <p>The frame rate must not be reduced relative to sensor raw output
10804 for this option.<wbr/></p>
10805 <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>
10806                   </li>
10807                   <li>
10808                     <span class="entry_type_enum_name">FAST</span>
10809                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10810 rate relative to sensor raw output.<wbr/></p>
10811 <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>
10812                   </li>
10813                   <li>
10814                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
10815                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10816 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10817 <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>
10818                   </li>
10819                 </ul>
10820
10821             </td> <!-- entry_type -->
10822
10823             <td class="entry_description">
10824               <p>Operational mode for hot pixel correction.<wbr/></p>
10825             </td>
10826
10827             <td class="entry_units">
10828             </td>
10829
10830             <td class="entry_range">
10831               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10832             </td>
10833
10834             <td class="entry_hal_version">
10835               <p>3.<wbr/>2</p>
10836             </td>
10837
10838             <td class="entry_tags">
10839               <ul class="entry_tags">
10840                   <li><a href="#tag_V1">V1</a></li>
10841                   <li><a href="#tag_RAW">RAW</a></li>
10842               </ul>
10843             </td>
10844
10845           </tr>
10846           <tr class="entries_header">
10847             <th class="th_details" colspan="6">Details</th>
10848           </tr>
10849           <tr class="entry_cont">
10850             <td class="entry_details" colspan="6">
10851               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10852 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10853 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10854             </td>
10855           </tr>
10856
10857
10858           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10859            <!-- end of entry -->
10860         
10861         
10862
10863       <!-- end of kind -->
10864       </tbody>
10865       <tr><td colspan="7" class="kind">static</td></tr>
10866
10867       <thead class="entries_header">
10868         <tr>
10869           <th class="th_name">Property Name</th>
10870           <th class="th_type">Type</th>
10871           <th class="th_description">Description</th>
10872           <th class="th_units">Units</th>
10873           <th class="th_range">Range</th>
10874           <th class="th_hal_version">Initial HIDL HAL version</th>
10875           <th class="th_tags">Tags</th>
10876         </tr>
10877       </thead>
10878
10879       <tbody>
10880
10881         
10882
10883         
10884
10885         
10886
10887         
10888
10889                 
10890           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10891             <td class="entry_name
10892              " rowspan="5">
10893               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10894             </td>
10895             <td class="entry_type">
10896                 <span class="entry_type_name">byte</span>
10897                 <span class="entry_type_container">x</span>
10898
10899                 <span class="entry_type_array">
10900                   n
10901                 </span>
10902               <span class="entry_type_visibility"> [public as enumList]</span>
10903
10904
10905
10906
10907                 <div class="entry_type_notes">list of enums</div>
10908
10909
10910             </td> <!-- entry_type -->
10911
10912             <td class="entry_description">
10913               <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
10914 camera device.<wbr/></p>
10915             </td>
10916
10917             <td class="entry_units">
10918             </td>
10919
10920             <td class="entry_range">
10921               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10922             </td>
10923
10924             <td class="entry_hal_version">
10925               <p>3.<wbr/>2</p>
10926             </td>
10927
10928             <td class="entry_tags">
10929               <ul class="entry_tags">
10930                   <li><a href="#tag_V1">V1</a></li>
10931                   <li><a href="#tag_RAW">RAW</a></li>
10932               </ul>
10933             </td>
10934
10935           </tr>
10936           <tr class="entries_header">
10937             <th class="th_details" colspan="6">Details</th>
10938           </tr>
10939           <tr class="entry_cont">
10940             <td class="entry_details" colspan="6">
10941               <p>FULL mode camera devices will always support FAST.<wbr/></p>
10942             </td>
10943           </tr>
10944
10945           <tr class="entries_header">
10946             <th class="th_details" colspan="6">HAL Implementation Details</th>
10947           </tr>
10948           <tr class="entry_cont">
10949             <td class="entry_details" colspan="6">
10950               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10951 pixels than actual pixels on the camera sensor.<wbr/>
10952 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10953 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10954 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10955 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10956             </td>
10957           </tr>
10958
10959           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10960            <!-- end of entry -->
10961         
10962         
10963
10964       <!-- end of kind -->
10965       </tbody>
10966       <tr><td colspan="7" class="kind">dynamic</td></tr>
10967
10968       <thead class="entries_header">
10969         <tr>
10970           <th class="th_name">Property Name</th>
10971           <th class="th_type">Type</th>
10972           <th class="th_description">Description</th>
10973           <th class="th_units">Units</th>
10974           <th class="th_range">Range</th>
10975           <th class="th_hal_version">Initial HIDL HAL version</th>
10976           <th class="th_tags">Tags</th>
10977         </tr>
10978       </thead>
10979
10980       <tbody>
10981
10982         
10983
10984         
10985
10986         
10987
10988         
10989
10990                 
10991           <tr class="entry" id="dynamic_android.hotPixel.mode">
10992             <td class="entry_name
10993              " rowspan="3">
10994               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10995             </td>
10996             <td class="entry_type">
10997                 <span class="entry_type_name entry_type_name_enum">byte</span>
10998
10999               <span class="entry_type_visibility"> [public]</span>
11000
11001
11002
11003
11004
11005                 <ul class="entry_type_enum">
11006                   <li>
11007                     <span class="entry_type_enum_name">OFF</span>
11008                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11009 <p>The frame rate must not be reduced relative to sensor raw output
11010 for this option.<wbr/></p>
11011 <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>
11012                   </li>
11013                   <li>
11014                     <span class="entry_type_enum_name">FAST</span>
11015                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11016 rate relative to sensor raw output.<wbr/></p>
11017 <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>
11018                   </li>
11019                   <li>
11020                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
11021                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11022 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11023 <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>
11024                   </li>
11025                 </ul>
11026
11027             </td> <!-- entry_type -->
11028
11029             <td class="entry_description">
11030               <p>Operational mode for hot pixel correction.<wbr/></p>
11031             </td>
11032
11033             <td class="entry_units">
11034             </td>
11035
11036             <td class="entry_range">
11037               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11038             </td>
11039
11040             <td class="entry_hal_version">
11041               <p>3.<wbr/>2</p>
11042             </td>
11043
11044             <td class="entry_tags">
11045               <ul class="entry_tags">
11046                   <li><a href="#tag_V1">V1</a></li>
11047                   <li><a href="#tag_RAW">RAW</a></li>
11048               </ul>
11049             </td>
11050
11051           </tr>
11052           <tr class="entries_header">
11053             <th class="th_details" colspan="6">Details</th>
11054           </tr>
11055           <tr class="entry_cont">
11056             <td class="entry_details" colspan="6">
11057               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11058 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11059 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11060             </td>
11061           </tr>
11062
11063
11064           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11065            <!-- end of entry -->
11066         
11067         
11068
11069       <!-- end of kind -->
11070       </tbody>
11071
11072   <!-- end of section -->
11073   <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11074
11075
11076       <tr><td colspan="7" class="kind">controls</td></tr>
11077
11078       <thead class="entries_header">
11079         <tr>
11080           <th class="th_name">Property Name</th>
11081           <th class="th_type">Type</th>
11082           <th class="th_description">Description</th>
11083           <th class="th_units">Units</th>
11084           <th class="th_range">Range</th>
11085           <th class="th_hal_version">Initial HIDL HAL version</th>
11086           <th class="th_tags">Tags</th>
11087         </tr>
11088       </thead>
11089
11090       <tbody>
11091
11092         
11093
11094         
11095
11096         
11097
11098         
11099
11100                 
11101           <tr class="entry" id="controls_android.jpeg.gpsLocation">
11102             <td class="entry_name
11103              " rowspan="3">
11104               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11105             </td>
11106             <td class="entry_type">
11107                 <span class="entry_type_name">byte</span>
11108
11109               <span class="entry_type_visibility"> [java_public as location]</span>
11110
11111               <span class="entry_type_synthetic">[synthetic] </span>
11112
11113               <span class="entry_type_hwlevel">[legacy] </span>
11114
11115
11116
11117
11118             </td> <!-- entry_type -->
11119
11120             <td class="entry_description">
11121               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11122             </td>
11123
11124             <td class="entry_units">
11125             </td>
11126
11127             <td class="entry_range">
11128             </td>
11129
11130             <td class="entry_hal_version">
11131               <p>3.<wbr/>2</p>
11132             </td>
11133
11134             <td class="entry_tags">
11135             </td>
11136
11137           </tr>
11138           <tr class="entries_header">
11139             <th class="th_details" colspan="6">Details</th>
11140           </tr>
11141           <tr class="entry_cont">
11142             <td class="entry_details" colspan="6">
11143               <p>Setting a location object in a request will include the GPS coordinates of the location
11144 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11145 viewed by anyone who receives the JPEG image.<wbr/></p>
11146             </td>
11147           </tr>
11148
11149
11150           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11151            <!-- end of entry -->
11152         
11153                 
11154           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11155             <td class="entry_name
11156              " rowspan="1">
11157               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11158             </td>
11159             <td class="entry_type">
11160                 <span class="entry_type_name">double</span>
11161                 <span class="entry_type_container">x</span>
11162
11163                 <span class="entry_type_array">
11164                   3
11165                 </span>
11166               <span class="entry_type_visibility"> [ndk_public]</span>
11167
11168
11169               <span class="entry_type_hwlevel">[legacy] </span>
11170
11171
11172                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11173
11174
11175             </td> <!-- entry_type -->
11176
11177             <td class="entry_description">
11178               <p>GPS coordinates to include in output JPEG
11179 EXIF.<wbr/></p>
11180             </td>
11181
11182             <td class="entry_units">
11183             </td>
11184
11185             <td class="entry_range">
11186               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11187             </td>
11188
11189             <td class="entry_hal_version">
11190               <p>3.<wbr/>2</p>
11191             </td>
11192
11193             <td class="entry_tags">
11194               <ul class="entry_tags">
11195                   <li><a href="#tag_BC">BC</a></li>
11196               </ul>
11197             </td>
11198
11199           </tr>
11200
11201
11202           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11203            <!-- end of entry -->
11204         
11205                 
11206           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11207             <td class="entry_name
11208              " rowspan="1">
11209               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11210             </td>
11211             <td class="entry_type">
11212                 <span class="entry_type_name">byte</span>
11213
11214               <span class="entry_type_visibility"> [ndk_public as string]</span>
11215
11216
11217               <span class="entry_type_hwlevel">[legacy] </span>
11218
11219
11220
11221
11222             </td> <!-- entry_type -->
11223
11224             <td class="entry_description">
11225               <p>32 characters describing GPS algorithm to
11226 include in EXIF.<wbr/></p>
11227             </td>
11228
11229             <td class="entry_units">
11230               UTF-8 null-terminated string
11231             </td>
11232
11233             <td class="entry_range">
11234             </td>
11235
11236             <td class="entry_hal_version">
11237               <p>3.<wbr/>2</p>
11238             </td>
11239
11240             <td class="entry_tags">
11241               <ul class="entry_tags">
11242                   <li><a href="#tag_BC">BC</a></li>
11243               </ul>
11244             </td>
11245
11246           </tr>
11247
11248
11249           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11250            <!-- end of entry -->
11251         
11252                 
11253           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11254             <td class="entry_name
11255              " rowspan="1">
11256               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11257             </td>
11258             <td class="entry_type">
11259                 <span class="entry_type_name">int64</span>
11260
11261               <span class="entry_type_visibility"> [ndk_public]</span>
11262
11263
11264               <span class="entry_type_hwlevel">[legacy] </span>
11265
11266
11267
11268
11269             </td> <!-- entry_type -->
11270
11271             <td class="entry_description">
11272               <p>Time GPS fix was made to include in
11273 EXIF.<wbr/></p>
11274             </td>
11275
11276             <td class="entry_units">
11277               UTC in seconds since January 1,<wbr/> 1970
11278             </td>
11279
11280             <td class="entry_range">
11281             </td>
11282
11283             <td class="entry_hal_version">
11284               <p>3.<wbr/>2</p>
11285             </td>
11286
11287             <td class="entry_tags">
11288               <ul class="entry_tags">
11289                   <li><a href="#tag_BC">BC</a></li>
11290               </ul>
11291             </td>
11292
11293           </tr>
11294
11295
11296           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11297            <!-- end of entry -->
11298         
11299                 
11300           <tr class="entry" id="controls_android.jpeg.orientation">
11301             <td class="entry_name
11302              " rowspan="3">
11303               android.<wbr/>jpeg.<wbr/>orientation
11304             </td>
11305             <td class="entry_type">
11306                 <span class="entry_type_name">int32</span>
11307
11308               <span class="entry_type_visibility"> [public]</span>
11309
11310
11311               <span class="entry_type_hwlevel">[legacy] </span>
11312
11313
11314
11315
11316             </td> <!-- entry_type -->
11317
11318             <td class="entry_description">
11319               <p>The orientation for a JPEG image.<wbr/></p>
11320             </td>
11321
11322             <td class="entry_units">
11323               Degrees in multiples of 90
11324             </td>
11325
11326             <td class="entry_range">
11327               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11328             </td>
11329
11330             <td class="entry_hal_version">
11331               <p>3.<wbr/>2</p>
11332             </td>
11333
11334             <td class="entry_tags">
11335               <ul class="entry_tags">
11336                   <li><a href="#tag_BC">BC</a></li>
11337               </ul>
11338             </td>
11339
11340           </tr>
11341           <tr class="entries_header">
11342             <th class="th_details" colspan="6">Details</th>
11343           </tr>
11344           <tr class="entry_cont">
11345             <td class="entry_details" colspan="6">
11346               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11347 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11348 upright.<wbr/></p>
11349 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11350 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11351 the thumbnail data will also be rotated.<wbr/></p>
11352 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11353 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11354 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11355 sample code may be used:</p>
11356 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11357     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11358     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11359
11360     //<wbr/> Round device orientation to a multiple of 90
11361     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11362
11363     //<wbr/> Reverse device orientation for front-facing cameras
11364     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11365     if (facingFront) deviceOrientation = -deviceOrientation;
11366
11367     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11368     //<wbr/> the image upright relative to the device orientation
11369     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11370
11371     return jpegOrientation;
11372 }
11373 </code></pre>
11374             </td>
11375           </tr>
11376
11377
11378           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11379            <!-- end of entry -->
11380         
11381                 
11382           <tr class="entry" id="controls_android.jpeg.quality">
11383             <td class="entry_name
11384              " rowspan="3">
11385               android.<wbr/>jpeg.<wbr/>quality
11386             </td>
11387             <td class="entry_type">
11388                 <span class="entry_type_name">byte</span>
11389
11390               <span class="entry_type_visibility"> [public]</span>
11391
11392
11393               <span class="entry_type_hwlevel">[legacy] </span>
11394
11395
11396
11397
11398             </td> <!-- entry_type -->
11399
11400             <td class="entry_description">
11401               <p>Compression quality of the final JPEG
11402 image.<wbr/></p>
11403             </td>
11404
11405             <td class="entry_units">
11406             </td>
11407
11408             <td class="entry_range">
11409               <p>1-100; larger is higher quality</p>
11410             </td>
11411
11412             <td class="entry_hal_version">
11413               <p>3.<wbr/>2</p>
11414             </td>
11415
11416             <td class="entry_tags">
11417               <ul class="entry_tags">
11418                   <li><a href="#tag_BC">BC</a></li>
11419               </ul>
11420             </td>
11421
11422           </tr>
11423           <tr class="entries_header">
11424             <th class="th_details" colspan="6">Details</th>
11425           </tr>
11426           <tr class="entry_cont">
11427             <td class="entry_details" colspan="6">
11428               <p>85-95 is typical usage range.<wbr/></p>
11429             </td>
11430           </tr>
11431
11432
11433           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11434            <!-- end of entry -->
11435         
11436                 
11437           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11438             <td class="entry_name
11439              " rowspan="1">
11440               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11441             </td>
11442             <td class="entry_type">
11443                 <span class="entry_type_name">byte</span>
11444
11445               <span class="entry_type_visibility"> [public]</span>
11446
11447
11448               <span class="entry_type_hwlevel">[legacy] </span>
11449
11450
11451
11452
11453             </td> <!-- entry_type -->
11454
11455             <td class="entry_description">
11456               <p>Compression quality of JPEG
11457 thumbnail.<wbr/></p>
11458             </td>
11459
11460             <td class="entry_units">
11461             </td>
11462
11463             <td class="entry_range">
11464               <p>1-100; larger is higher quality</p>
11465             </td>
11466
11467             <td class="entry_hal_version">
11468               <p>3.<wbr/>2</p>
11469             </td>
11470
11471             <td class="entry_tags">
11472               <ul class="entry_tags">
11473                   <li><a href="#tag_BC">BC</a></li>
11474               </ul>
11475             </td>
11476
11477           </tr>
11478
11479
11480           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11481            <!-- end of entry -->
11482         
11483                 
11484           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11485             <td class="entry_name
11486              " rowspan="5">
11487               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11488             </td>
11489             <td class="entry_type">
11490                 <span class="entry_type_name">int32</span>
11491                 <span class="entry_type_container">x</span>
11492
11493                 <span class="entry_type_array">
11494                   2
11495                 </span>
11496               <span class="entry_type_visibility"> [public as size]</span>
11497
11498
11499               <span class="entry_type_hwlevel">[legacy] </span>
11500
11501
11502
11503
11504             </td> <!-- entry_type -->
11505
11506             <td class="entry_description">
11507               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11508             </td>
11509
11510             <td class="entry_units">
11511             </td>
11512
11513             <td class="entry_range">
11514               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11515             </td>
11516
11517             <td class="entry_hal_version">
11518               <p>3.<wbr/>2</p>
11519             </td>
11520
11521             <td class="entry_tags">
11522               <ul class="entry_tags">
11523                   <li><a href="#tag_BC">BC</a></li>
11524               </ul>
11525             </td>
11526
11527           </tr>
11528           <tr class="entries_header">
11529             <th class="th_details" colspan="6">Details</th>
11530           </tr>
11531           <tr class="entry_cont">
11532             <td class="entry_details" colspan="6">
11533               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11534 but the captured JPEG will still be a valid image.<wbr/></p>
11535 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11536 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11537 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11538 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11539 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11540 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11541 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11542 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11543 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11544 the camera device will handle thumbnail rotation in one of the following ways:</p>
11545 <ul>
11546 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11547   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11548 <li>Rotate the jpeg and thumbnail image data and not set
11549   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11550   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11551   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11552   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11553   size.<wbr/></li>
11554 </ul>
11555             </td>
11556           </tr>
11557
11558           <tr class="entries_header">
11559             <th class="th_details" colspan="6">HAL Implementation Details</th>
11560           </tr>
11561           <tr class="entry_cont">
11562             <td class="entry_details" colspan="6">
11563               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11564 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11565 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11566 thumbnail image cropping.<wbr/></p>
11567             </td>
11568           </tr>
11569
11570           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11571            <!-- end of entry -->
11572         
11573         
11574
11575       <!-- end of kind -->
11576       </tbody>
11577       <tr><td colspan="7" class="kind">static</td></tr>
11578
11579       <thead class="entries_header">
11580         <tr>
11581           <th class="th_name">Property Name</th>
11582           <th class="th_type">Type</th>
11583           <th class="th_description">Description</th>
11584           <th class="th_units">Units</th>
11585           <th class="th_range">Range</th>
11586           <th class="th_hal_version">Initial HIDL HAL version</th>
11587           <th class="th_tags">Tags</th>
11588         </tr>
11589       </thead>
11590
11591       <tbody>
11592
11593         
11594
11595         
11596
11597         
11598
11599         
11600
11601                 
11602           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11603             <td class="entry_name
11604              " rowspan="3">
11605               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11606             </td>
11607             <td class="entry_type">
11608                 <span class="entry_type_name">int32</span>
11609                 <span class="entry_type_container">x</span>
11610
11611                 <span class="entry_type_array">
11612                   2 x n
11613                 </span>
11614               <span class="entry_type_visibility"> [public as size]</span>
11615
11616
11617               <span class="entry_type_hwlevel">[legacy] </span>
11618
11619
11620
11621
11622             </td> <!-- entry_type -->
11623
11624             <td class="entry_description">
11625               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11626 camera device.<wbr/></p>
11627             </td>
11628
11629             <td class="entry_units">
11630             </td>
11631
11632             <td class="entry_range">
11633             </td>
11634
11635             <td class="entry_hal_version">
11636               <p>3.<wbr/>2</p>
11637             </td>
11638
11639             <td class="entry_tags">
11640               <ul class="entry_tags">
11641                   <li><a href="#tag_BC">BC</a></li>
11642               </ul>
11643             </td>
11644
11645           </tr>
11646           <tr class="entries_header">
11647             <th class="th_details" colspan="6">Details</th>
11648           </tr>
11649           <tr class="entry_cont">
11650             <td class="entry_details" colspan="6">
11651               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11652 thumbnail should be generated.<wbr/></p>
11653 <p>Below condiditions will be satisfied for this size list:</p>
11654 <ul>
11655 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11656 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11657 <li>The aspect ratio of the largest thumbnail size will be same as the
11658 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/>
11659 The largest size is defined as the size that has the largest pixel area
11660 in a given size list.<wbr/></li>
11661 <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
11662 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11663 and vice versa.<wbr/></li>
11664 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11665 </ul>
11666             </td>
11667           </tr>
11668
11669
11670           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11671            <!-- end of entry -->
11672         
11673                 
11674           <tr class="entry" id="static_android.jpeg.maxSize">
11675             <td class="entry_name
11676              " rowspan="3">
11677               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11678             </td>
11679             <td class="entry_type">
11680                 <span class="entry_type_name">int32</span>
11681
11682               <span class="entry_type_visibility"> [system]</span>
11683
11684
11685
11686
11687
11688
11689             </td> <!-- entry_type -->
11690
11691             <td class="entry_description">
11692               <p>Maximum size in bytes for the compressed
11693 JPEG buffer</p>
11694             </td>
11695
11696             <td class="entry_units">
11697             </td>
11698
11699             <td class="entry_range">
11700               <p>Must be large enough to fit any JPEG produced by
11701 the camera</p>
11702             </td>
11703
11704             <td class="entry_hal_version">
11705               <p>3.<wbr/>2</p>
11706             </td>
11707
11708             <td class="entry_tags">
11709             </td>
11710
11711           </tr>
11712           <tr class="entries_header">
11713             <th class="th_details" colspan="6">Details</th>
11714           </tr>
11715           <tr class="entry_cont">
11716             <td class="entry_details" colspan="6">
11717               <p>This is used for sizing the gralloc buffers for
11718 JPEG</p>
11719             </td>
11720           </tr>
11721
11722
11723           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11724            <!-- end of entry -->
11725         
11726         
11727
11728       <!-- end of kind -->
11729       </tbody>
11730       <tr><td colspan="7" class="kind">dynamic</td></tr>
11731
11732       <thead class="entries_header">
11733         <tr>
11734           <th class="th_name">Property Name</th>
11735           <th class="th_type">Type</th>
11736           <th class="th_description">Description</th>
11737           <th class="th_units">Units</th>
11738           <th class="th_range">Range</th>
11739           <th class="th_hal_version">Initial HIDL HAL version</th>
11740           <th class="th_tags">Tags</th>
11741         </tr>
11742       </thead>
11743
11744       <tbody>
11745
11746         
11747
11748         
11749
11750         
11751
11752         
11753
11754                 
11755           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11756             <td class="entry_name
11757              " rowspan="3">
11758               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11759             </td>
11760             <td class="entry_type">
11761                 <span class="entry_type_name">byte</span>
11762
11763               <span class="entry_type_visibility"> [java_public as location]</span>
11764
11765               <span class="entry_type_synthetic">[synthetic] </span>
11766
11767               <span class="entry_type_hwlevel">[legacy] </span>
11768
11769
11770
11771
11772             </td> <!-- entry_type -->
11773
11774             <td class="entry_description">
11775               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11776             </td>
11777
11778             <td class="entry_units">
11779             </td>
11780
11781             <td class="entry_range">
11782             </td>
11783
11784             <td class="entry_hal_version">
11785               <p>3.<wbr/>2</p>
11786             </td>
11787
11788             <td class="entry_tags">
11789             </td>
11790
11791           </tr>
11792           <tr class="entries_header">
11793             <th class="th_details" colspan="6">Details</th>
11794           </tr>
11795           <tr class="entry_cont">
11796             <td class="entry_details" colspan="6">
11797               <p>Setting a location object in a request will include the GPS coordinates of the location
11798 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11799 viewed by anyone who receives the JPEG image.<wbr/></p>
11800             </td>
11801           </tr>
11802
11803
11804           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11805            <!-- end of entry -->
11806         
11807                 
11808           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11809             <td class="entry_name
11810              " rowspan="1">
11811               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11812             </td>
11813             <td class="entry_type">
11814                 <span class="entry_type_name">double</span>
11815                 <span class="entry_type_container">x</span>
11816
11817                 <span class="entry_type_array">
11818                   3
11819                 </span>
11820               <span class="entry_type_visibility"> [ndk_public]</span>
11821
11822
11823               <span class="entry_type_hwlevel">[legacy] </span>
11824
11825
11826                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11827
11828
11829             </td> <!-- entry_type -->
11830
11831             <td class="entry_description">
11832               <p>GPS coordinates to include in output JPEG
11833 EXIF.<wbr/></p>
11834             </td>
11835
11836             <td class="entry_units">
11837             </td>
11838
11839             <td class="entry_range">
11840               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11841             </td>
11842
11843             <td class="entry_hal_version">
11844               <p>3.<wbr/>2</p>
11845             </td>
11846
11847             <td class="entry_tags">
11848               <ul class="entry_tags">
11849                   <li><a href="#tag_BC">BC</a></li>
11850               </ul>
11851             </td>
11852
11853           </tr>
11854
11855
11856           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11857            <!-- end of entry -->
11858         
11859                 
11860           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11861             <td class="entry_name
11862              " rowspan="1">
11863               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11864             </td>
11865             <td class="entry_type">
11866                 <span class="entry_type_name">byte</span>
11867
11868               <span class="entry_type_visibility"> [ndk_public as string]</span>
11869
11870
11871               <span class="entry_type_hwlevel">[legacy] </span>
11872
11873
11874
11875
11876             </td> <!-- entry_type -->
11877
11878             <td class="entry_description">
11879               <p>32 characters describing GPS algorithm to
11880 include in EXIF.<wbr/></p>
11881             </td>
11882
11883             <td class="entry_units">
11884               UTF-8 null-terminated string
11885             </td>
11886
11887             <td class="entry_range">
11888             </td>
11889
11890             <td class="entry_hal_version">
11891               <p>3.<wbr/>2</p>
11892             </td>
11893
11894             <td class="entry_tags">
11895               <ul class="entry_tags">
11896                   <li><a href="#tag_BC">BC</a></li>
11897               </ul>
11898             </td>
11899
11900           </tr>
11901
11902
11903           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11904            <!-- end of entry -->
11905         
11906                 
11907           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11908             <td class="entry_name
11909              " rowspan="1">
11910               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11911             </td>
11912             <td class="entry_type">
11913                 <span class="entry_type_name">int64</span>
11914
11915               <span class="entry_type_visibility"> [ndk_public]</span>
11916
11917
11918               <span class="entry_type_hwlevel">[legacy] </span>
11919
11920
11921
11922
11923             </td> <!-- entry_type -->
11924
11925             <td class="entry_description">
11926               <p>Time GPS fix was made to include in
11927 EXIF.<wbr/></p>
11928             </td>
11929
11930             <td class="entry_units">
11931               UTC in seconds since January 1,<wbr/> 1970
11932             </td>
11933
11934             <td class="entry_range">
11935             </td>
11936
11937             <td class="entry_hal_version">
11938               <p>3.<wbr/>2</p>
11939             </td>
11940
11941             <td class="entry_tags">
11942               <ul class="entry_tags">
11943                   <li><a href="#tag_BC">BC</a></li>
11944               </ul>
11945             </td>
11946
11947           </tr>
11948
11949
11950           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11951            <!-- end of entry -->
11952         
11953                 
11954           <tr class="entry" id="dynamic_android.jpeg.orientation">
11955             <td class="entry_name
11956              " rowspan="3">
11957               android.<wbr/>jpeg.<wbr/>orientation
11958             </td>
11959             <td class="entry_type">
11960                 <span class="entry_type_name">int32</span>
11961
11962               <span class="entry_type_visibility"> [public]</span>
11963
11964
11965               <span class="entry_type_hwlevel">[legacy] </span>
11966
11967
11968
11969
11970             </td> <!-- entry_type -->
11971
11972             <td class="entry_description">
11973               <p>The orientation for a JPEG image.<wbr/></p>
11974             </td>
11975
11976             <td class="entry_units">
11977               Degrees in multiples of 90
11978             </td>
11979
11980             <td class="entry_range">
11981               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11982             </td>
11983
11984             <td class="entry_hal_version">
11985               <p>3.<wbr/>2</p>
11986             </td>
11987
11988             <td class="entry_tags">
11989               <ul class="entry_tags">
11990                   <li><a href="#tag_BC">BC</a></li>
11991               </ul>
11992             </td>
11993
11994           </tr>
11995           <tr class="entries_header">
11996             <th class="th_details" colspan="6">Details</th>
11997           </tr>
11998           <tr class="entry_cont">
11999             <td class="entry_details" colspan="6">
12000               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12001 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12002 upright.<wbr/></p>
12003 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12004 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12005 the thumbnail data will also be rotated.<wbr/></p>
12006 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12007 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12008 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12009 sample code may be used:</p>
12010 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12011     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12012     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12013
12014     //<wbr/> Round device orientation to a multiple of 90
12015     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12016
12017     //<wbr/> Reverse device orientation for front-facing cameras
12018     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12019     if (facingFront) deviceOrientation = -deviceOrientation;
12020
12021     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12022     //<wbr/> the image upright relative to the device orientation
12023     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12024
12025     return jpegOrientation;
12026 }
12027 </code></pre>
12028             </td>
12029           </tr>
12030
12031
12032           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12033            <!-- end of entry -->
12034         
12035                 
12036           <tr class="entry" id="dynamic_android.jpeg.quality">
12037             <td class="entry_name
12038              " rowspan="3">
12039               android.<wbr/>jpeg.<wbr/>quality
12040             </td>
12041             <td class="entry_type">
12042                 <span class="entry_type_name">byte</span>
12043
12044               <span class="entry_type_visibility"> [public]</span>
12045
12046
12047               <span class="entry_type_hwlevel">[legacy] </span>
12048
12049
12050
12051
12052             </td> <!-- entry_type -->
12053
12054             <td class="entry_description">
12055               <p>Compression quality of the final JPEG
12056 image.<wbr/></p>
12057             </td>
12058
12059             <td class="entry_units">
12060             </td>
12061
12062             <td class="entry_range">
12063               <p>1-100; larger is higher quality</p>
12064             </td>
12065
12066             <td class="entry_hal_version">
12067               <p>3.<wbr/>2</p>
12068             </td>
12069
12070             <td class="entry_tags">
12071               <ul class="entry_tags">
12072                   <li><a href="#tag_BC">BC</a></li>
12073               </ul>
12074             </td>
12075
12076           </tr>
12077           <tr class="entries_header">
12078             <th class="th_details" colspan="6">Details</th>
12079           </tr>
12080           <tr class="entry_cont">
12081             <td class="entry_details" colspan="6">
12082               <p>85-95 is typical usage range.<wbr/></p>
12083             </td>
12084           </tr>
12085
12086
12087           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12088            <!-- end of entry -->
12089         
12090                 
12091           <tr class="entry" id="dynamic_android.jpeg.size">
12092             <td class="entry_name
12093              " rowspan="3">
12094               android.<wbr/>jpeg.<wbr/>size
12095             </td>
12096             <td class="entry_type">
12097                 <span class="entry_type_name">int32</span>
12098
12099               <span class="entry_type_visibility"> [system]</span>
12100
12101
12102
12103
12104
12105
12106             </td> <!-- entry_type -->
12107
12108             <td class="entry_description">
12109               <p>The size of the compressed JPEG image,<wbr/> in
12110 bytes</p>
12111             </td>
12112
12113             <td class="entry_units">
12114             </td>
12115
12116             <td class="entry_range">
12117               <p>&gt;= 0</p>
12118             </td>
12119
12120             <td class="entry_hal_version">
12121               <p>3.<wbr/>2</p>
12122             </td>
12123
12124             <td class="entry_tags">
12125               <ul class="entry_tags">
12126                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12127               </ul>
12128             </td>
12129
12130           </tr>
12131           <tr class="entries_header">
12132             <th class="th_details" colspan="6">Details</th>
12133           </tr>
12134           <tr class="entry_cont">
12135             <td class="entry_details" colspan="6">
12136               <p>If no JPEG output is produced for the request,<wbr/>
12137 this must be 0.<wbr/></p>
12138 <p>Otherwise,<wbr/> this describes the real size of the compressed
12139 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12140 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12141 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12142 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12143 500000 make up the real data.<wbr/></p>
12144             </td>
12145           </tr>
12146
12147
12148           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12149            <!-- end of entry -->
12150         
12151                 
12152           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12153             <td class="entry_name
12154              " rowspan="1">
12155               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12156             </td>
12157             <td class="entry_type">
12158                 <span class="entry_type_name">byte</span>
12159
12160               <span class="entry_type_visibility"> [public]</span>
12161
12162
12163               <span class="entry_type_hwlevel">[legacy] </span>
12164
12165
12166
12167
12168             </td> <!-- entry_type -->
12169
12170             <td class="entry_description">
12171               <p>Compression quality of JPEG
12172 thumbnail.<wbr/></p>
12173             </td>
12174
12175             <td class="entry_units">
12176             </td>
12177
12178             <td class="entry_range">
12179               <p>1-100; larger is higher quality</p>
12180             </td>
12181
12182             <td class="entry_hal_version">
12183               <p>3.<wbr/>2</p>
12184             </td>
12185
12186             <td class="entry_tags">
12187               <ul class="entry_tags">
12188                   <li><a href="#tag_BC">BC</a></li>
12189               </ul>
12190             </td>
12191
12192           </tr>
12193
12194
12195           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12196            <!-- end of entry -->
12197         
12198                 
12199           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12200             <td class="entry_name
12201              " rowspan="5">
12202               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12203             </td>
12204             <td class="entry_type">
12205                 <span class="entry_type_name">int32</span>
12206                 <span class="entry_type_container">x</span>
12207
12208                 <span class="entry_type_array">
12209                   2
12210                 </span>
12211               <span class="entry_type_visibility"> [public as size]</span>
12212
12213
12214               <span class="entry_type_hwlevel">[legacy] </span>
12215
12216
12217
12218
12219             </td> <!-- entry_type -->
12220
12221             <td class="entry_description">
12222               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12223             </td>
12224
12225             <td class="entry_units">
12226             </td>
12227
12228             <td class="entry_range">
12229               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12230             </td>
12231
12232             <td class="entry_hal_version">
12233               <p>3.<wbr/>2</p>
12234             </td>
12235
12236             <td class="entry_tags">
12237               <ul class="entry_tags">
12238                   <li><a href="#tag_BC">BC</a></li>
12239               </ul>
12240             </td>
12241
12242           </tr>
12243           <tr class="entries_header">
12244             <th class="th_details" colspan="6">Details</th>
12245           </tr>
12246           <tr class="entry_cont">
12247             <td class="entry_details" colspan="6">
12248               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12249 but the captured JPEG will still be a valid image.<wbr/></p>
12250 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12251 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12252 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12253 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12254 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12255 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12256 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12257 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12258 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12259 the camera device will handle thumbnail rotation in one of the following ways:</p>
12260 <ul>
12261 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12262   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12263 <li>Rotate the jpeg and thumbnail image data and not set
12264   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12265   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12266   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12267   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12268   size.<wbr/></li>
12269 </ul>
12270             </td>
12271           </tr>
12272
12273           <tr class="entries_header">
12274             <th class="th_details" colspan="6">HAL Implementation Details</th>
12275           </tr>
12276           <tr class="entry_cont">
12277             <td class="entry_details" colspan="6">
12278               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12279 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12280 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12281 thumbnail image cropping.<wbr/></p>
12282             </td>
12283           </tr>
12284
12285           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12286            <!-- end of entry -->
12287         
12288         
12289
12290       <!-- end of kind -->
12291       </tbody>
12292
12293   <!-- end of section -->
12294   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12295
12296
12297       <tr><td colspan="7" class="kind">controls</td></tr>
12298
12299       <thead class="entries_header">
12300         <tr>
12301           <th class="th_name">Property Name</th>
12302           <th class="th_type">Type</th>
12303           <th class="th_description">Description</th>
12304           <th class="th_units">Units</th>
12305           <th class="th_range">Range</th>
12306           <th class="th_hal_version">Initial HIDL HAL version</th>
12307           <th class="th_tags">Tags</th>
12308         </tr>
12309       </thead>
12310
12311       <tbody>
12312
12313         
12314
12315         
12316
12317         
12318
12319         
12320
12321                 
12322           <tr class="entry" id="controls_android.lens.aperture">
12323             <td class="entry_name
12324              " rowspan="3">
12325               android.<wbr/>lens.<wbr/>aperture
12326             </td>
12327             <td class="entry_type">
12328                 <span class="entry_type_name">float</span>
12329
12330               <span class="entry_type_visibility"> [public]</span>
12331
12332
12333               <span class="entry_type_hwlevel">[full] </span>
12334
12335
12336
12337
12338             </td> <!-- entry_type -->
12339
12340             <td class="entry_description">
12341               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12342 effective aperture diameter.<wbr/></p>
12343             </td>
12344
12345             <td class="entry_units">
12346               The f-number (f/<wbr/>N)
12347             </td>
12348
12349             <td class="entry_range">
12350               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</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_V1">V1</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>Setting this value is only supported on the camera devices that have a variable
12370 aperture lens.<wbr/></p>
12371 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12372 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12373 <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>
12374 to achieve manual exposure control.<wbr/></p>
12375 <p>The requested aperture value may take several frames to reach the
12376 requested value; the camera device will report the current (intermediate)
12377 aperture size in capture result metadata while the aperture is changing.<wbr/>
12378 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>
12379 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12380 the ON modes,<wbr/> this will be overridden by the camera device
12381 auto-exposure algorithm,<wbr/> the overridden values are then provided
12382 back to the user in the corresponding result.<wbr/></p>
12383             </td>
12384           </tr>
12385
12386
12387           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12388            <!-- end of entry -->
12389         
12390                 
12391           <tr class="entry" id="controls_android.lens.filterDensity">
12392             <td class="entry_name
12393              " rowspan="3">
12394               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12395             </td>
12396             <td class="entry_type">
12397                 <span class="entry_type_name">float</span>
12398
12399               <span class="entry_type_visibility"> [public]</span>
12400
12401
12402               <span class="entry_type_hwlevel">[full] </span>
12403
12404
12405
12406
12407             </td> <!-- entry_type -->
12408
12409             <td class="entry_description">
12410               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12411             </td>
12412
12413             <td class="entry_units">
12414               Exposure Value (EV)
12415             </td>
12416
12417             <td class="entry_range">
12418               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12419             </td>
12420
12421             <td class="entry_hal_version">
12422               <p>3.<wbr/>2</p>
12423             </td>
12424
12425             <td class="entry_tags">
12426               <ul class="entry_tags">
12427                   <li><a href="#tag_V1">V1</a></li>
12428               </ul>
12429             </td>
12430
12431           </tr>
12432           <tr class="entries_header">
12433             <th class="th_details" colspan="6">Details</th>
12434           </tr>
12435           <tr class="entry_cont">
12436             <td class="entry_details" colspan="6">
12437               <p>This control will not be supported on most camera devices.<wbr/></p>
12438 <p>Lens filters are typically used to lower the amount of light the
12439 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12440 step is the standard logarithmic representation,<wbr/> which are
12441 non-negative,<wbr/> and inversely proportional to the amount of light
12442 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12443 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12444 mean that the filter is set to reduce incoming light by two stops
12445 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12446 <p>It may take several frames before the lens filter density changes
12447 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12448 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12449             </td>
12450           </tr>
12451
12452
12453           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12454            <!-- end of entry -->
12455         
12456                 
12457           <tr class="entry" id="controls_android.lens.focalLength">
12458             <td class="entry_name
12459              " rowspan="3">
12460               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12461             </td>
12462             <td class="entry_type">
12463                 <span class="entry_type_name">float</span>
12464
12465               <span class="entry_type_visibility"> [public]</span>
12466
12467
12468               <span class="entry_type_hwlevel">[legacy] </span>
12469
12470
12471
12472
12473             </td> <!-- entry_type -->
12474
12475             <td class="entry_description">
12476               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12477             </td>
12478
12479             <td class="entry_units">
12480               Millimeters
12481             </td>
12482
12483             <td class="entry_range">
12484               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12485             </td>
12486
12487             <td class="entry_hal_version">
12488               <p>3.<wbr/>2</p>
12489             </td>
12490
12491             <td class="entry_tags">
12492               <ul class="entry_tags">
12493                   <li><a href="#tag_V1">V1</a></li>
12494               </ul>
12495             </td>
12496
12497           </tr>
12498           <tr class="entries_header">
12499             <th class="th_details" colspan="6">Details</th>
12500           </tr>
12501           <tr class="entry_cont">
12502             <td class="entry_details" colspan="6">
12503               <p>This setting controls the physical focal length of the camera
12504 device's lens.<wbr/> Changing the focal length changes the field of
12505 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12506 <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
12507 setting won't be applied instantaneously,<wbr/> and it may take several
12508 frames before the lens can change to the requested focal length.<wbr/>
12509 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12510 be set to MOVING.<wbr/></p>
12511 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12512             </td>
12513           </tr>
12514
12515
12516           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12517            <!-- end of entry -->
12518         
12519                 
12520           <tr class="entry" id="controls_android.lens.focusDistance">
12521             <td class="entry_name
12522              " rowspan="3">
12523               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12524             </td>
12525             <td class="entry_type">
12526                 <span class="entry_type_name">float</span>
12527
12528               <span class="entry_type_visibility"> [public]</span>
12529
12530
12531               <span class="entry_type_hwlevel">[full] </span>
12532
12533
12534
12535
12536             </td> <!-- entry_type -->
12537
12538             <td class="entry_description">
12539               <p>Desired distance to plane of sharpest focus,<wbr/>
12540 measured from frontmost surface of the lens.<wbr/></p>
12541             </td>
12542
12543             <td class="entry_units">
12544               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12545             </td>
12546
12547             <td class="entry_range">
12548               <p>&gt;= 0</p>
12549             </td>
12550
12551             <td class="entry_hal_version">
12552               <p>3.<wbr/>2</p>
12553             </td>
12554
12555             <td class="entry_tags">
12556               <ul class="entry_tags">
12557                   <li><a href="#tag_BC">BC</a></li>
12558                   <li><a href="#tag_V1">V1</a></li>
12559               </ul>
12560             </td>
12561
12562           </tr>
12563           <tr class="entries_header">
12564             <th class="th_details" colspan="6">Details</th>
12565           </tr>
12566           <tr class="entry_cont">
12567             <td class="entry_details" colspan="6">
12568               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12569 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12570 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12571 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12572 <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>
12573 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12574 instantaneously,<wbr/> and it may take several frames before the lens
12575 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12576 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12577 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12578 for infinity focus.<wbr/></p>
12579             </td>
12580           </tr>
12581
12582
12583           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12584            <!-- end of entry -->
12585         
12586                 
12587           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12588             <td class="entry_name
12589              " rowspan="3">
12590               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12591             </td>
12592             <td class="entry_type">
12593                 <span class="entry_type_name entry_type_name_enum">byte</span>
12594
12595               <span class="entry_type_visibility"> [public]</span>
12596
12597
12598               <span class="entry_type_hwlevel">[limited] </span>
12599
12600
12601
12602                 <ul class="entry_type_enum">
12603                   <li>
12604                     <span class="entry_type_enum_name">OFF</span>
12605                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12606                   </li>
12607                   <li>
12608                     <span class="entry_type_enum_name">ON</span>
12609                     <span class="entry_type_enum_optional">[optional]</span>
12610                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12611                   </li>
12612                 </ul>
12613
12614             </td> <!-- entry_type -->
12615
12616             <td class="entry_description">
12617               <p>Sets whether the camera device uses optical image stabilization (OIS)
12618 when capturing images.<wbr/></p>
12619             </td>
12620
12621             <td class="entry_units">
12622             </td>
12623
12624             <td class="entry_range">
12625               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12626             </td>
12627
12628             <td class="entry_hal_version">
12629               <p>3.<wbr/>2</p>
12630             </td>
12631
12632             <td class="entry_tags">
12633               <ul class="entry_tags">
12634                   <li><a href="#tag_V1">V1</a></li>
12635               </ul>
12636             </td>
12637
12638           </tr>
12639           <tr class="entries_header">
12640             <th class="th_details" colspan="6">Details</th>
12641           </tr>
12642           <tr class="entry_cont">
12643             <td class="entry_details" colspan="6">
12644               <p>OIS is used to compensate for motion blur due to small
12645 movements of the camera during capture.<wbr/> Unlike digital image
12646 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12647 makes use of mechanical elements to stabilize the camera
12648 sensor,<wbr/> and thus allows for longer exposure times before
12649 camera shake becomes apparent.<wbr/></p>
12650 <p>Switching between different optical stabilization modes may take several
12651 frames to initialize,<wbr/> the camera device will report the current mode in
12652 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12653 optical stabilization modes in the first several capture results may still
12654 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12655 <p>If a camera device supports both OIS and digital image stabilization
12656 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12657 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12658 <p>Not all devices will support OIS; see
12659 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12660 available controls.<wbr/></p>
12661             </td>
12662           </tr>
12663
12664
12665           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12666            <!-- end of entry -->
12667         
12668         
12669
12670       <!-- end of kind -->
12671       </tbody>
12672       <tr><td colspan="7" class="kind">static</td></tr>
12673
12674       <thead class="entries_header">
12675         <tr>
12676           <th class="th_name">Property Name</th>
12677           <th class="th_type">Type</th>
12678           <th class="th_description">Description</th>
12679           <th class="th_units">Units</th>
12680           <th class="th_range">Range</th>
12681           <th class="th_hal_version">Initial HIDL HAL version</th>
12682           <th class="th_tags">Tags</th>
12683         </tr>
12684       </thead>
12685
12686       <tbody>
12687
12688         
12689
12690         
12691
12692         
12693
12694         
12695                 
12696             
12697
12698                 
12699           <tr class="entry" id="static_android.lens.info.availableApertures">
12700             <td class="entry_name
12701              " rowspan="3">
12702               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12703             </td>
12704             <td class="entry_type">
12705                 <span class="entry_type_name">float</span>
12706                 <span class="entry_type_container">x</span>
12707
12708                 <span class="entry_type_array">
12709                   n
12710                 </span>
12711               <span class="entry_type_visibility"> [public]</span>
12712
12713
12714               <span class="entry_type_hwlevel">[full] </span>
12715
12716
12717
12718
12719             </td> <!-- entry_type -->
12720
12721             <td class="entry_description">
12722               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12723 supported by this camera device.<wbr/></p>
12724             </td>
12725
12726             <td class="entry_units">
12727               The aperture f-number
12728             </td>
12729
12730             <td class="entry_range">
12731             </td>
12732
12733             <td class="entry_hal_version">
12734               <p>3.<wbr/>2</p>
12735             </td>
12736
12737             <td class="entry_tags">
12738               <ul class="entry_tags">
12739                   <li><a href="#tag_V1">V1</a></li>
12740               </ul>
12741             </td>
12742
12743           </tr>
12744           <tr class="entries_header">
12745             <th class="th_details" colspan="6">Details</th>
12746           </tr>
12747           <tr class="entry_cont">
12748             <td class="entry_details" colspan="6">
12749               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12750 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12751 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12752 in this list will be sorted in ascending order.<wbr/></p>
12753             </td>
12754           </tr>
12755
12756
12757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12758            <!-- end of entry -->
12759         
12760                 
12761           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12762             <td class="entry_name
12763              " rowspan="3">
12764               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12765             </td>
12766             <td class="entry_type">
12767                 <span class="entry_type_name">float</span>
12768                 <span class="entry_type_container">x</span>
12769
12770                 <span class="entry_type_array">
12771                   n
12772                 </span>
12773               <span class="entry_type_visibility"> [public]</span>
12774
12775
12776               <span class="entry_type_hwlevel">[full] </span>
12777
12778
12779
12780
12781             </td> <!-- entry_type -->
12782
12783             <td class="entry_description">
12784               <p>List of neutral density filter values for
12785 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12786             </td>
12787
12788             <td class="entry_units">
12789               Exposure value (EV)
12790             </td>
12791
12792             <td class="entry_range">
12793               <p>Values are &gt;= 0</p>
12794             </td>
12795
12796             <td class="entry_hal_version">
12797               <p>3.<wbr/>2</p>
12798             </td>
12799
12800             <td class="entry_tags">
12801               <ul class="entry_tags">
12802                   <li><a href="#tag_V1">V1</a></li>
12803               </ul>
12804             </td>
12805
12806           </tr>
12807           <tr class="entries_header">
12808             <th class="th_details" colspan="6">Details</th>
12809           </tr>
12810           <tr class="entry_cont">
12811             <td class="entry_details" colspan="6">
12812               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12813 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12814 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12815             </td>
12816           </tr>
12817
12818
12819           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12820            <!-- end of entry -->
12821         
12822                 
12823           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12824             <td class="entry_name
12825              " rowspan="3">
12826               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12827             </td>
12828             <td class="entry_type">
12829                 <span class="entry_type_name">float</span>
12830                 <span class="entry_type_container">x</span>
12831
12832                 <span class="entry_type_array">
12833                   n
12834                 </span>
12835               <span class="entry_type_visibility"> [public]</span>
12836
12837
12838               <span class="entry_type_hwlevel">[legacy] </span>
12839
12840
12841                 <div class="entry_type_notes">The list of available focal lengths</div>
12842
12843
12844             </td> <!-- entry_type -->
12845
12846             <td class="entry_description">
12847               <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
12848 device.<wbr/></p>
12849             </td>
12850
12851             <td class="entry_units">
12852               Millimeters
12853             </td>
12854
12855             <td class="entry_range">
12856               <p>Values are &gt; 0</p>
12857             </td>
12858
12859             <td class="entry_hal_version">
12860               <p>3.<wbr/>2</p>
12861             </td>
12862
12863             <td class="entry_tags">
12864               <ul class="entry_tags">
12865                   <li><a href="#tag_BC">BC</a></li>
12866                   <li><a href="#tag_V1">V1</a></li>
12867               </ul>
12868             </td>
12869
12870           </tr>
12871           <tr class="entries_header">
12872             <th class="th_details" colspan="6">Details</th>
12873           </tr>
12874           <tr class="entry_cont">
12875             <td class="entry_details" colspan="6">
12876               <p>If optical zoom is not supported,<wbr/> this list will only contain
12877 a single value corresponding to the fixed focal length of the
12878 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12879 by the camera device,<wbr/> in ascending order.<wbr/></p>
12880             </td>
12881           </tr>
12882
12883
12884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12885            <!-- end of entry -->
12886         
12887                 
12888           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12889             <td class="entry_name
12890              " rowspan="3">
12891               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12892             </td>
12893             <td class="entry_type">
12894                 <span class="entry_type_name">byte</span>
12895                 <span class="entry_type_container">x</span>
12896
12897                 <span class="entry_type_array">
12898                   n
12899                 </span>
12900               <span class="entry_type_visibility"> [public as enumList]</span>
12901
12902
12903               <span class="entry_type_hwlevel">[limited] </span>
12904
12905
12906                 <div class="entry_type_notes">list of enums</div>
12907
12908
12909             </td> <!-- entry_type -->
12910
12911             <td class="entry_description">
12912               <p>List of optical image stabilization (OIS) modes for
12913 <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>
12914             </td>
12915
12916             <td class="entry_units">
12917             </td>
12918
12919             <td class="entry_range">
12920               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12921             </td>
12922
12923             <td class="entry_hal_version">
12924               <p>3.<wbr/>2</p>
12925             </td>
12926
12927             <td class="entry_tags">
12928               <ul class="entry_tags">
12929                   <li><a href="#tag_V1">V1</a></li>
12930               </ul>
12931             </td>
12932
12933           </tr>
12934           <tr class="entries_header">
12935             <th class="th_details" colspan="6">Details</th>
12936           </tr>
12937           <tr class="entry_cont">
12938             <td class="entry_details" colspan="6">
12939               <p>If OIS is not supported by a given camera device,<wbr/> this list will
12940 contain only OFF.<wbr/></p>
12941             </td>
12942           </tr>
12943
12944
12945           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12946            <!-- end of entry -->
12947         
12948                 
12949           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12950             <td class="entry_name
12951              " rowspan="3">
12952               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12953             </td>
12954             <td class="entry_type">
12955                 <span class="entry_type_name">float</span>
12956
12957               <span class="entry_type_visibility"> [public]</span>
12958
12959
12960               <span class="entry_type_hwlevel">[limited] </span>
12961
12962
12963
12964
12965             </td> <!-- entry_type -->
12966
12967             <td class="entry_description">
12968               <p>Hyperfocal distance for this lens.<wbr/></p>
12969             </td>
12970
12971             <td class="entry_units">
12972               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12973             </td>
12974
12975             <td class="entry_range">
12976               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12977 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>
12978             </td>
12979
12980             <td class="entry_hal_version">
12981               <p>3.<wbr/>2</p>
12982             </td>
12983
12984             <td class="entry_tags">
12985             </td>
12986
12987           </tr>
12988           <tr class="entries_header">
12989             <th class="th_details" colspan="6">Details</th>
12990           </tr>
12991           <tr class="entry_cont">
12992             <td class="entry_details" colspan="6">
12993               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12994 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>
12995             </td>
12996           </tr>
12997
12998
12999           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13000            <!-- end of entry -->
13001         
13002                 
13003           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13004             <td class="entry_name
13005              " rowspan="5">
13006               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13007             </td>
13008             <td class="entry_type">
13009                 <span class="entry_type_name">float</span>
13010
13011               <span class="entry_type_visibility"> [public]</span>
13012
13013
13014               <span class="entry_type_hwlevel">[limited] </span>
13015
13016
13017
13018
13019             </td> <!-- entry_type -->
13020
13021             <td class="entry_description">
13022               <p>Shortest distance from frontmost surface
13023 of the lens that can be brought into sharp focus.<wbr/></p>
13024             </td>
13025
13026             <td class="entry_units">
13027               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13028             </td>
13029
13030             <td class="entry_range">
13031               <p>&gt;= 0</p>
13032             </td>
13033
13034             <td class="entry_hal_version">
13035               <p>3.<wbr/>2</p>
13036             </td>
13037
13038             <td class="entry_tags">
13039               <ul class="entry_tags">
13040                   <li><a href="#tag_V1">V1</a></li>
13041               </ul>
13042             </td>
13043
13044           </tr>
13045           <tr class="entries_header">
13046             <th class="th_details" colspan="6">Details</th>
13047           </tr>
13048           <tr class="entry_cont">
13049             <td class="entry_details" colspan="6">
13050               <p>If the lens is fixed-focus,<wbr/> this will be
13051 0.<wbr/></p>
13052             </td>
13053           </tr>
13054
13055           <tr class="entries_header">
13056             <th class="th_details" colspan="6">HAL Implementation Details</th>
13057           </tr>
13058           <tr class="entry_cont">
13059             <td class="entry_details" colspan="6">
13060               <p>Mandatory for FULL devices; LIMITED devices
13061 must always set this value to 0 for fixed-focus; and may omit
13062 the minimum focus distance otherwise.<wbr/></p>
13063 <p>This field is also mandatory for all devices advertising
13064 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13065             </td>
13066           </tr>
13067
13068           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13069            <!-- end of entry -->
13070         
13071                 
13072           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13073             <td class="entry_name
13074              " rowspan="3">
13075               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13076             </td>
13077             <td class="entry_type">
13078                 <span class="entry_type_name">int32</span>
13079                 <span class="entry_type_container">x</span>
13080
13081                 <span class="entry_type_array">
13082                   2
13083                 </span>
13084               <span class="entry_type_visibility"> [ndk_public as size]</span>
13085
13086
13087               <span class="entry_type_hwlevel">[full] </span>
13088
13089
13090                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13091
13092
13093             </td> <!-- entry_type -->
13094
13095             <td class="entry_description">
13096               <p>Dimensions of lens shading map.<wbr/></p>
13097             </td>
13098
13099             <td class="entry_units">
13100             </td>
13101
13102             <td class="entry_range">
13103               <p>Both values &gt;= 1</p>
13104             </td>
13105
13106             <td class="entry_hal_version">
13107               <p>3.<wbr/>2</p>
13108             </td>
13109
13110             <td class="entry_tags">
13111               <ul class="entry_tags">
13112                   <li><a href="#tag_V1">V1</a></li>
13113               </ul>
13114             </td>
13115
13116           </tr>
13117           <tr class="entries_header">
13118             <th class="th_details" colspan="6">Details</th>
13119           </tr>
13120           <tr class="entry_cont">
13121             <td class="entry_details" colspan="6">
13122               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13123 must be smaller than 64x64.<wbr/></p>
13124             </td>
13125           </tr>
13126
13127
13128           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13129            <!-- end of entry -->
13130         
13131                 
13132           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13133             <td class="entry_name
13134              " rowspan="5">
13135               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13136             </td>
13137             <td class="entry_type">
13138                 <span class="entry_type_name entry_type_name_enum">byte</span>
13139
13140               <span class="entry_type_visibility"> [public]</span>
13141
13142
13143               <span class="entry_type_hwlevel">[limited] </span>
13144
13145
13146
13147                 <ul class="entry_type_enum">
13148                   <li>
13149                     <span class="entry_type_enum_name">UNCALIBRATED</span>
13150                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13151 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13152 <p>Setting the lens to the same focus distance on separate occasions may
13153 result in a different real focus distance,<wbr/> depending on factors such
13154 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13155 and the device temperature.<wbr/> The focus distance value will still be
13156 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
13157 represents the farthest focus.<wbr/></p></span>
13158                   </li>
13159                   <li>
13160                     <span class="entry_type_enum_name">APPROXIMATE</span>
13161                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13162 <p>However,<wbr/> setting the lens to the same focus distance
13163 on separate occasions may result in a different real
13164 focus distance,<wbr/> depending on factors such as the
13165 orientation of the device,<wbr/> the age of the focusing
13166 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13167                   </li>
13168                   <li>
13169                     <span class="entry_type_enum_name">CALIBRATED</span>
13170                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13171 is calibrated.<wbr/></p>
13172 <p>The lens mechanism is calibrated so that setting the
13173 same focus distance is repeatable on multiple
13174 occasions with good accuracy,<wbr/> and the focus distance
13175 corresponds to the real physical distance to the plane
13176 of best focus.<wbr/></p></span>
13177                   </li>
13178                 </ul>
13179
13180             </td> <!-- entry_type -->
13181
13182             <td class="entry_description">
13183               <p>The lens focus distance calibration quality.<wbr/></p>
13184             </td>
13185
13186             <td class="entry_units">
13187             </td>
13188
13189             <td class="entry_range">
13190             </td>
13191
13192             <td class="entry_hal_version">
13193               <p>3.<wbr/>2</p>
13194             </td>
13195
13196             <td class="entry_tags">
13197               <ul class="entry_tags">
13198                   <li><a href="#tag_V1">V1</a></li>
13199               </ul>
13200             </td>
13201
13202           </tr>
13203           <tr class="entries_header">
13204             <th class="th_details" colspan="6">Details</th>
13205           </tr>
13206           <tr class="entry_cont">
13207             <td class="entry_details" colspan="6">
13208               <p>The lens focus distance calibration quality determines the reliability of
13209 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13210 <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
13211 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13212 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13213 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13214 and increasing positive numbers represent focusing closer and closer
13215 to the camera device.<wbr/> The focus distance control also uses diopters
13216 on these devices.<wbr/></p>
13217 <p>UNCALIBRATED devices do not use units that are directly comparable
13218 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13219 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13220 nearest focus the device can achieve.<wbr/></p>
13221             </td>
13222           </tr>
13223
13224           <tr class="entries_header">
13225             <th class="th_details" colspan="6">HAL Implementation Details</th>
13226           </tr>
13227           <tr class="entry_cont">
13228             <td class="entry_details" colspan="6">
13229               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13230 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13231 and the lens focus distance is set to 0 diopters
13232 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13233 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13234 lens some time to move; during the move the lens state should be MOVING and
13235 the output diopter value should be changing toward 0.<wbr/></p>
13236             </td>
13237           </tr>
13238
13239           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13240            <!-- end of entry -->
13241         
13242         
13243         
13244
13245                 
13246           <tr class="entry" id="static_android.lens.facing">
13247             <td class="entry_name
13248              " rowspan="1">
13249               android.<wbr/>lens.<wbr/>facing
13250             </td>
13251             <td class="entry_type">
13252                 <span class="entry_type_name entry_type_name_enum">byte</span>
13253
13254               <span class="entry_type_visibility"> [public]</span>
13255
13256
13257               <span class="entry_type_hwlevel">[legacy] </span>
13258
13259
13260
13261                 <ul class="entry_type_enum">
13262                   <li>
13263                     <span class="entry_type_enum_name">FRONT</span>
13264                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13265                   </li>
13266                   <li>
13267                     <span class="entry_type_enum_name">BACK</span>
13268                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13269                   </li>
13270                   <li>
13271                     <span class="entry_type_enum_name">EXTERNAL</span>
13272                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13273 device's screen.<wbr/></p></span>
13274                   </li>
13275                 </ul>
13276
13277             </td> <!-- entry_type -->
13278
13279             <td class="entry_description">
13280               <p>Direction the camera faces relative to
13281 device screen.<wbr/></p>
13282             </td>
13283
13284             <td class="entry_units">
13285             </td>
13286
13287             <td class="entry_range">
13288             </td>
13289
13290             <td class="entry_hal_version">
13291               <p>3.<wbr/>2</p>
13292             </td>
13293
13294             <td class="entry_tags">
13295             </td>
13296
13297           </tr>
13298
13299
13300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13301            <!-- end of entry -->
13302         
13303                 
13304           <tr class="entry" id="static_android.lens.poseRotation">
13305             <td class="entry_name
13306              " rowspan="3">
13307               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13308             </td>
13309             <td class="entry_type">
13310                 <span class="entry_type_name">float</span>
13311                 <span class="entry_type_container">x</span>
13312
13313                 <span class="entry_type_array">
13314                   4
13315                 </span>
13316               <span class="entry_type_visibility"> [public]</span>
13317
13318
13319
13320
13321
13322
13323             </td> <!-- entry_type -->
13324
13325             <td class="entry_description">
13326               <p>The orientation of the camera relative to the sensor
13327 coordinate system.<wbr/></p>
13328             </td>
13329
13330             <td class="entry_units">
13331               
13332             Quaternion coefficients
13333           
13334             </td>
13335
13336             <td class="entry_range">
13337             </td>
13338
13339             <td class="entry_hal_version">
13340               <p>3.<wbr/>2</p>
13341             </td>
13342
13343             <td class="entry_tags">
13344               <ul class="entry_tags">
13345                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13346               </ul>
13347             </td>
13348
13349           </tr>
13350           <tr class="entries_header">
13351             <th class="th_details" colspan="6">Details</th>
13352           </tr>
13353           <tr class="entry_cont">
13354             <td class="entry_details" colspan="6">
13355               <p>The four coefficients that describe the quaternion
13356 rotation from the Android sensor coordinate system to a
13357 camera-aligned coordinate system where the X-axis is
13358 aligned with the long side of the image sensor,<wbr/> the Y-axis
13359 is aligned with the short side of the image sensor,<wbr/> and
13360 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13361 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13362 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13363 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13364 <pre><code> theta = 2 * acos(w)
13365 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13366 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13367 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13368 </code></pre>
13369 <p>To create a 3x3 rotation matrix that applies the rotation
13370 defined by this quaternion,<wbr/> the following matrix can be
13371 used:</p>
13372 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13373            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13374            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13375 </code></pre>
13376 <p>This matrix can then be used to apply the rotation to a
13377  column vector point with</p>
13378 <p><code>p' = Rp</code></p>
13379 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13380  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13381             </td>
13382           </tr>
13383
13384
13385           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13386            <!-- end of entry -->
13387         
13388                 
13389           <tr class="entry" id="static_android.lens.poseTranslation">
13390             <td class="entry_name
13391              " rowspan="3">
13392               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13393             </td>
13394             <td class="entry_type">
13395                 <span class="entry_type_name">float</span>
13396                 <span class="entry_type_container">x</span>
13397
13398                 <span class="entry_type_array">
13399                   3
13400                 </span>
13401               <span class="entry_type_visibility"> [public]</span>
13402
13403
13404
13405
13406
13407
13408             </td> <!-- entry_type -->
13409
13410             <td class="entry_description">
13411               <p>Position of the camera optical center.<wbr/></p>
13412             </td>
13413
13414             <td class="entry_units">
13415               Meters
13416             </td>
13417
13418             <td class="entry_range">
13419             </td>
13420
13421             <td class="entry_hal_version">
13422               <p>3.<wbr/>2</p>
13423             </td>
13424
13425             <td class="entry_tags">
13426               <ul class="entry_tags">
13427                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13428               </ul>
13429             </td>
13430
13431           </tr>
13432           <tr class="entries_header">
13433             <th class="th_details" colspan="6">Details</th>
13434           </tr>
13435           <tr class="entry_cont">
13436             <td class="entry_details" colspan="6">
13437               <p>The position of the camera device's lens optical center,<wbr/>
13438 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13439 optical center of the largest camera device facing in the
13440 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13441 axes</a>.<wbr/> Note that only the axis definitions are shared with
13442 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13443 <p>If this device is the largest or only camera device with a
13444 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13445 camera device with a lens optical center located 3 cm from
13446 the main sensor along the +X axis (to the right from the
13447 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13448 <p>To transform a pixel coordinates between two cameras
13449 facing the same direction,<wbr/> first the source camera
13450 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13451 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13452 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13453 of the source camera,<wbr/> the translation of the source camera
13454 relative to the destination camera,<wbr/> the
13455 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13456 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13457 of the destination camera.<wbr/> This obtains a
13458 radial-distortion-free coordinate in the destination
13459 camera pixel coordinates.<wbr/></p>
13460 <p>To compare this against a real image from the destination
13461 camera,<wbr/> the destination camera image then needs to be
13462 corrected for radial distortion before comparison or
13463 sampling.<wbr/></p>
13464             </td>
13465           </tr>
13466
13467
13468           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13469            <!-- end of entry -->
13470         
13471                 
13472           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13473             <td class="entry_name
13474              " rowspan="3">
13475               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13476             </td>
13477             <td class="entry_type">
13478                 <span class="entry_type_name">float</span>
13479                 <span class="entry_type_container">x</span>
13480
13481                 <span class="entry_type_array">
13482                   5
13483                 </span>
13484               <span class="entry_type_visibility"> [public]</span>
13485
13486
13487
13488
13489
13490
13491             </td> <!-- entry_type -->
13492
13493             <td class="entry_description">
13494               <p>The parameters for this camera device's intrinsic
13495 calibration.<wbr/></p>
13496             </td>
13497
13498             <td class="entry_units">
13499               
13500             Pixels in the
13501             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13502             coordinate system.<wbr/>
13503           
13504             </td>
13505
13506             <td class="entry_range">
13507             </td>
13508
13509             <td class="entry_hal_version">
13510               <p>3.<wbr/>2</p>
13511             </td>
13512
13513             <td class="entry_tags">
13514               <ul class="entry_tags">
13515                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13516               </ul>
13517             </td>
13518
13519           </tr>
13520           <tr class="entries_header">
13521             <th class="th_details" colspan="6">Details</th>
13522           </tr>
13523           <tr class="entry_cont">
13524             <td class="entry_details" colspan="6">
13525               <p>The five calibration parameters that describe the
13526 transform from camera-centric 3D coordinates to sensor
13527 pixel coordinates:</p>
13528 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13529 </code></pre>
13530 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13531 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13532 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13533 being aligned with the lens plane.<wbr/></p>
13534 <p>These are typically used within a transformation matrix K:</p>
13535 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13536        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13537        0    0,<wbr/>   1 ]
13538 </code></pre>
13539 <p>which can then be combined with the camera pose rotation
13540 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13541 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13542 complete transform from world coordinates to pixel
13543 coordinates:</p>
13544 <pre><code>P = [ K 0   * [ R t
13545      0 1 ]     0 1 ]
13546 </code></pre>
13547 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13548 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13549 coordinate system,<wbr/> and with the mapping including the
13550 homogeneous division by z:</p>
13551 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13552 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13553 </code></pre>
13554 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13555 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13556 (depth) in pixel coordinates.<wbr/></p>
13557 <p>Note that the coordinate system for this transform is the
13558 <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/>
13559 where <code>(0,<wbr/>0)</code> is the top-left of the
13560 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13561 intrinsic calibration transforms have been applied to a
13562 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13563 transform needs to be applied,<wbr/> and the result adjusted to
13564 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13565 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13566 activeArraySize rectangle),<wbr/> to determine the final pixel
13567 coordinate of the world point for processed (non-RAW)
13568 output buffers.<wbr/></p>
13569             </td>
13570           </tr>
13571
13572
13573           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13574            <!-- end of entry -->
13575         
13576                 
13577           <tr class="entry" id="static_android.lens.radialDistortion">
13578             <td class="entry_name
13579              " rowspan="3">
13580               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13581             </td>
13582             <td class="entry_type">
13583                 <span class="entry_type_name">float</span>
13584                 <span class="entry_type_container">x</span>
13585
13586                 <span class="entry_type_array">
13587                   6
13588                 </span>
13589               <span class="entry_type_visibility"> [public]</span>
13590
13591
13592
13593
13594
13595
13596             </td> <!-- entry_type -->
13597
13598             <td class="entry_description">
13599               <p>The correction coefficients to correct for this camera device's
13600 radial and tangential lens distortion.<wbr/></p>
13601             </td>
13602
13603             <td class="entry_units">
13604               
13605             Unitless coefficients.<wbr/>
13606           
13607             </td>
13608
13609             <td class="entry_range">
13610             </td>
13611
13612             <td class="entry_hal_version">
13613               <p>3.<wbr/>2</p>
13614             </td>
13615
13616             <td class="entry_tags">
13617               <ul class="entry_tags">
13618                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13619               </ul>
13620             </td>
13621
13622           </tr>
13623           <tr class="entries_header">
13624             <th class="th_details" colspan="6">Details</th>
13625           </tr>
13626           <tr class="entry_cont">
13627             <td class="entry_details" colspan="6">
13628               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13629 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13630 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13631 lens's geometric distortion with the mapping equations:</p>
13632 <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 ) +
13633        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13634  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13635        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13636 </code></pre>
13637 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13638 input image that correspond to the pixel values in the
13639 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13640 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13641 </code></pre>
13642 <p>The pixel coordinates are defined in a normalized
13643 coordinate system related to the
13644 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13645 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
13646 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13647 of both x and y coordinates are normalized to be 1 at the
13648 edge further from the optical center,<wbr/> so the range
13649 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13650 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13651 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13652 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13653 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13654             </td>
13655           </tr>
13656
13657
13658           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13659            <!-- end of entry -->
13660         
13661         
13662
13663       <!-- end of kind -->
13664       </tbody>
13665       <tr><td colspan="7" class="kind">dynamic</td></tr>
13666
13667       <thead class="entries_header">
13668         <tr>
13669           <th class="th_name">Property Name</th>
13670           <th class="th_type">Type</th>
13671           <th class="th_description">Description</th>
13672           <th class="th_units">Units</th>
13673           <th class="th_range">Range</th>
13674           <th class="th_hal_version">Initial HIDL HAL version</th>
13675           <th class="th_tags">Tags</th>
13676         </tr>
13677       </thead>
13678
13679       <tbody>
13680
13681         
13682
13683         
13684
13685         
13686
13687         
13688
13689                 
13690           <tr class="entry" id="dynamic_android.lens.aperture">
13691             <td class="entry_name
13692              " rowspan="3">
13693               android.<wbr/>lens.<wbr/>aperture
13694             </td>
13695             <td class="entry_type">
13696                 <span class="entry_type_name">float</span>
13697
13698               <span class="entry_type_visibility"> [public]</span>
13699
13700
13701               <span class="entry_type_hwlevel">[full] </span>
13702
13703
13704
13705
13706             </td> <!-- entry_type -->
13707
13708             <td class="entry_description">
13709               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13710 effective aperture diameter.<wbr/></p>
13711             </td>
13712
13713             <td class="entry_units">
13714               The f-number (f/<wbr/>N)
13715             </td>
13716
13717             <td class="entry_range">
13718               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13719             </td>
13720
13721             <td class="entry_hal_version">
13722               <p>3.<wbr/>2</p>
13723             </td>
13724
13725             <td class="entry_tags">
13726               <ul class="entry_tags">
13727                   <li><a href="#tag_V1">V1</a></li>
13728               </ul>
13729             </td>
13730
13731           </tr>
13732           <tr class="entries_header">
13733             <th class="th_details" colspan="6">Details</th>
13734           </tr>
13735           <tr class="entry_cont">
13736             <td class="entry_details" colspan="6">
13737               <p>Setting this value is only supported on the camera devices that have a variable
13738 aperture lens.<wbr/></p>
13739 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13740 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13741 <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>
13742 to achieve manual exposure control.<wbr/></p>
13743 <p>The requested aperture value may take several frames to reach the
13744 requested value; the camera device will report the current (intermediate)
13745 aperture size in capture result metadata while the aperture is changing.<wbr/>
13746 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>
13747 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13748 the ON modes,<wbr/> this will be overridden by the camera device
13749 auto-exposure algorithm,<wbr/> the overridden values are then provided
13750 back to the user in the corresponding result.<wbr/></p>
13751             </td>
13752           </tr>
13753
13754
13755           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13756            <!-- end of entry -->
13757         
13758                 
13759           <tr class="entry" id="dynamic_android.lens.filterDensity">
13760             <td class="entry_name
13761              " rowspan="3">
13762               android.<wbr/>lens.<wbr/>filter<wbr/>Density
13763             </td>
13764             <td class="entry_type">
13765                 <span class="entry_type_name">float</span>
13766
13767               <span class="entry_type_visibility"> [public]</span>
13768
13769
13770               <span class="entry_type_hwlevel">[full] </span>
13771
13772
13773
13774
13775             </td> <!-- entry_type -->
13776
13777             <td class="entry_description">
13778               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13779             </td>
13780
13781             <td class="entry_units">
13782               Exposure Value (EV)
13783             </td>
13784
13785             <td class="entry_range">
13786               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13787             </td>
13788
13789             <td class="entry_hal_version">
13790               <p>3.<wbr/>2</p>
13791             </td>
13792
13793             <td class="entry_tags">
13794               <ul class="entry_tags">
13795                   <li><a href="#tag_V1">V1</a></li>
13796               </ul>
13797             </td>
13798
13799           </tr>
13800           <tr class="entries_header">
13801             <th class="th_details" colspan="6">Details</th>
13802           </tr>
13803           <tr class="entry_cont">
13804             <td class="entry_details" colspan="6">
13805               <p>This control will not be supported on most camera devices.<wbr/></p>
13806 <p>Lens filters are typically used to lower the amount of light the
13807 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13808 step is the standard logarithmic representation,<wbr/> which are
13809 non-negative,<wbr/> and inversely proportional to the amount of light
13810 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13811 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13812 mean that the filter is set to reduce incoming light by two stops
13813 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13814 <p>It may take several frames before the lens filter density changes
13815 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13816 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13817             </td>
13818           </tr>
13819
13820
13821           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13822            <!-- end of entry -->
13823         
13824                 
13825           <tr class="entry" id="dynamic_android.lens.focalLength">
13826             <td class="entry_name
13827              " rowspan="3">
13828               android.<wbr/>lens.<wbr/>focal<wbr/>Length
13829             </td>
13830             <td class="entry_type">
13831                 <span class="entry_type_name">float</span>
13832
13833               <span class="entry_type_visibility"> [public]</span>
13834
13835
13836               <span class="entry_type_hwlevel">[legacy] </span>
13837
13838
13839
13840
13841             </td> <!-- entry_type -->
13842
13843             <td class="entry_description">
13844               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13845             </td>
13846
13847             <td class="entry_units">
13848               Millimeters
13849             </td>
13850
13851             <td class="entry_range">
13852               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13853             </td>
13854
13855             <td class="entry_hal_version">
13856               <p>3.<wbr/>2</p>
13857             </td>
13858
13859             <td class="entry_tags">
13860               <ul class="entry_tags">
13861                   <li><a href="#tag_BC">BC</a></li>
13862               </ul>
13863             </td>
13864
13865           </tr>
13866           <tr class="entries_header">
13867             <th class="th_details" colspan="6">Details</th>
13868           </tr>
13869           <tr class="entry_cont">
13870             <td class="entry_details" colspan="6">
13871               <p>This setting controls the physical focal length of the camera
13872 device's lens.<wbr/> Changing the focal length changes the field of
13873 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13874 <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
13875 setting won't be applied instantaneously,<wbr/> and it may take several
13876 frames before the lens can change to the requested focal length.<wbr/>
13877 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13878 be set to MOVING.<wbr/></p>
13879 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13880             </td>
13881           </tr>
13882
13883
13884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13885            <!-- end of entry -->
13886         
13887                 
13888           <tr class="entry" id="dynamic_android.lens.focusDistance">
13889             <td class="entry_name
13890              " rowspan="3">
13891               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13892             </td>
13893             <td class="entry_type">
13894                 <span class="entry_type_name">float</span>
13895
13896               <span class="entry_type_visibility"> [public]</span>
13897
13898
13899               <span class="entry_type_hwlevel">[full] </span>
13900
13901
13902
13903
13904             </td> <!-- entry_type -->
13905
13906             <td class="entry_description">
13907               <p>Desired distance to plane of sharpest focus,<wbr/>
13908 measured from frontmost surface of the lens.<wbr/></p>
13909             </td>
13910
13911             <td class="entry_units">
13912               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13913             </td>
13914
13915             <td class="entry_range">
13916               <p>&gt;= 0</p>
13917             </td>
13918
13919             <td class="entry_hal_version">
13920               <p>3.<wbr/>2</p>
13921             </td>
13922
13923             <td class="entry_tags">
13924               <ul class="entry_tags">
13925                   <li><a href="#tag_BC">BC</a></li>
13926               </ul>
13927             </td>
13928
13929           </tr>
13930           <tr class="entries_header">
13931             <th class="th_details" colspan="6">Details</th>
13932           </tr>
13933           <tr class="entry_cont">
13934             <td class="entry_details" colspan="6">
13935               <p>Should be zero for fixed-focus cameras</p>
13936             </td>
13937           </tr>
13938
13939
13940           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13941            <!-- end of entry -->
13942         
13943                 
13944           <tr class="entry" id="dynamic_android.lens.focusRange">
13945             <td class="entry_name
13946              " rowspan="3">
13947               android.<wbr/>lens.<wbr/>focus<wbr/>Range
13948             </td>
13949             <td class="entry_type">
13950                 <span class="entry_type_name">float</span>
13951                 <span class="entry_type_container">x</span>
13952
13953                 <span class="entry_type_array">
13954                   2
13955                 </span>
13956               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13957
13958
13959               <span class="entry_type_hwlevel">[limited] </span>
13960
13961
13962                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13963
13964
13965             </td> <!-- entry_type -->
13966
13967             <td class="entry_description">
13968               <p>The range of scene distances that are in
13969 sharp focus (depth of field).<wbr/></p>
13970             </td>
13971
13972             <td class="entry_units">
13973               A pair of focus distances in diopters: (near,<wbr/>
13974           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13975             </td>
13976
13977             <td class="entry_range">
13978               <p>&gt;=0</p>
13979             </td>
13980
13981             <td class="entry_hal_version">
13982               <p>3.<wbr/>2</p>
13983             </td>
13984
13985             <td class="entry_tags">
13986               <ul class="entry_tags">
13987                   <li><a href="#tag_BC">BC</a></li>
13988               </ul>
13989             </td>
13990
13991           </tr>
13992           <tr class="entries_header">
13993             <th class="th_details" colspan="6">Details</th>
13994           </tr>
13995           <tr class="entry_cont">
13996             <td class="entry_details" colspan="6">
13997               <p>If variable focus not supported,<wbr/> can still report
13998 fixed depth of field range</p>
13999             </td>
14000           </tr>
14001
14002
14003           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14004            <!-- end of entry -->
14005         
14006                 
14007           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14008             <td class="entry_name
14009              " rowspan="3">
14010               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14011             </td>
14012             <td class="entry_type">
14013                 <span class="entry_type_name entry_type_name_enum">byte</span>
14014
14015               <span class="entry_type_visibility"> [public]</span>
14016
14017
14018               <span class="entry_type_hwlevel">[limited] </span>
14019
14020
14021
14022                 <ul class="entry_type_enum">
14023                   <li>
14024                     <span class="entry_type_enum_name">OFF</span>
14025                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14026                   </li>
14027                   <li>
14028                     <span class="entry_type_enum_name">ON</span>
14029                     <span class="entry_type_enum_optional">[optional]</span>
14030                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14031                   </li>
14032                 </ul>
14033
14034             </td> <!-- entry_type -->
14035
14036             <td class="entry_description">
14037               <p>Sets whether the camera device uses optical image stabilization (OIS)
14038 when capturing images.<wbr/></p>
14039             </td>
14040
14041             <td class="entry_units">
14042             </td>
14043
14044             <td class="entry_range">
14045               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14046             </td>
14047
14048             <td class="entry_hal_version">
14049               <p>3.<wbr/>2</p>
14050             </td>
14051
14052             <td class="entry_tags">
14053               <ul class="entry_tags">
14054                   <li><a href="#tag_V1">V1</a></li>
14055               </ul>
14056             </td>
14057
14058           </tr>
14059           <tr class="entries_header">
14060             <th class="th_details" colspan="6">Details</th>
14061           </tr>
14062           <tr class="entry_cont">
14063             <td class="entry_details" colspan="6">
14064               <p>OIS is used to compensate for motion blur due to small
14065 movements of the camera during capture.<wbr/> Unlike digital image
14066 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14067 makes use of mechanical elements to stabilize the camera
14068 sensor,<wbr/> and thus allows for longer exposure times before
14069 camera shake becomes apparent.<wbr/></p>
14070 <p>Switching between different optical stabilization modes may take several
14071 frames to initialize,<wbr/> the camera device will report the current mode in
14072 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14073 optical stabilization modes in the first several capture results may still
14074 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14075 <p>If a camera device supports both OIS and digital image stabilization
14076 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14077 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14078 <p>Not all devices will support OIS; see
14079 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14080 available controls.<wbr/></p>
14081             </td>
14082           </tr>
14083
14084
14085           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14086            <!-- end of entry -->
14087         
14088                 
14089           <tr class="entry" id="dynamic_android.lens.state">
14090             <td class="entry_name
14091              " rowspan="3">
14092               android.<wbr/>lens.<wbr/>state
14093             </td>
14094             <td class="entry_type">
14095                 <span class="entry_type_name entry_type_name_enum">byte</span>
14096
14097               <span class="entry_type_visibility"> [public]</span>
14098
14099
14100               <span class="entry_type_hwlevel">[limited] </span>
14101
14102
14103
14104                 <ul class="entry_type_enum">
14105                   <li>
14106                     <span class="entry_type_enum_name">STATIONARY</span>
14107                     <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/>
14108 <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>
14109                   </li>
14110                   <li>
14111                     <span class="entry_type_enum_name">MOVING</span>
14112                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14113 (<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/>
14114 <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
14115 currently changing.<wbr/></p></span>
14116                   </li>
14117                 </ul>
14118
14119             </td> <!-- entry_type -->
14120
14121             <td class="entry_description">
14122               <p>Current lens status.<wbr/></p>
14123             </td>
14124
14125             <td class="entry_units">
14126             </td>
14127
14128             <td class="entry_range">
14129             </td>
14130
14131             <td class="entry_hal_version">
14132               <p>3.<wbr/>2</p>
14133             </td>
14134
14135             <td class="entry_tags">
14136               <ul class="entry_tags">
14137                   <li><a href="#tag_V1">V1</a></li>
14138               </ul>
14139             </td>
14140
14141           </tr>
14142           <tr class="entries_header">
14143             <th class="th_details" colspan="6">Details</th>
14144           </tr>
14145           <tr class="entry_cont">
14146             <td class="entry_details" colspan="6">
14147               <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/>
14148 <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/>
14149 they may take several frames to reach the requested values.<wbr/> This state indicates
14150 the current status of the lens parameters.<wbr/></p>
14151 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14152 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14153 time to reach the most recently-requested values.<wbr/>
14154 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14155 <ul>
14156 <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
14157 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14158 <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/>
14159 which means the optical zoom is not supported.<wbr/></li>
14160 <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>
14161 <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>
14162 </ul>
14163 <p>Then this state will always be STATIONARY.<wbr/></p>
14164 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14165 is changing.<wbr/></p>
14166             </td>
14167           </tr>
14168
14169
14170           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14171            <!-- end of entry -->
14172         
14173                 
14174           <tr class="entry" id="dynamic_android.lens.poseRotation">
14175             <td class="entry_name
14176              " rowspan="3">
14177               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14178             </td>
14179             <td class="entry_type">
14180                 <span class="entry_type_name">float</span>
14181                 <span class="entry_type_container">x</span>
14182
14183                 <span class="entry_type_array">
14184                   4
14185                 </span>
14186               <span class="entry_type_visibility"> [public]</span>
14187
14188
14189
14190
14191
14192
14193             </td> <!-- entry_type -->
14194
14195             <td class="entry_description">
14196               <p>The orientation of the camera relative to the sensor
14197 coordinate system.<wbr/></p>
14198             </td>
14199
14200             <td class="entry_units">
14201               
14202             Quaternion coefficients
14203           
14204             </td>
14205
14206             <td class="entry_range">
14207             </td>
14208
14209             <td class="entry_hal_version">
14210               <p>3.<wbr/>2</p>
14211             </td>
14212
14213             <td class="entry_tags">
14214               <ul class="entry_tags">
14215                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14216               </ul>
14217             </td>
14218
14219           </tr>
14220           <tr class="entries_header">
14221             <th class="th_details" colspan="6">Details</th>
14222           </tr>
14223           <tr class="entry_cont">
14224             <td class="entry_details" colspan="6">
14225               <p>The four coefficients that describe the quaternion
14226 rotation from the Android sensor coordinate system to a
14227 camera-aligned coordinate system where the X-axis is
14228 aligned with the long side of the image sensor,<wbr/> the Y-axis
14229 is aligned with the short side of the image sensor,<wbr/> and
14230 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14231 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14232 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14233 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14234 <pre><code> theta = 2 * acos(w)
14235 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14236 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14237 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14238 </code></pre>
14239 <p>To create a 3x3 rotation matrix that applies the rotation
14240 defined by this quaternion,<wbr/> the following matrix can be
14241 used:</p>
14242 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14243            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14244            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14245 </code></pre>
14246 <p>This matrix can then be used to apply the rotation to a
14247  column vector point with</p>
14248 <p><code>p' = Rp</code></p>
14249 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14250  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14251             </td>
14252           </tr>
14253
14254
14255           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14256            <!-- end of entry -->
14257         
14258                 
14259           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14260             <td class="entry_name
14261              " rowspan="3">
14262               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14263             </td>
14264             <td class="entry_type">
14265                 <span class="entry_type_name">float</span>
14266                 <span class="entry_type_container">x</span>
14267
14268                 <span class="entry_type_array">
14269                   3
14270                 </span>
14271               <span class="entry_type_visibility"> [public]</span>
14272
14273
14274
14275
14276
14277
14278             </td> <!-- entry_type -->
14279
14280             <td class="entry_description">
14281               <p>Position of the camera optical center.<wbr/></p>
14282             </td>
14283
14284             <td class="entry_units">
14285               Meters
14286             </td>
14287
14288             <td class="entry_range">
14289             </td>
14290
14291             <td class="entry_hal_version">
14292               <p>3.<wbr/>2</p>
14293             </td>
14294
14295             <td class="entry_tags">
14296               <ul class="entry_tags">
14297                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14298               </ul>
14299             </td>
14300
14301           </tr>
14302           <tr class="entries_header">
14303             <th class="th_details" colspan="6">Details</th>
14304           </tr>
14305           <tr class="entry_cont">
14306             <td class="entry_details" colspan="6">
14307               <p>The position of the camera device's lens optical center,<wbr/>
14308 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
14309 optical center of the largest camera device facing in the
14310 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
14311 axes</a>.<wbr/> Note that only the axis definitions are shared with
14312 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
14313 <p>If this device is the largest or only camera device with a
14314 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
14315 camera device with a lens optical center located 3 cm from
14316 the main sensor along the +X axis (to the right from the
14317 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14318 <p>To transform a pixel coordinates between two cameras
14319 facing the same direction,<wbr/> first the source camera
14320 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
14321 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
14322 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
14323 of the source camera,<wbr/> the translation of the source camera
14324 relative to the destination camera,<wbr/> the
14325 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
14326 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14327 of the destination camera.<wbr/> This obtains a
14328 radial-distortion-free coordinate in the destination
14329 camera pixel coordinates.<wbr/></p>
14330 <p>To compare this against a real image from the destination
14331 camera,<wbr/> the destination camera image then needs to be
14332 corrected for radial distortion before comparison or
14333 sampling.<wbr/></p>
14334             </td>
14335           </tr>
14336
14337
14338           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14339            <!-- end of entry -->
14340         
14341                 
14342           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14343             <td class="entry_name
14344              " rowspan="3">
14345               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14346             </td>
14347             <td class="entry_type">
14348                 <span class="entry_type_name">float</span>
14349                 <span class="entry_type_container">x</span>
14350
14351                 <span class="entry_type_array">
14352                   5
14353                 </span>
14354               <span class="entry_type_visibility"> [public]</span>
14355
14356
14357
14358
14359
14360
14361             </td> <!-- entry_type -->
14362
14363             <td class="entry_description">
14364               <p>The parameters for this camera device's intrinsic
14365 calibration.<wbr/></p>
14366             </td>
14367
14368             <td class="entry_units">
14369               
14370             Pixels in the
14371             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14372             coordinate system.<wbr/>
14373           
14374             </td>
14375
14376             <td class="entry_range">
14377             </td>
14378
14379             <td class="entry_hal_version">
14380               <p>3.<wbr/>2</p>
14381             </td>
14382
14383             <td class="entry_tags">
14384               <ul class="entry_tags">
14385                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14386               </ul>
14387             </td>
14388
14389           </tr>
14390           <tr class="entries_header">
14391             <th class="th_details" colspan="6">Details</th>
14392           </tr>
14393           <tr class="entry_cont">
14394             <td class="entry_details" colspan="6">
14395               <p>The five calibration parameters that describe the
14396 transform from camera-centric 3D coordinates to sensor
14397 pixel coordinates:</p>
14398 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14399 </code></pre>
14400 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14401 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14402 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14403 being aligned with the lens plane.<wbr/></p>
14404 <p>These are typically used within a transformation matrix K:</p>
14405 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14406        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14407        0    0,<wbr/>   1 ]
14408 </code></pre>
14409 <p>which can then be combined with the camera pose rotation
14410 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14411 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14412 complete transform from world coordinates to pixel
14413 coordinates:</p>
14414 <pre><code>P = [ K 0   * [ R t
14415      0 1 ]     0 1 ]
14416 </code></pre>
14417 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14418 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14419 coordinate system,<wbr/> and with the mapping including the
14420 homogeneous division by z:</p>
14421 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14422 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14423 </code></pre>
14424 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14425 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14426 (depth) in pixel coordinates.<wbr/></p>
14427 <p>Note that the coordinate system for this transform is the
14428 <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/>
14429 where <code>(0,<wbr/>0)</code> is the top-left of the
14430 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14431 intrinsic calibration transforms have been applied to a
14432 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14433 transform needs to be applied,<wbr/> and the result adjusted to
14434 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14435 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14436 activeArraySize rectangle),<wbr/> to determine the final pixel
14437 coordinate of the world point for processed (non-RAW)
14438 output buffers.<wbr/></p>
14439             </td>
14440           </tr>
14441
14442
14443           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14444            <!-- end of entry -->
14445         
14446                 
14447           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14448             <td class="entry_name
14449              " rowspan="3">
14450               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14451             </td>
14452             <td class="entry_type">
14453                 <span class="entry_type_name">float</span>
14454                 <span class="entry_type_container">x</span>
14455
14456                 <span class="entry_type_array">
14457                   6
14458                 </span>
14459               <span class="entry_type_visibility"> [public]</span>
14460
14461
14462
14463
14464
14465
14466             </td> <!-- entry_type -->
14467
14468             <td class="entry_description">
14469               <p>The correction coefficients to correct for this camera device's
14470 radial and tangential lens distortion.<wbr/></p>
14471             </td>
14472
14473             <td class="entry_units">
14474               
14475             Unitless coefficients.<wbr/>
14476           
14477             </td>
14478
14479             <td class="entry_range">
14480             </td>
14481
14482             <td class="entry_hal_version">
14483               <p>3.<wbr/>2</p>
14484             </td>
14485
14486             <td class="entry_tags">
14487               <ul class="entry_tags">
14488                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14489               </ul>
14490             </td>
14491
14492           </tr>
14493           <tr class="entries_header">
14494             <th class="th_details" colspan="6">Details</th>
14495           </tr>
14496           <tr class="entry_cont">
14497             <td class="entry_details" colspan="6">
14498               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14499 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14500 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14501 lens's geometric distortion with the mapping equations:</p>
14502 <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 ) +
14503        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14504  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14505        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14506 </code></pre>
14507 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14508 input image that correspond to the pixel values in the
14509 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14510 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14511 </code></pre>
14512 <p>The pixel coordinates are defined in a normalized
14513 coordinate system related to the
14514 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14515 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
14516 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14517 of both x and y coordinates are normalized to be 1 at the
14518 edge further from the optical center,<wbr/> so the range
14519 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14520 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14521 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14522 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14523 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14524             </td>
14525           </tr>
14526
14527
14528           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14529            <!-- end of entry -->
14530         
14531         
14532
14533       <!-- end of kind -->
14534       </tbody>
14535
14536   <!-- end of section -->
14537   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14538
14539
14540       <tr><td colspan="7" class="kind">controls</td></tr>
14541
14542       <thead class="entries_header">
14543         <tr>
14544           <th class="th_name">Property Name</th>
14545           <th class="th_type">Type</th>
14546           <th class="th_description">Description</th>
14547           <th class="th_units">Units</th>
14548           <th class="th_range">Range</th>
14549           <th class="th_hal_version">Initial HIDL HAL version</th>
14550           <th class="th_tags">Tags</th>
14551         </tr>
14552       </thead>
14553
14554       <tbody>
14555
14556         
14557
14558         
14559
14560         
14561
14562         
14563
14564                 
14565           <tr class="entry" id="controls_android.noiseReduction.mode">
14566             <td class="entry_name
14567              " rowspan="5">
14568               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14569             </td>
14570             <td class="entry_type">
14571                 <span class="entry_type_name entry_type_name_enum">byte</span>
14572
14573               <span class="entry_type_visibility"> [public]</span>
14574
14575
14576               <span class="entry_type_hwlevel">[full] </span>
14577
14578
14579
14580                 <ul class="entry_type_enum">
14581                   <li>
14582                     <span class="entry_type_enum_name">OFF</span>
14583                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14584                   </li>
14585                   <li>
14586                     <span class="entry_type_enum_name">FAST</span>
14587                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14588 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14589 relative to sensor.<wbr/></p></span>
14590                   </li>
14591                   <li>
14592                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
14593                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14594 rate relative to sensor output.<wbr/></p></span>
14595                   </li>
14596                   <li>
14597                     <span class="entry_type_enum_name">MINIMAL</span>
14598                     <span class="entry_type_enum_optional">[optional]</span>
14599                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14600 sensor output.<wbr/> </p></span>
14601                   </li>
14602                   <li>
14603                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14604                     <span class="entry_type_enum_optional">[optional]</span>
14605                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14606 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>)
14607 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14608 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14609 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14610 and the quality is equal to or better than FAST (since it is only applied to
14611 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14612 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14613 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14614 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14615 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14616 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14617 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14618 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14619 applied for reasonable preview quality.<wbr/></p>
14620 <p>This mode is guaranteed to be supported by devices that support either the
14621 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14622 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14623 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14624                   </li>
14625                 </ul>
14626
14627             </td> <!-- entry_type -->
14628
14629             <td class="entry_description">
14630               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14631             </td>
14632
14633             <td class="entry_units">
14634             </td>
14635
14636             <td class="entry_range">
14637               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14638             </td>
14639
14640             <td class="entry_hal_version">
14641               <p>3.<wbr/>2</p>
14642             </td>
14643
14644             <td class="entry_tags">
14645               <ul class="entry_tags">
14646                   <li><a href="#tag_V1">V1</a></li>
14647                   <li><a href="#tag_REPROC">REPROC</a></li>
14648               </ul>
14649             </td>
14650
14651           </tr>
14652           <tr class="entries_header">
14653             <th class="th_details" colspan="6">Details</th>
14654           </tr>
14655           <tr class="entry_cont">
14656             <td class="entry_details" colspan="6">
14657               <p>The noise reduction algorithm attempts to improve image quality by removing
14658 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14659 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14660 YUV domain.<wbr/></p>
14661 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14662 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14663 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14664 <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>
14665 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14666 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14667 will use the highest-quality noise filtering algorithms,<wbr/>
14668 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14669 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14670 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14671 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14672 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14673 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14674 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14675 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14676 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14677 those will be reprocessed later if necessary.<wbr/></p>
14678 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14679 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14680 may adjust the noise reduction parameters for best image quality based on the
14681 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14682             </td>
14683           </tr>
14684
14685           <tr class="entries_header">
14686             <th class="th_details" colspan="6">HAL Implementation Details</th>
14687           </tr>
14688           <tr class="entry_cont">
14689             <td class="entry_details" colspan="6">
14690               <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
14691 adjust the internal noise reduction parameters appropriately to get the best quality
14692 images.<wbr/></p>
14693             </td>
14694           </tr>
14695
14696           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14697            <!-- end of entry -->
14698         
14699                 
14700           <tr class="entry" id="controls_android.noiseReduction.strength">
14701             <td class="entry_name
14702              " rowspan="1">
14703               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14704             </td>
14705             <td class="entry_type">
14706                 <span class="entry_type_name">byte</span>
14707
14708               <span class="entry_type_visibility"> [system]</span>
14709
14710
14711
14712
14713
14714
14715             </td> <!-- entry_type -->
14716
14717             <td class="entry_description">
14718               <p>Control the amount of noise reduction
14719 applied to the images</p>
14720             </td>
14721
14722             <td class="entry_units">
14723               1-10; 10 is max noise reduction
14724             </td>
14725
14726             <td class="entry_range">
14727               <p>1 - 10</p>
14728             </td>
14729
14730             <td class="entry_hal_version">
14731               <p>3.<wbr/>2</p>
14732             </td>
14733
14734             <td class="entry_tags">
14735               <ul class="entry_tags">
14736                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14737               </ul>
14738             </td>
14739
14740           </tr>
14741
14742
14743           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14744            <!-- end of entry -->
14745         
14746         
14747
14748       <!-- end of kind -->
14749       </tbody>
14750       <tr><td colspan="7" class="kind">static</td></tr>
14751
14752       <thead class="entries_header">
14753         <tr>
14754           <th class="th_name">Property Name</th>
14755           <th class="th_type">Type</th>
14756           <th class="th_description">Description</th>
14757           <th class="th_units">Units</th>
14758           <th class="th_range">Range</th>
14759           <th class="th_hal_version">Initial HIDL HAL version</th>
14760           <th class="th_tags">Tags</th>
14761         </tr>
14762       </thead>
14763
14764       <tbody>
14765
14766         
14767
14768         
14769
14770         
14771
14772         
14773
14774                 
14775           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14776             <td class="entry_name
14777              " rowspan="5">
14778               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14779             </td>
14780             <td class="entry_type">
14781                 <span class="entry_type_name">byte</span>
14782                 <span class="entry_type_container">x</span>
14783
14784                 <span class="entry_type_array">
14785                   n
14786                 </span>
14787               <span class="entry_type_visibility"> [public as enumList]</span>
14788
14789
14790               <span class="entry_type_hwlevel">[limited] </span>
14791
14792
14793                 <div class="entry_type_notes">list of enums</div>
14794
14795
14796             </td> <!-- entry_type -->
14797
14798             <td class="entry_description">
14799               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14800 by this camera device.<wbr/></p>
14801             </td>
14802
14803             <td class="entry_units">
14804             </td>
14805
14806             <td class="entry_range">
14807               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14808             </td>
14809
14810             <td class="entry_hal_version">
14811               <p>3.<wbr/>2</p>
14812             </td>
14813
14814             <td class="entry_tags">
14815               <ul class="entry_tags">
14816                   <li><a href="#tag_V1">V1</a></li>
14817                   <li><a href="#tag_REPROC">REPROC</a></li>
14818               </ul>
14819             </td>
14820
14821           </tr>
14822           <tr class="entries_header">
14823             <th class="th_details" colspan="6">Details</th>
14824           </tr>
14825           <tr class="entry_cont">
14826             <td class="entry_details" colspan="6">
14827               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14828 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14829 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14830 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14831             </td>
14832           </tr>
14833
14834           <tr class="entries_header">
14835             <th class="th_details" colspan="6">HAL Implementation Details</th>
14836           </tr>
14837           <tr class="entry_cont">
14838             <td class="entry_details" colspan="6">
14839               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14840 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14841 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14842 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14843             </td>
14844           </tr>
14845
14846           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14847            <!-- end of entry -->
14848         
14849         
14850
14851       <!-- end of kind -->
14852       </tbody>
14853       <tr><td colspan="7" class="kind">dynamic</td></tr>
14854
14855       <thead class="entries_header">
14856         <tr>
14857           <th class="th_name">Property Name</th>
14858           <th class="th_type">Type</th>
14859           <th class="th_description">Description</th>
14860           <th class="th_units">Units</th>
14861           <th class="th_range">Range</th>
14862           <th class="th_hal_version">Initial HIDL HAL version</th>
14863           <th class="th_tags">Tags</th>
14864         </tr>
14865       </thead>
14866
14867       <tbody>
14868
14869         
14870
14871         
14872
14873         
14874
14875         
14876
14877                 
14878           <tr class="entry" id="dynamic_android.noiseReduction.mode">
14879             <td class="entry_name
14880              " rowspan="5">
14881               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14882             </td>
14883             <td class="entry_type">
14884                 <span class="entry_type_name entry_type_name_enum">byte</span>
14885
14886               <span class="entry_type_visibility"> [public]</span>
14887
14888
14889               <span class="entry_type_hwlevel">[full] </span>
14890
14891
14892
14893                 <ul class="entry_type_enum">
14894                   <li>
14895                     <span class="entry_type_enum_name">OFF</span>
14896                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14897                   </li>
14898                   <li>
14899                     <span class="entry_type_enum_name">FAST</span>
14900                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14901 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14902 relative to sensor.<wbr/></p></span>
14903                   </li>
14904                   <li>
14905                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
14906                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14907 rate relative to sensor output.<wbr/></p></span>
14908                   </li>
14909                   <li>
14910                     <span class="entry_type_enum_name">MINIMAL</span>
14911                     <span class="entry_type_enum_optional">[optional]</span>
14912                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14913 sensor output.<wbr/> </p></span>
14914                   </li>
14915                   <li>
14916                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14917                     <span class="entry_type_enum_optional">[optional]</span>
14918                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14919 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>)
14920 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14921 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14922 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14923 and the quality is equal to or better than FAST (since it is only applied to
14924 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14925 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14926 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14927 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14928 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14929 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14930 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14931 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14932 applied for reasonable preview quality.<wbr/></p>
14933 <p>This mode is guaranteed to be supported by devices that support either the
14934 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14935 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14936 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14937                   </li>
14938                 </ul>
14939
14940             </td> <!-- entry_type -->
14941
14942             <td class="entry_description">
14943               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14944             </td>
14945
14946             <td class="entry_units">
14947             </td>
14948
14949             <td class="entry_range">
14950               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14951             </td>
14952
14953             <td class="entry_hal_version">
14954               <p>3.<wbr/>2</p>
14955             </td>
14956
14957             <td class="entry_tags">
14958               <ul class="entry_tags">
14959                   <li><a href="#tag_V1">V1</a></li>
14960                   <li><a href="#tag_REPROC">REPROC</a></li>
14961               </ul>
14962             </td>
14963
14964           </tr>
14965           <tr class="entries_header">
14966             <th class="th_details" colspan="6">Details</th>
14967           </tr>
14968           <tr class="entry_cont">
14969             <td class="entry_details" colspan="6">
14970               <p>The noise reduction algorithm attempts to improve image quality by removing
14971 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14972 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14973 YUV domain.<wbr/></p>
14974 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14975 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14976 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14977 <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>
14978 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14979 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14980 will use the highest-quality noise filtering algorithms,<wbr/>
14981 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14982 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14983 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14984 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14985 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14986 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14987 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14988 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14989 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14990 those will be reprocessed later if necessary.<wbr/></p>
14991 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14992 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14993 may adjust the noise reduction parameters for best image quality based on the
14994 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14995             </td>
14996           </tr>
14997
14998           <tr class="entries_header">
14999             <th class="th_details" colspan="6">HAL Implementation Details</th>
15000           </tr>
15001           <tr class="entry_cont">
15002             <td class="entry_details" colspan="6">
15003               <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
15004 adjust the internal noise reduction parameters appropriately to get the best quality
15005 images.<wbr/></p>
15006             </td>
15007           </tr>
15008
15009           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15010            <!-- end of entry -->
15011         
15012         
15013
15014       <!-- end of kind -->
15015       </tbody>
15016
15017   <!-- end of section -->
15018   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15019
15020
15021       <tr><td colspan="7" class="kind">static</td></tr>
15022
15023       <thead class="entries_header">
15024         <tr>
15025           <th class="th_name">Property Name</th>
15026           <th class="th_type">Type</th>
15027           <th class="th_description">Description</th>
15028           <th class="th_units">Units</th>
15029           <th class="th_range">Range</th>
15030           <th class="th_hal_version">Initial HIDL HAL version</th>
15031           <th class="th_tags">Tags</th>
15032         </tr>
15033       </thead>
15034
15035       <tbody>
15036
15037         
15038
15039         
15040
15041         
15042
15043         
15044
15045                 
15046           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15047             <td class="entry_name
15048                 entry_name_deprecated
15049              " rowspan="3">
15050               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15051             </td>
15052             <td class="entry_type">
15053                 <span class="entry_type_name">byte</span>
15054
15055               <span class="entry_type_visibility"> [system]</span>
15056
15057
15058
15059               <span class="entry_type_deprecated">[deprecated] </span>
15060
15061
15062
15063             </td> <!-- entry_type -->
15064
15065             <td class="entry_description">
15066               <p>If set to 1,<wbr/> the camera service does not
15067 scale 'normalized' coordinates with respect to the crop
15068 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15069 and output (face rectangles).<wbr/></p>
15070             </td>
15071
15072             <td class="entry_units">
15073             </td>
15074
15075             <td class="entry_range">
15076               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15077             </td>
15078
15079             <td class="entry_hal_version">
15080               <p>3.<wbr/>2</p>
15081             </td>
15082
15083             <td class="entry_tags">
15084             </td>
15085
15086           </tr>
15087           <tr class="entries_header">
15088             <th class="th_details" colspan="6">Details</th>
15089           </tr>
15090           <tr class="entry_cont">
15091             <td class="entry_details" colspan="6">
15092               <p>Normalized coordinates refer to those in the
15093 (-1000,<wbr/>1000) range mentioned in the
15094 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15095 <p>HAL implementations should instead always use and emit
15096 sensor array-relative coordinates for all region data.<wbr/> Does
15097 not need to be listed in static metadata.<wbr/> Support will be
15098 removed in future versions of camera service.<wbr/></p>
15099             </td>
15100           </tr>
15101
15102
15103           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15104            <!-- end of entry -->
15105         
15106                 
15107           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15108             <td class="entry_name
15109                 entry_name_deprecated
15110              " rowspan="3">
15111               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15112             </td>
15113             <td class="entry_type">
15114                 <span class="entry_type_name">byte</span>
15115
15116               <span class="entry_type_visibility"> [system]</span>
15117
15118
15119
15120               <span class="entry_type_deprecated">[deprecated] </span>
15121
15122
15123
15124             </td> <!-- entry_type -->
15125
15126             <td class="entry_description">
15127               <p>If set to 1,<wbr/> then the camera service always
15128 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15129 trigger.<wbr/></p>
15130             </td>
15131
15132             <td class="entry_units">
15133             </td>
15134
15135             <td class="entry_range">
15136               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15137             </td>
15138
15139             <td class="entry_hal_version">
15140               <p>3.<wbr/>2</p>
15141             </td>
15142
15143             <td class="entry_tags">
15144             </td>
15145
15146           </tr>
15147           <tr class="entries_header">
15148             <th class="th_details" colspan="6">Details</th>
15149           </tr>
15150           <tr class="entry_cont">
15151             <td class="entry_details" colspan="6">
15152               <p>HAL implementations should implement AF trigger
15153 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15154 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15155 not need to be listed in static metadata.<wbr/> Support will be
15156 removed in future versions of camera service</p>
15157             </td>
15158           </tr>
15159
15160
15161           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15162            <!-- end of entry -->
15163         
15164                 
15165           <tr class="entry" id="static_android.quirks.useZslFormat">
15166             <td class="entry_name
15167                 entry_name_deprecated
15168              " rowspan="3">
15169               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15170             </td>
15171             <td class="entry_type">
15172                 <span class="entry_type_name">byte</span>
15173
15174               <span class="entry_type_visibility"> [system]</span>
15175
15176
15177
15178               <span class="entry_type_deprecated">[deprecated] </span>
15179
15180
15181
15182             </td> <!-- entry_type -->
15183
15184             <td class="entry_description">
15185               <p>If set to 1,<wbr/> the camera service uses
15186 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15187 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15188 shutter lag stream</p>
15189             </td>
15190
15191             <td class="entry_units">
15192             </td>
15193
15194             <td class="entry_range">
15195               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15196             </td>
15197
15198             <td class="entry_hal_version">
15199               <p>3.<wbr/>2</p>
15200             </td>
15201
15202             <td class="entry_tags">
15203             </td>
15204
15205           </tr>
15206           <tr class="entries_header">
15207             <th class="th_details" colspan="6">Details</th>
15208           </tr>
15209           <tr class="entry_cont">
15210             <td class="entry_details" colspan="6">
15211               <p>HAL implementations should use gralloc usage flags
15212 to determine that a stream will be used for
15213 zero-shutter-lag,<wbr/> instead of relying on an explicit
15214 format setting.<wbr/> Does not need to be listed in static
15215 metadata.<wbr/> Support will be removed in future versions of
15216 camera service.<wbr/></p>
15217             </td>
15218           </tr>
15219
15220
15221           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15222            <!-- end of entry -->
15223         
15224                 
15225           <tr class="entry" id="static_android.quirks.usePartialResult">
15226             <td class="entry_name
15227                 entry_name_deprecated
15228              " rowspan="5">
15229               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15230             </td>
15231             <td class="entry_type">
15232                 <span class="entry_type_name">byte</span>
15233
15234               <span class="entry_type_visibility"> [hidden]</span>
15235
15236
15237
15238               <span class="entry_type_deprecated">[deprecated] </span>
15239
15240
15241
15242             </td> <!-- entry_type -->
15243
15244             <td class="entry_description">
15245               <p>If set to 1,<wbr/> the HAL will always split result
15246 metadata for a single capture into multiple buffers,<wbr/>
15247 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15248             </td>
15249
15250             <td class="entry_units">
15251             </td>
15252
15253             <td class="entry_range">
15254               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15255             </td>
15256
15257             <td class="entry_hal_version">
15258               <p>3.<wbr/>2</p>
15259             </td>
15260
15261             <td class="entry_tags">
15262             </td>
15263
15264           </tr>
15265           <tr class="entries_header">
15266             <th class="th_details" colspan="6">Details</th>
15267           </tr>
15268           <tr class="entry_cont">
15269             <td class="entry_details" colspan="6">
15270               <p>Does not need to be listed in static
15271 metadata.<wbr/> Support for partial results will be reworked in
15272 future versions of camera service.<wbr/> This quirk will stop
15273 working at that point; DO NOT USE without careful
15274 consideration of future support.<wbr/></p>
15275             </td>
15276           </tr>
15277
15278           <tr class="entries_header">
15279             <th class="th_details" colspan="6">HAL Implementation Details</th>
15280           </tr>
15281           <tr class="entry_cont">
15282             <td class="entry_details" colspan="6">
15283               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15284 for information on how to implement partial results.<wbr/></p>
15285             </td>
15286           </tr>
15287
15288           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15289            <!-- end of entry -->
15290         
15291         
15292
15293       <!-- end of kind -->
15294       </tbody>
15295       <tr><td colspan="7" class="kind">dynamic</td></tr>
15296
15297       <thead class="entries_header">
15298         <tr>
15299           <th class="th_name">Property Name</th>
15300           <th class="th_type">Type</th>
15301           <th class="th_description">Description</th>
15302           <th class="th_units">Units</th>
15303           <th class="th_range">Range</th>
15304           <th class="th_hal_version">Initial HIDL HAL version</th>
15305           <th class="th_tags">Tags</th>
15306         </tr>
15307       </thead>
15308
15309       <tbody>
15310
15311         
15312
15313         
15314
15315         
15316
15317         
15318
15319                 
15320           <tr class="entry" id="dynamic_android.quirks.partialResult">
15321             <td class="entry_name
15322                 entry_name_deprecated
15323              " rowspan="5">
15324               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15325             </td>
15326             <td class="entry_type">
15327                 <span class="entry_type_name entry_type_name_enum">byte</span>
15328
15329               <span class="entry_type_visibility"> [hidden as boolean]</span>
15330
15331
15332
15333               <span class="entry_type_deprecated">[deprecated] </span>
15334
15335
15336                 <ul class="entry_type_enum">
15337                   <li>
15338                     <span class="entry_type_enum_name">FINAL</span>
15339                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15340 for this capture.<wbr/></p></span>
15341                   </li>
15342                   <li>
15343                     <span class="entry_type_enum_name">PARTIAL</span>
15344                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15345 capture.<wbr/> More result buffers for this capture will be sent
15346 by the camera device,<wbr/> the last of which will be marked
15347 FINAL.<wbr/></p></span>
15348                   </li>
15349                 </ul>
15350
15351             </td> <!-- entry_type -->
15352
15353             <td class="entry_description">
15354               <p>Whether a result given to the framework is the
15355 final one for the capture,<wbr/> or only a partial that contains a
15356 subset of the full set of dynamic metadata
15357 values.<wbr/></p>
15358             </td>
15359
15360             <td class="entry_units">
15361             </td>
15362
15363             <td class="entry_range">
15364               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15365               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15366             </td>
15367
15368             <td class="entry_hal_version">
15369               <p>3.<wbr/>2</p>
15370             </td>
15371
15372             <td class="entry_tags">
15373             </td>
15374
15375           </tr>
15376           <tr class="entries_header">
15377             <th class="th_details" colspan="6">Details</th>
15378           </tr>
15379           <tr class="entry_cont">
15380             <td class="entry_details" colspan="6">
15381               <p>The entries in the result metadata buffers for a
15382 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15383 FINAL buffers must retain FIFO ordering relative to the
15384 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15385 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15386 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15387 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15388 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15389 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15390             </td>
15391           </tr>
15392
15393           <tr class="entries_header">
15394             <th class="th_details" colspan="6">HAL Implementation Details</th>
15395           </tr>
15396           <tr class="entry_cont">
15397             <td class="entry_details" colspan="6">
15398               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15399 for information on how to implement partial results.<wbr/></p>
15400             </td>
15401           </tr>
15402
15403           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15404            <!-- end of entry -->
15405         
15406         
15407
15408       <!-- end of kind -->
15409       </tbody>
15410
15411   <!-- end of section -->
15412   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15413
15414
15415       <tr><td colspan="7" class="kind">controls</td></tr>
15416
15417       <thead class="entries_header">
15418         <tr>
15419           <th class="th_name">Property Name</th>
15420           <th class="th_type">Type</th>
15421           <th class="th_description">Description</th>
15422           <th class="th_units">Units</th>
15423           <th class="th_range">Range</th>
15424           <th class="th_hal_version">Initial HIDL HAL version</th>
15425           <th class="th_tags">Tags</th>
15426         </tr>
15427       </thead>
15428
15429       <tbody>
15430
15431         
15432
15433         
15434
15435         
15436
15437         
15438
15439                 
15440           <tr class="entry" id="controls_android.request.frameCount">
15441             <td class="entry_name
15442                 entry_name_deprecated
15443              " rowspan="1">
15444               android.<wbr/>request.<wbr/>frame<wbr/>Count
15445             </td>
15446             <td class="entry_type">
15447                 <span class="entry_type_name">int32</span>
15448
15449               <span class="entry_type_visibility"> [system]</span>
15450
15451
15452
15453               <span class="entry_type_deprecated">[deprecated] </span>
15454
15455
15456
15457             </td> <!-- entry_type -->
15458
15459             <td class="entry_description">
15460               <p>A frame counter set by the framework.<wbr/> Must
15461 be maintained unchanged in output frame.<wbr/> This value monotonically
15462 increases with every new result (that is,<wbr/> each new result has a unique
15463 frameCount value).<wbr/></p>
15464             </td>
15465
15466             <td class="entry_units">
15467               incrementing integer
15468             </td>
15469
15470             <td class="entry_range">
15471               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15472               <p>Any int.<wbr/></p>
15473             </td>
15474
15475             <td class="entry_hal_version">
15476               <p>3.<wbr/>2</p>
15477             </td>
15478
15479             <td class="entry_tags">
15480             </td>
15481
15482           </tr>
15483
15484
15485           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15486            <!-- end of entry -->
15487         
15488                 
15489           <tr class="entry" id="controls_android.request.id">
15490             <td class="entry_name
15491              " rowspan="1">
15492               android.<wbr/>request.<wbr/>id
15493             </td>
15494             <td class="entry_type">
15495                 <span class="entry_type_name">int32</span>
15496
15497               <span class="entry_type_visibility"> [hidden]</span>
15498
15499
15500
15501
15502
15503
15504             </td> <!-- entry_type -->
15505
15506             <td class="entry_description">
15507               <p>An application-specified ID for the current
15508 request.<wbr/> Must be maintained unchanged in output
15509 frame</p>
15510             </td>
15511
15512             <td class="entry_units">
15513               arbitrary integer assigned by application
15514             </td>
15515
15516             <td class="entry_range">
15517               <p>Any int</p>
15518             </td>
15519
15520             <td class="entry_hal_version">
15521               <p>3.<wbr/>2</p>
15522             </td>
15523
15524             <td class="entry_tags">
15525               <ul class="entry_tags">
15526                   <li><a href="#tag_V1">V1</a></li>
15527               </ul>
15528             </td>
15529
15530           </tr>
15531
15532
15533           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15534            <!-- end of entry -->
15535         
15536                 
15537           <tr class="entry" id="controls_android.request.inputStreams">
15538             <td class="entry_name
15539                 entry_name_deprecated
15540              " rowspan="3">
15541               android.<wbr/>request.<wbr/>input<wbr/>Streams
15542             </td>
15543             <td class="entry_type">
15544                 <span class="entry_type_name">int32</span>
15545                 <span class="entry_type_container">x</span>
15546
15547                 <span class="entry_type_array">
15548                   n
15549                 </span>
15550               <span class="entry_type_visibility"> [system]</span>
15551
15552
15553
15554               <span class="entry_type_deprecated">[deprecated] </span>
15555
15556
15557
15558             </td> <!-- entry_type -->
15559
15560             <td class="entry_description">
15561               <p>List which camera reprocess stream is used
15562 for the source of reprocessing data.<wbr/></p>
15563             </td>
15564
15565             <td class="entry_units">
15566               List of camera reprocess stream IDs
15567             </td>
15568
15569             <td class="entry_range">
15570               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15571               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15572             </td>
15573
15574             <td class="entry_hal_version">
15575               <p>3.<wbr/>2</p>
15576             </td>
15577
15578             <td class="entry_tags">
15579               <ul class="entry_tags">
15580                   <li><a href="#tag_HAL2">HAL2</a></li>
15581               </ul>
15582             </td>
15583
15584           </tr>
15585           <tr class="entries_header">
15586             <th class="th_details" colspan="6">Details</th>
15587           </tr>
15588           <tr class="entry_cont">
15589             <td class="entry_details" colspan="6">
15590               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15591 REPROCESS.<wbr/> Ignored otherwise</p>
15592             </td>
15593           </tr>
15594
15595
15596           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15597            <!-- end of entry -->
15598         
15599                 
15600           <tr class="entry" id="controls_android.request.metadataMode">
15601             <td class="entry_name
15602              " rowspan="1">
15603               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15604             </td>
15605             <td class="entry_type">
15606                 <span class="entry_type_name entry_type_name_enum">byte</span>
15607
15608               <span class="entry_type_visibility"> [system]</span>
15609
15610
15611
15612
15613
15614                 <ul class="entry_type_enum">
15615                   <li>
15616                     <span class="entry_type_enum_name">NONE</span>
15617                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15618 for application-bound buffer data.<wbr/> If no
15619 application-bound streams exist,<wbr/> no frame should be
15620 placed in the output frame queue.<wbr/> If such streams
15621 exist,<wbr/> a frame should be placed on the output queue
15622 with null metadata but with the necessary output buffer
15623 information.<wbr/> Timestamp information should still be
15624 included with any output stream buffers</p></span>
15625                   </li>
15626                   <li>
15627                     <span class="entry_type_enum_name">FULL</span>
15628                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15629 only be produced if they are separately
15630 enabled</p></span>
15631                   </li>
15632                 </ul>
15633
15634             </td> <!-- entry_type -->
15635
15636             <td class="entry_description">
15637               <p>How much metadata to produce on
15638 output</p>
15639             </td>
15640
15641             <td class="entry_units">
15642             </td>
15643
15644             <td class="entry_range">
15645             </td>
15646
15647             <td class="entry_hal_version">
15648               <p>3.<wbr/>2</p>
15649             </td>
15650
15651             <td class="entry_tags">
15652               <ul class="entry_tags">
15653                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15654               </ul>
15655             </td>
15656
15657           </tr>
15658
15659
15660           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15661            <!-- end of entry -->
15662         
15663                 
15664           <tr class="entry" id="controls_android.request.outputStreams">
15665             <td class="entry_name
15666                 entry_name_deprecated
15667              " rowspan="3">
15668               android.<wbr/>request.<wbr/>output<wbr/>Streams
15669             </td>
15670             <td class="entry_type">
15671                 <span class="entry_type_name">int32</span>
15672                 <span class="entry_type_container">x</span>
15673
15674                 <span class="entry_type_array">
15675                   n
15676                 </span>
15677               <span class="entry_type_visibility"> [system]</span>
15678
15679
15680
15681               <span class="entry_type_deprecated">[deprecated] </span>
15682
15683
15684
15685             </td> <!-- entry_type -->
15686
15687             <td class="entry_description">
15688               <p>Lists which camera output streams image data
15689 from this capture must be sent to</p>
15690             </td>
15691
15692             <td class="entry_units">
15693               List of camera stream IDs
15694             </td>
15695
15696             <td class="entry_range">
15697               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15698               <p>List must only include streams that have been
15699 created</p>
15700             </td>
15701
15702             <td class="entry_hal_version">
15703               <p>3.<wbr/>2</p>
15704             </td>
15705
15706             <td class="entry_tags">
15707               <ul class="entry_tags">
15708                   <li><a href="#tag_HAL2">HAL2</a></li>
15709               </ul>
15710             </td>
15711
15712           </tr>
15713           <tr class="entries_header">
15714             <th class="th_details" colspan="6">Details</th>
15715           </tr>
15716           <tr class="entry_cont">
15717             <td class="entry_details" colspan="6">
15718               <p>If no output streams are listed,<wbr/> then the image
15719 data should simply be discarded.<wbr/> The image data must
15720 still be captured for metadata and statistics production,<wbr/>
15721 and the lens and flash must operate as requested.<wbr/></p>
15722             </td>
15723           </tr>
15724
15725
15726           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15727            <!-- end of entry -->
15728         
15729                 
15730           <tr class="entry" id="controls_android.request.type">
15731             <td class="entry_name
15732                 entry_name_deprecated
15733              " rowspan="1">
15734               android.<wbr/>request.<wbr/>type
15735             </td>
15736             <td class="entry_type">
15737                 <span class="entry_type_name entry_type_name_enum">byte</span>
15738
15739               <span class="entry_type_visibility"> [system]</span>
15740
15741
15742
15743               <span class="entry_type_deprecated">[deprecated] </span>
15744
15745
15746                 <ul class="entry_type_enum">
15747                   <li>
15748                     <span class="entry_type_enum_name">CAPTURE</span>
15749                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15750 and process it according to the
15751 settings</p></span>
15752                   </li>
15753                   <li>
15754                     <span class="entry_type_enum_name">REPROCESS</span>
15755                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
15756 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15757 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15758 needed for reprocessing with [RP]</p></span>
15759                   </li>
15760                 </ul>
15761
15762             </td> <!-- entry_type -->
15763
15764             <td class="entry_description">
15765               <p>The type of the request; either CAPTURE or
15766 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15767             </td>
15768
15769             <td class="entry_units">
15770             </td>
15771
15772             <td class="entry_range">
15773               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15774             </td>
15775
15776             <td class="entry_hal_version">
15777               <p>3.<wbr/>2</p>
15778             </td>
15779
15780             <td class="entry_tags">
15781               <ul class="entry_tags">
15782                   <li><a href="#tag_HAL2">HAL2</a></li>
15783               </ul>
15784             </td>
15785
15786           </tr>
15787
15788
15789           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15790            <!-- end of entry -->
15791         
15792         
15793
15794       <!-- end of kind -->
15795       </tbody>
15796       <tr><td colspan="7" class="kind">static</td></tr>
15797
15798       <thead class="entries_header">
15799         <tr>
15800           <th class="th_name">Property Name</th>
15801           <th class="th_type">Type</th>
15802           <th class="th_description">Description</th>
15803           <th class="th_units">Units</th>
15804           <th class="th_range">Range</th>
15805           <th class="th_hal_version">Initial HIDL HAL version</th>
15806           <th class="th_tags">Tags</th>
15807         </tr>
15808       </thead>
15809
15810       <tbody>
15811
15812         
15813
15814         
15815
15816         
15817
15818         
15819
15820                 
15821           <tr class="entry" id="static_android.request.maxNumOutputStreams">
15822             <td class="entry_name
15823              " rowspan="3">
15824               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15825             </td>
15826             <td class="entry_type">
15827                 <span class="entry_type_name">int32</span>
15828                 <span class="entry_type_container">x</span>
15829
15830                 <span class="entry_type_array">
15831                   3
15832                 </span>
15833               <span class="entry_type_visibility"> [ndk_public]</span>
15834
15835
15836               <span class="entry_type_hwlevel">[legacy] </span>
15837
15838
15839
15840
15841             </td> <!-- entry_type -->
15842
15843             <td class="entry_description">
15844               <p>The maximum numbers of different types of output streams
15845 that can be configured and used simultaneously by a camera device.<wbr/></p>
15846             </td>
15847
15848             <td class="entry_units">
15849             </td>
15850
15851             <td class="entry_range">
15852               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15853 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15854 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15855 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15856 &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>
15857             </td>
15858
15859             <td class="entry_hal_version">
15860               <p>3.<wbr/>2</p>
15861             </td>
15862
15863             <td class="entry_tags">
15864               <ul class="entry_tags">
15865                   <li><a href="#tag_BC">BC</a></li>
15866               </ul>
15867             </td>
15868
15869           </tr>
15870           <tr class="entries_header">
15871             <th class="th_details" colspan="6">Details</th>
15872           </tr>
15873           <tr class="entry_cont">
15874             <td class="entry_details" colspan="6">
15875               <p>This is a 3 element tuple that contains the max number of output simultaneous
15876 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15877 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15878 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15879 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>
15880 <p>This lists the upper bound of the number of output streams supported by
15881 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15882 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15883 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15884 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15885 into the 3 stream types as below:</p>
15886 <ul>
15887 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
15888   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15889 <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
15890   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15891 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
15892   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15893   <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>
15894 </ul>
15895             </td>
15896           </tr>
15897
15898
15899           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15900            <!-- end of entry -->
15901         
15902                 
15903           <tr class="entry" id="static_android.request.maxNumOutputRaw">
15904             <td class="entry_name
15905              " rowspan="3">
15906               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15907             </td>
15908             <td class="entry_type">
15909                 <span class="entry_type_name">int32</span>
15910
15911               <span class="entry_type_visibility"> [java_public]</span>
15912
15913               <span class="entry_type_synthetic">[synthetic] </span>
15914
15915               <span class="entry_type_hwlevel">[legacy] </span>
15916
15917
15918
15919
15920             </td> <!-- entry_type -->
15921
15922             <td class="entry_description">
15923               <p>The maximum numbers of different types of output streams
15924 that can be configured and used simultaneously by a camera device
15925 for any <code>RAW</code> formats.<wbr/></p>
15926             </td>
15927
15928             <td class="entry_units">
15929             </td>
15930
15931             <td class="entry_range">
15932               <p>&gt;= 0</p>
15933             </td>
15934
15935             <td class="entry_hal_version">
15936               <p>3.<wbr/>2</p>
15937             </td>
15938
15939             <td class="entry_tags">
15940             </td>
15941
15942           </tr>
15943           <tr class="entries_header">
15944             <th class="th_details" colspan="6">Details</th>
15945           </tr>
15946           <tr class="entry_cont">
15947             <td class="entry_details" colspan="6">
15948               <p>This value contains the max number of output simultaneous
15949 streams from the raw sensor.<wbr/></p>
15950 <p>This lists the upper bound of the number of output streams supported by
15951 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15952 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15953 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>
15954 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15955 <ul>
15956 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15957 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15958 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15959 </ul>
15960 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15961 never support raw streams.<wbr/></p>
15962             </td>
15963           </tr>
15964
15965
15966           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15967            <!-- end of entry -->
15968         
15969                 
15970           <tr class="entry" id="static_android.request.maxNumOutputProc">
15971             <td class="entry_name
15972              " rowspan="3">
15973               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15974             </td>
15975             <td class="entry_type">
15976                 <span class="entry_type_name">int32</span>
15977
15978               <span class="entry_type_visibility"> [java_public]</span>
15979
15980               <span class="entry_type_synthetic">[synthetic] </span>
15981
15982               <span class="entry_type_hwlevel">[legacy] </span>
15983
15984
15985
15986
15987             </td> <!-- entry_type -->
15988
15989             <td class="entry_description">
15990               <p>The maximum numbers of different types of output streams
15991 that can be configured and used simultaneously by a camera device
15992 for any processed (but not-stalling) formats.<wbr/></p>
15993             </td>
15994
15995             <td class="entry_units">
15996             </td>
15997
15998             <td class="entry_range">
15999               <p>&gt;= 3
16000 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16001 &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>
16002             </td>
16003
16004             <td class="entry_hal_version">
16005               <p>3.<wbr/>2</p>
16006             </td>
16007
16008             <td class="entry_tags">
16009             </td>
16010
16011           </tr>
16012           <tr class="entries_header">
16013             <th class="th_details" colspan="6">Details</th>
16014           </tr>
16015           <tr class="entry_cont">
16016             <td class="entry_details" colspan="6">
16017               <p>This value contains the max number of output simultaneous
16018 streams for any processed (but not-stalling) formats.<wbr/></p>
16019 <p>This lists the upper bound of the number of output streams supported by
16020 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16021 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16022 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>
16023 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16024 Typically:</p>
16025 <ul>
16026 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16027 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16028 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16029 <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>
16030 </ul>
16031 <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
16032 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16033 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16034             </td>
16035           </tr>
16036
16037
16038           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16039            <!-- end of entry -->
16040         
16041                 
16042           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16043             <td class="entry_name
16044              " rowspan="3">
16045               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16046             </td>
16047             <td class="entry_type">
16048                 <span class="entry_type_name">int32</span>
16049
16050               <span class="entry_type_visibility"> [java_public]</span>
16051
16052               <span class="entry_type_synthetic">[synthetic] </span>
16053
16054               <span class="entry_type_hwlevel">[legacy] </span>
16055
16056
16057
16058
16059             </td> <!-- entry_type -->
16060
16061             <td class="entry_description">
16062               <p>The maximum numbers of different types of output streams
16063 that can be configured and used simultaneously by a camera device
16064 for any processed (and stalling) formats.<wbr/></p>
16065             </td>
16066
16067             <td class="entry_units">
16068             </td>
16069
16070             <td class="entry_range">
16071               <p>&gt;= 1</p>
16072             </td>
16073
16074             <td class="entry_hal_version">
16075               <p>3.<wbr/>2</p>
16076             </td>
16077
16078             <td class="entry_tags">
16079             </td>
16080
16081           </tr>
16082           <tr class="entries_header">
16083             <th class="th_details" colspan="6">Details</th>
16084           </tr>
16085           <tr class="entry_cont">
16086             <td class="entry_details" colspan="6">
16087               <p>This value contains the max number of output simultaneous
16088 streams for any processed (but not-stalling) formats.<wbr/></p>
16089 <p>This lists the upper bound of the number of output streams supported by
16090 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16091 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16092 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>
16093 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16094 &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>
16095 <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
16096 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16097 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16098             </td>
16099           </tr>
16100
16101
16102           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16103            <!-- end of entry -->
16104         
16105                 
16106           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16107             <td class="entry_name
16108                 entry_name_deprecated
16109              " rowspan="3">
16110               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16111             </td>
16112             <td class="entry_type">
16113                 <span class="entry_type_name">int32</span>
16114                 <span class="entry_type_container">x</span>
16115
16116                 <span class="entry_type_array">
16117                   1
16118                 </span>
16119               <span class="entry_type_visibility"> [system]</span>
16120
16121
16122
16123               <span class="entry_type_deprecated">[deprecated] </span>
16124
16125
16126
16127             </td> <!-- entry_type -->
16128
16129             <td class="entry_description">
16130               <p>How many reprocessing streams of any type
16131 can be allocated at the same time.<wbr/></p>
16132             </td>
16133
16134             <td class="entry_units">
16135             </td>
16136
16137             <td class="entry_range">
16138               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16139               <p>&gt;= 0</p>
16140             </td>
16141
16142             <td class="entry_hal_version">
16143               <p>3.<wbr/>2</p>
16144             </td>
16145
16146             <td class="entry_tags">
16147               <ul class="entry_tags">
16148                   <li><a href="#tag_HAL2">HAL2</a></li>
16149               </ul>
16150             </td>
16151
16152           </tr>
16153           <tr class="entries_header">
16154             <th class="th_details" colspan="6">Details</th>
16155           </tr>
16156           <tr class="entry_cont">
16157             <td class="entry_details" colspan="6">
16158               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16159 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16160             </td>
16161           </tr>
16162
16163
16164           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16165            <!-- end of entry -->
16166         
16167                 
16168           <tr class="entry" id="static_android.request.maxNumInputStreams">
16169             <td class="entry_name
16170              " rowspan="5">
16171               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16172             </td>
16173             <td class="entry_type">
16174                 <span class="entry_type_name">int32</span>
16175
16176               <span class="entry_type_visibility"> [java_public]</span>
16177
16178
16179               <span class="entry_type_hwlevel">[full] </span>
16180
16181
16182
16183
16184             </td> <!-- entry_type -->
16185
16186             <td class="entry_description">
16187               <p>The maximum numbers of any type of input streams
16188 that can be configured and used simultaneously by a camera device.<wbr/></p>
16189             </td>
16190
16191             <td class="entry_units">
16192             </td>
16193
16194             <td class="entry_range">
16195               <p>0 or 1.<wbr/></p>
16196             </td>
16197
16198             <td class="entry_hal_version">
16199               <p>3.<wbr/>2</p>
16200             </td>
16201
16202             <td class="entry_tags">
16203               <ul class="entry_tags">
16204                   <li><a href="#tag_REPROC">REPROC</a></li>
16205               </ul>
16206             </td>
16207
16208           </tr>
16209           <tr class="entries_header">
16210             <th class="th_details" colspan="6">Details</th>
16211           </tr>
16212           <tr class="entry_cont">
16213             <td class="entry_details" colspan="6">
16214               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16215 <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
16216 input stream,<wbr/> there must be at least one output stream configured to to receive the
16217 reprocessed images.<wbr/></p>
16218 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16219 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16220 new sensor image will not be captured.<wbr/></p>
16221 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16222 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16223 should be JPEG.<wbr/></p>
16224             </td>
16225           </tr>
16226
16227           <tr class="entries_header">
16228             <th class="th_details" colspan="6">HAL Implementation Details</th>
16229           </tr>
16230           <tr class="entry_cont">
16231             <td class="entry_details" colspan="6">
16232               <p>For the reprocessing flow and controls,<wbr/> see
16233 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16234             </td>
16235           </tr>
16236
16237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16238            <!-- end of entry -->
16239         
16240                 
16241           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16242             <td class="entry_name
16243              " rowspan="5">
16244               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16245             </td>
16246             <td class="entry_type">
16247                 <span class="entry_type_name">byte</span>
16248
16249               <span class="entry_type_visibility"> [public]</span>
16250
16251
16252               <span class="entry_type_hwlevel">[legacy] </span>
16253
16254
16255
16256
16257             </td> <!-- entry_type -->
16258
16259             <td class="entry_description">
16260               <p>Specifies the number of maximum pipeline stages a frame
16261 has to go through from when it's exposed to when it's available
16262 to the framework.<wbr/></p>
16263             </td>
16264
16265             <td class="entry_units">
16266             </td>
16267
16268             <td class="entry_range">
16269             </td>
16270
16271             <td class="entry_hal_version">
16272               <p>3.<wbr/>2</p>
16273             </td>
16274
16275             <td class="entry_tags">
16276             </td>
16277
16278           </tr>
16279           <tr class="entries_header">
16280             <th class="th_details" colspan="6">Details</th>
16281           </tr>
16282           <tr class="entry_cont">
16283             <td class="entry_details" colspan="6">
16284               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16285 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16286 its own stages to do custom HW processing.<wbr/> Further stages may be
16287 added by SW processing.<wbr/></p>
16288 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16289 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16290 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16291 the max pipeline depth.<wbr/></p>
16292 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16293 X frame intervals.<wbr/></p>
16294 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16295 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16296             </td>
16297           </tr>
16298
16299           <tr class="entries_header">
16300             <th class="th_details" colspan="6">HAL Implementation Details</th>
16301           </tr>
16302           <tr class="entry_cont">
16303             <td class="entry_details" colspan="6">
16304               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16305 max batch sizes may be larger than 1.<wbr/></p>
16306             </td>
16307           </tr>
16308
16309           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16310            <!-- end of entry -->
16311         
16312                 
16313           <tr class="entry" id="static_android.request.partialResultCount">
16314             <td class="entry_name
16315              " rowspan="3">
16316               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16317             </td>
16318             <td class="entry_type">
16319                 <span class="entry_type_name">int32</span>
16320
16321               <span class="entry_type_visibility"> [public]</span>
16322
16323
16324
16325
16326
16327
16328             </td> <!-- entry_type -->
16329
16330             <td class="entry_description">
16331               <p>Defines how many sub-components
16332 a result will be composed of.<wbr/></p>
16333             </td>
16334
16335             <td class="entry_units">
16336             </td>
16337
16338             <td class="entry_range">
16339               <p>&gt;= 1</p>
16340             </td>
16341
16342             <td class="entry_hal_version">
16343               <p>3.<wbr/>2</p>
16344             </td>
16345
16346             <td class="entry_tags">
16347             </td>
16348
16349           </tr>
16350           <tr class="entries_header">
16351             <th class="th_details" colspan="6">Details</th>
16352           </tr>
16353           <tr class="entry_cont">
16354             <td class="entry_details" colspan="6">
16355               <p>In order to combat the pipeline latency,<wbr/> partial results
16356 may be delivered to the application layer from the camera device as
16357 soon as they are available.<wbr/></p>
16358 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16359 results are not supported,<wbr/> and only the final TotalCaptureResult will
16360 be produced by the camera device.<wbr/></p>
16361 <p>A typical use case for this might be: after requesting an
16362 auto-focus (AF) lock the new AF state might be available 50%
16363 of the way through the pipeline.<wbr/>  The camera device could
16364 then immediately dispatch this state via a partial result to
16365 the application,<wbr/> and the rest of the metadata via later
16366 partial results.<wbr/></p>
16367             </td>
16368           </tr>
16369
16370
16371           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16372            <!-- end of entry -->
16373         
16374                 
16375           <tr class="entry" id="static_android.request.availableCapabilities">
16376             <td class="entry_name
16377              " rowspan="5">
16378               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16379             </td>
16380             <td class="entry_type">
16381                 <span class="entry_type_name entry_type_name_enum">byte</span>
16382                 <span class="entry_type_container">x</span>
16383
16384                 <span class="entry_type_array">
16385                   n
16386                 </span>
16387               <span class="entry_type_visibility"> [public]</span>
16388
16389
16390               <span class="entry_type_hwlevel">[legacy] </span>
16391
16392
16393
16394                 <ul class="entry_type_enum">
16395                   <li>
16396                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
16397                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16398 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16399 supports.<wbr/></p>
16400 <p>This capability is listed by all normal devices,<wbr/> and
16401 indicates that the camera device has a feature set
16402 that's comparable to the baseline requirements for the
16403 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16404 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16405 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16406 not standard color output.<wbr/></p></span>
16407                   </li>
16408                   <li>
16409                     <span class="entry_type_enum_name">MANUAL_SENSOR</span>
16410                     <span class="entry_type_enum_optional">[optional]</span>
16411                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16412 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16413 The camera device supports basic manual control of the sensor image
16414 acquisition related stages.<wbr/> This means the following controls are
16415 guaranteed to be supported:</p>
16416 <ul>
16417 <li>Manual frame duration control<ul>
16418 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16419 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16420 </ul>
16421 </li>
16422 <li>Manual exposure control<ul>
16423 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16424 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16425 </ul>
16426 </li>
16427 <li>Manual sensitivity control<ul>
16428 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16429 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16430 </ul>
16431 </li>
16432 <li>Manual lens control (if the lens is adjustable)<ul>
16433 <li>android.<wbr/>lens.<wbr/>*</li>
16434 </ul>
16435 </li>
16436 <li>Manual flash control (if a flash unit is present)<ul>
16437 <li>android.<wbr/>flash.<wbr/>*</li>
16438 </ul>
16439 </li>
16440 <li>Manual black level locking<ul>
16441 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16442 </ul>
16443 </li>
16444 <li>Auto exposure lock<ul>
16445 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16446 </ul>
16447 </li>
16448 </ul>
16449 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16450 device will accurately report the values applied by 3A in the
16451 result.<wbr/></p>
16452 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16453 but this capability only covers the above list of controls.<wbr/></p>
16454 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16455 additionally return a min frame duration that is greater than
16456 zero for each supported size-format combination.<wbr/></p></span>
16457                   </li>
16458                   <li>
16459                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
16460                     <span class="entry_type_enum_optional">[optional]</span>
16461                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16462 The camera device supports basic manual control of the image post-processing
16463 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16464 <ul>
16465 <li>
16466 <p>Manual tonemap control</p>
16467 <ul>
16468 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16469 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16470 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16471 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16472 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16473 </ul>
16474 </li>
16475 <li>
16476 <p>Manual white balance control</p>
16477 <ul>
16478 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16479 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16480 </ul>
16481 </li>
16482 <li>Manual lens shading map control<ul>
16483 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16484 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16485 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16486 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16487 </ul>
16488 </li>
16489 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16490 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16491 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16492 </ul>
16493 </li>
16494 <li>Auto white balance lock<ul>
16495 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16496 </ul>
16497 </li>
16498 </ul>
16499 <p>If auto white balance is enabled,<wbr/> then the camera device
16500 will accurately report the values applied by AWB in the result.<wbr/></p>
16501 <p>A given camera device may also support additional post-processing
16502 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16503                   </li>
16504                   <li>
16505                     <span class="entry_type_enum_name">RAW</span>
16506                     <span class="entry_type_enum_optional">[optional]</span>
16507                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16508 metadata for interpreting them.<wbr/></p>
16509 <p>Devices supporting the RAW capability allow both for
16510 saving DNG files,<wbr/> and for direct application processing of
16511 raw sensor images.<wbr/></p>
16512 <ul>
16513 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16514 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16515   will match either the value in
16516   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16517   <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>
16518 <li>All DNG-related optional metadata entries are provided
16519   by the camera device.<wbr/></li>
16520 </ul></span>
16521                   </li>
16522                   <li>
16523                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
16524                     <span class="entry_type_enum_optional">[optional]</span>
16525                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16526 <ul>
16527 <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>
16528 <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/>
16529   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16530   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>
16531 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16532   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>
16533 <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>
16534 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16535   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16536 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16537   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16538   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16539 <li>The maximum available resolution for PRIVATE streams
16540   (both input/<wbr/>output) will match the maximum available
16541   resolution of JPEG streams.<wbr/></li>
16542 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16543 <li>Only below controls are effective for reprocessing requests and
16544   will be present in capture results,<wbr/> other controls in reprocess
16545   requests will be ignored by the camera device.<wbr/><ul>
16546 <li>android.<wbr/>jpeg.<wbr/>*</li>
16547 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16548 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16549 </ul>
16550 </li>
16551 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16552   <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>
16553 </ul></span>
16554                   </li>
16555                   <li>
16556                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
16557                     <span class="entry_type_enum_optional">[optional]</span>
16558                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16559 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16560 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16561 <p>The values reported for the following controls are guaranteed to be available
16562 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16563 <ul>
16564 <li>Exposure control<ul>
16565 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16566 </ul>
16567 </li>
16568 <li>Sensitivity control<ul>
16569 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16570 </ul>
16571 </li>
16572 <li>Lens controls (if the lens is adjustable)<ul>
16573 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16574 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16575 </ul>
16576 </li>
16577 </ul>
16578 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16579 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16580                   </li>
16581                   <li>
16582                     <span class="entry_type_enum_name">BURST_CAPTURE</span>
16583                     <span class="entry_type_enum_optional">[optional]</span>
16584                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16585 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16586 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16587 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16588 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16589                   </li>
16590                   <li>
16591                     <span class="entry_type_enum_name">YUV_REPROCESSING</span>
16592                     <span class="entry_type_enum_optional">[optional]</span>
16593                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16594 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16595 following:</p>
16596 <ul>
16597 <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>
16598 <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
16599   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>
16600 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16601   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>
16602 <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>
16603 <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
16604   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16605 <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
16606   <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>
16607 <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
16608   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16609 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16610 <li>Only the below controls are effective for reprocessing requests and will be present
16611   in capture results.<wbr/> The reprocess requests are from the original capture results
16612   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
16613   reprocess requests will be ignored by the camera device.<wbr/><ul>
16614 <li>android.<wbr/>jpeg.<wbr/>*</li>
16615 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16616 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16617 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16618 </ul>
16619 </li>
16620 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16621   <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>
16622 </ul></span>
16623                   </li>
16624                   <li>
16625                     <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
16626                     <span class="entry_type_enum_optional">[optional]</span>
16627                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16628 <p>This capability requires the camera device to support the following:</p>
16629 <ul>
16630 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16631   an output format.<wbr/></li>
16632 <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
16633   optionally supported as an output format.<wbr/></li>
16634 <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
16635   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16636   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16637 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16638 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16639 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16640 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16641 </ul>
16642 </li>
16643 <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>
16644 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16645   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16646   format.<wbr/></li>
16647 </ul>
16648 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16649 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16650 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16651 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16652 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16653 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16654 rate,<wbr/> including depth stall time.<wbr/></p></span>
16655                   </li>
16656                   <li>
16657                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
16658                     <span class="entry_type_enum_optional">[optional]</span>
16659                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
16660 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
16661 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>
16662 <p>A camera device can still support high speed video streaming by advertising the high
16663 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
16664 normal capture request per frame control and synchronization requirements will apply
16665 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16666 describes the capability of a specialized operating mode with many limitations (see
16667 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16668 <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/>
16669 To get desired output frame rates,<wbr/> the application is only allowed to select video
16670 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
16671 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>
16672 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16673 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16674 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16675 and post-processing parameters is possible.<wbr/> All other controls operate the
16676 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16677 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16678 <ul>
16679 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16680 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16681 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16682 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16683 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16684 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16685 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16686 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16687 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16688 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16689 </ul>
16690 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16691 <ul>
16692 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16693 work since aeMode is ON)</li>
16694 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16695 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16696 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16697 </ul>
16698 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16699 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16700 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16701 the application need check if the video encoder is capable of supporting the
16702 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16703 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16704 rate will be bounded by the screen refresh rate.<wbr/></p>
16705 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16706 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16707 if all of below conditions are true:</p>
16708 <ul>
16709 <li>The application creates a camera capture session with no more than 2 surfaces via
16710 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16711 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
16712 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>
16713 <li>The stream sizes are selected from the sizes reported by
16714 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16715 <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>
16716 </ul>
16717 <p>When above conditions are NOT satistied,<wbr/>
16718 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16719 will fail.<wbr/></p>
16720 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16721 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16722 the application avoids unnecessary maximum target FPS changes as much as possible
16723 during high speed streaming.<wbr/></p></span>
16724                   </li>
16725                 </ul>
16726
16727             </td> <!-- entry_type -->
16728
16729             <td class="entry_description">
16730               <p>List of capabilities that this camera device
16731 advertises as fully supporting.<wbr/></p>
16732             </td>
16733
16734             <td class="entry_units">
16735             </td>
16736
16737             <td class="entry_range">
16738             </td>
16739
16740             <td class="entry_hal_version">
16741               <p>3.<wbr/>2</p>
16742             </td>
16743
16744             <td class="entry_tags">
16745             </td>
16746
16747           </tr>
16748           <tr class="entries_header">
16749             <th class="th_details" colspan="6">Details</th>
16750           </tr>
16751           <tr class="entry_cont">
16752             <td class="entry_details" colspan="6">
16753               <p>A capability is a contract that the camera device makes in order
16754 to be able to satisfy one or more use cases.<wbr/></p>
16755 <p>Listing a capability guarantees that the whole set of features
16756 required to support a common use will all be available.<wbr/></p>
16757 <p>Using a subset of the functionality provided by an unsupported
16758 capability may be possible on a specific camera device implementation;
16759 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16760 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16761 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16762 <p>The following capabilities are guaranteed to be available on
16763 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16764 <ul>
16765 <li>MANUAL_<wbr/>SENSOR</li>
16766 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16767 </ul>
16768 <p>Other capabilities may be available on either FULL or LIMITED
16769 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16770             </td>
16771           </tr>
16772
16773           <tr class="entries_header">
16774             <th class="th_details" colspan="6">HAL Implementation Details</th>
16775           </tr>
16776           <tr class="entry_cont">
16777             <td class="entry_details" colspan="6">
16778               <p>Additional constraint details per-capability will be available
16779 in the Compatibility Test Suite.<wbr/></p>
16780 <p>Minimum baseline requirements required for the
16781 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16782 Instead refer to "BC" tags and the camera CTS tests in the
16783 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16784 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16785 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16786 request and the result in order to be considered to be
16787 capability-compliant.<wbr/></p>
16788 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16789 then exposure time must be configurable via the request <em>and</em>
16790 the actual exposure applied must be available via
16791 the result.<wbr/></p>
16792 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16793 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16794 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16795 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16796 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16797 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16798 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16799 YUV_<wbr/>REPROCESSING capability must support the
16800 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16801 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16802 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16803 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16804 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16805 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16806 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16807 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16808 DEPTH).<wbr/></p>
16809             </td>
16810           </tr>
16811
16812           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16813            <!-- end of entry -->
16814         
16815                 
16816           <tr class="entry" id="static_android.request.availableRequestKeys">
16817             <td class="entry_name
16818              " rowspan="5">
16819               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16820             </td>
16821             <td class="entry_type">
16822                 <span class="entry_type_name">int32</span>
16823                 <span class="entry_type_container">x</span>
16824
16825                 <span class="entry_type_array">
16826                   n
16827                 </span>
16828               <span class="entry_type_visibility"> [ndk_public]</span>
16829
16830
16831               <span class="entry_type_hwlevel">[legacy] </span>
16832
16833
16834
16835
16836             </td> <!-- entry_type -->
16837
16838             <td class="entry_description">
16839               <p>A list of all keys that the camera device has available
16840 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16841             </td>
16842
16843             <td class="entry_units">
16844             </td>
16845
16846             <td class="entry_range">
16847             </td>
16848
16849             <td class="entry_hal_version">
16850               <p>3.<wbr/>2</p>
16851             </td>
16852
16853             <td class="entry_tags">
16854             </td>
16855
16856           </tr>
16857           <tr class="entries_header">
16858             <th class="th_details" colspan="6">Details</th>
16859           </tr>
16860           <tr class="entry_cont">
16861             <td class="entry_details" colspan="6">
16862               <p>Attempting to set a key into a CaptureRequest that is not
16863 listed here will result in an invalid request and will be rejected
16864 by the camera device.<wbr/></p>
16865 <p>This field can be used to query the feature set of a camera device
16866 at a more granular level than capabilities.<wbr/> This is especially
16867 important for optional keys that are not listed under any capability
16868 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16869             </td>
16870           </tr>
16871
16872           <tr class="entries_header">
16873             <th class="th_details" colspan="6">HAL Implementation Details</th>
16874           </tr>
16875           <tr class="entry_cont">
16876             <td class="entry_details" colspan="6">
16877               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16878 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16879 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16880 vendor extensions API and not against this field.<wbr/></p>
16881 <p>The HAL must not consume any request tags that are not listed either
16882 here or in the vendor tag list.<wbr/></p>
16883 <p>The public camera2 API will always make the vendor tags visible
16884 via
16885 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16886             </td>
16887           </tr>
16888
16889           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16890            <!-- end of entry -->
16891         
16892                 
16893           <tr class="entry" id="static_android.request.availableResultKeys">
16894             <td class="entry_name
16895              " rowspan="5">
16896               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16897             </td>
16898             <td class="entry_type">
16899                 <span class="entry_type_name">int32</span>
16900                 <span class="entry_type_container">x</span>
16901
16902                 <span class="entry_type_array">
16903                   n
16904                 </span>
16905               <span class="entry_type_visibility"> [ndk_public]</span>
16906
16907
16908               <span class="entry_type_hwlevel">[legacy] </span>
16909
16910
16911
16912
16913             </td> <!-- entry_type -->
16914
16915             <td class="entry_description">
16916               <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>
16917             </td>
16918
16919             <td class="entry_units">
16920             </td>
16921
16922             <td class="entry_range">
16923             </td>
16924
16925             <td class="entry_hal_version">
16926               <p>3.<wbr/>2</p>
16927             </td>
16928
16929             <td class="entry_tags">
16930             </td>
16931
16932           </tr>
16933           <tr class="entries_header">
16934             <th class="th_details" colspan="6">Details</th>
16935           </tr>
16936           <tr class="entry_cont">
16937             <td class="entry_details" colspan="6">
16938               <p>Attempting to get a key from a CaptureResult that is not
16939 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16940 a CaptureResult that is listed here will generally never return a <code>null</code>
16941 value.<wbr/></p>
16942 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16943 <ul>
16944 <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>
16945 </ul>
16946 <p>(Those sometimes-null keys will nevertheless be listed here
16947 if they are available.<wbr/>)</p>
16948 <p>This field can be used to query the feature set of a camera device
16949 at a more granular level than capabilities.<wbr/> This is especially
16950 important for optional keys that are not listed under any capability
16951 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16952             </td>
16953           </tr>
16954
16955           <tr class="entries_header">
16956             <th class="th_details" colspan="6">HAL Implementation Details</th>
16957           </tr>
16958           <tr class="entry_cont">
16959             <td class="entry_details" colspan="6">
16960               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16961 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16962 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16963 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16964 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16965 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16966 vendor extensions API and not against this field.<wbr/></p>
16967 <p>The HAL must not produce any result tags that are not listed either
16968 here or in the vendor tag list.<wbr/></p>
16969 <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>
16970             </td>
16971           </tr>
16972
16973           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16974            <!-- end of entry -->
16975         
16976                 
16977           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16978             <td class="entry_name
16979              " rowspan="5">
16980               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16981             </td>
16982             <td class="entry_type">
16983                 <span class="entry_type_name">int32</span>
16984                 <span class="entry_type_container">x</span>
16985
16986                 <span class="entry_type_array">
16987                   n
16988                 </span>
16989               <span class="entry_type_visibility"> [ndk_public]</span>
16990
16991
16992               <span class="entry_type_hwlevel">[legacy] </span>
16993
16994
16995
16996
16997             </td> <!-- entry_type -->
16998
16999             <td class="entry_description">
17000               <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>
17001             </td>
17002
17003             <td class="entry_units">
17004             </td>
17005
17006             <td class="entry_range">
17007             </td>
17008
17009             <td class="entry_hal_version">
17010               <p>3.<wbr/>2</p>
17011             </td>
17012
17013             <td class="entry_tags">
17014             </td>
17015
17016           </tr>
17017           <tr class="entries_header">
17018             <th class="th_details" colspan="6">Details</th>
17019           </tr>
17020           <tr class="entry_cont">
17021             <td class="entry_details" colspan="6">
17022               <p>This entry follows the same rules as
17023 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17024 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17025 details.<wbr/></p>
17026             </td>
17027           </tr>
17028
17029           <tr class="entries_header">
17030             <th class="th_details" colspan="6">HAL Implementation Details</th>
17031           </tr>
17032           <tr class="entry_cont">
17033             <td class="entry_details" colspan="6">
17034               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17035 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17036 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17037 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17038 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17039 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17040 vendor extensions API and not against this field.<wbr/></p>
17041 <p>The HAL must not have any tags in its static info that are not listed
17042 either here or in the vendor tag list.<wbr/></p>
17043 <p>The public camera2 API will always make the vendor tags visible
17044 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17045             </td>
17046           </tr>
17047
17048           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17049            <!-- end of entry -->
17050         
17051         
17052
17053       <!-- end of kind -->
17054       </tbody>
17055       <tr><td colspan="7" class="kind">dynamic</td></tr>
17056
17057       <thead class="entries_header">
17058         <tr>
17059           <th class="th_name">Property Name</th>
17060           <th class="th_type">Type</th>
17061           <th class="th_description">Description</th>
17062           <th class="th_units">Units</th>
17063           <th class="th_range">Range</th>
17064           <th class="th_hal_version">Initial HIDL HAL version</th>
17065           <th class="th_tags">Tags</th>
17066         </tr>
17067       </thead>
17068
17069       <tbody>
17070
17071         
17072
17073         
17074
17075         
17076
17077         
17078
17079                 
17080           <tr class="entry" id="dynamic_android.request.frameCount">
17081             <td class="entry_name
17082                 entry_name_deprecated
17083              " rowspan="3">
17084               android.<wbr/>request.<wbr/>frame<wbr/>Count
17085             </td>
17086             <td class="entry_type">
17087                 <span class="entry_type_name">int32</span>
17088
17089               <span class="entry_type_visibility"> [hidden]</span>
17090
17091
17092
17093               <span class="entry_type_deprecated">[deprecated] </span>
17094
17095
17096
17097             </td> <!-- entry_type -->
17098
17099             <td class="entry_description">
17100               <p>A frame counter set by the framework.<wbr/> This value monotonically
17101 increases with every new result (that is,<wbr/> each new result has a unique
17102 frameCount value).<wbr/></p>
17103             </td>
17104
17105             <td class="entry_units">
17106               count of frames
17107             </td>
17108
17109             <td class="entry_range">
17110               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17111               <p>&gt; 0</p>
17112             </td>
17113
17114             <td class="entry_hal_version">
17115               <p>3.<wbr/>2</p>
17116             </td>
17117
17118             <td class="entry_tags">
17119             </td>
17120
17121           </tr>
17122           <tr class="entries_header">
17123             <th class="th_details" colspan="6">Details</th>
17124           </tr>
17125           <tr class="entry_cont">
17126             <td class="entry_details" colspan="6">
17127               <p>Reset on release()</p>
17128             </td>
17129           </tr>
17130
17131
17132           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17133            <!-- end of entry -->
17134         
17135                 
17136           <tr class="entry" id="dynamic_android.request.id">
17137             <td class="entry_name
17138              " rowspan="1">
17139               android.<wbr/>request.<wbr/>id
17140             </td>
17141             <td class="entry_type">
17142                 <span class="entry_type_name">int32</span>
17143
17144               <span class="entry_type_visibility"> [hidden]</span>
17145
17146
17147
17148
17149
17150
17151             </td> <!-- entry_type -->
17152
17153             <td class="entry_description">
17154               <p>An application-specified ID for the current
17155 request.<wbr/> Must be maintained unchanged in output
17156 frame</p>
17157             </td>
17158
17159             <td class="entry_units">
17160               arbitrary integer assigned by application
17161             </td>
17162
17163             <td class="entry_range">
17164               <p>Any int</p>
17165             </td>
17166
17167             <td class="entry_hal_version">
17168               <p>3.<wbr/>2</p>
17169             </td>
17170
17171             <td class="entry_tags">
17172               <ul class="entry_tags">
17173                   <li><a href="#tag_V1">V1</a></li>
17174               </ul>
17175             </td>
17176
17177           </tr>
17178
17179
17180           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17181            <!-- end of entry -->
17182         
17183                 
17184           <tr class="entry" id="dynamic_android.request.metadataMode">
17185             <td class="entry_name
17186              " rowspan="1">
17187               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17188             </td>
17189             <td class="entry_type">
17190                 <span class="entry_type_name entry_type_name_enum">byte</span>
17191
17192               <span class="entry_type_visibility"> [system]</span>
17193
17194
17195
17196
17197
17198                 <ul class="entry_type_enum">
17199                   <li>
17200                     <span class="entry_type_enum_name">NONE</span>
17201                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17202 for application-bound buffer data.<wbr/> If no
17203 application-bound streams exist,<wbr/> no frame should be
17204 placed in the output frame queue.<wbr/> If such streams
17205 exist,<wbr/> a frame should be placed on the output queue
17206 with null metadata but with the necessary output buffer
17207 information.<wbr/> Timestamp information should still be
17208 included with any output stream buffers</p></span>
17209                   </li>
17210                   <li>
17211                     <span class="entry_type_enum_name">FULL</span>
17212                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17213 only be produced if they are separately
17214 enabled</p></span>
17215                   </li>
17216                 </ul>
17217
17218             </td> <!-- entry_type -->
17219
17220             <td class="entry_description">
17221               <p>How much metadata to produce on
17222 output</p>
17223             </td>
17224
17225             <td class="entry_units">
17226             </td>
17227
17228             <td class="entry_range">
17229             </td>
17230
17231             <td class="entry_hal_version">
17232               <p>3.<wbr/>2</p>
17233             </td>
17234
17235             <td class="entry_tags">
17236               <ul class="entry_tags">
17237                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17238               </ul>
17239             </td>
17240
17241           </tr>
17242
17243
17244           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17245            <!-- end of entry -->
17246         
17247                 
17248           <tr class="entry" id="dynamic_android.request.outputStreams">
17249             <td class="entry_name
17250                 entry_name_deprecated
17251              " rowspan="3">
17252               android.<wbr/>request.<wbr/>output<wbr/>Streams
17253             </td>
17254             <td class="entry_type">
17255                 <span class="entry_type_name">int32</span>
17256                 <span class="entry_type_container">x</span>
17257
17258                 <span class="entry_type_array">
17259                   n
17260                 </span>
17261               <span class="entry_type_visibility"> [system]</span>
17262
17263
17264
17265               <span class="entry_type_deprecated">[deprecated] </span>
17266
17267
17268
17269             </td> <!-- entry_type -->
17270
17271             <td class="entry_description">
17272               <p>Lists which camera output streams image data
17273 from this capture must be sent to</p>
17274             </td>
17275
17276             <td class="entry_units">
17277               List of camera stream IDs
17278             </td>
17279
17280             <td class="entry_range">
17281               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17282               <p>List must only include streams that have been
17283 created</p>
17284             </td>
17285
17286             <td class="entry_hal_version">
17287               <p>3.<wbr/>2</p>
17288             </td>
17289
17290             <td class="entry_tags">
17291               <ul class="entry_tags">
17292                   <li><a href="#tag_HAL2">HAL2</a></li>
17293               </ul>
17294             </td>
17295
17296           </tr>
17297           <tr class="entries_header">
17298             <th class="th_details" colspan="6">Details</th>
17299           </tr>
17300           <tr class="entry_cont">
17301             <td class="entry_details" colspan="6">
17302               <p>If no output streams are listed,<wbr/> then the image
17303 data should simply be discarded.<wbr/> The image data must
17304 still be captured for metadata and statistics production,<wbr/>
17305 and the lens and flash must operate as requested.<wbr/></p>
17306             </td>
17307           </tr>
17308
17309
17310           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17311            <!-- end of entry -->
17312         
17313                 
17314           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17315             <td class="entry_name
17316              " rowspan="5">
17317               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17318             </td>
17319             <td class="entry_type">
17320                 <span class="entry_type_name">byte</span>
17321
17322               <span class="entry_type_visibility"> [public]</span>
17323
17324
17325               <span class="entry_type_hwlevel">[legacy] </span>
17326
17327
17328
17329
17330             </td> <!-- entry_type -->
17331
17332             <td class="entry_description">
17333               <p>Specifies the number of pipeline stages the frame went
17334 through from when it was exposed to when the final completed result
17335 was available to the framework.<wbr/></p>
17336             </td>
17337
17338             <td class="entry_units">
17339             </td>
17340
17341             <td class="entry_range">
17342               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17343             </td>
17344
17345             <td class="entry_hal_version">
17346               <p>3.<wbr/>2</p>
17347             </td>
17348
17349             <td class="entry_tags">
17350             </td>
17351
17352           </tr>
17353           <tr class="entries_header">
17354             <th class="th_details" colspan="6">Details</th>
17355           </tr>
17356           <tr class="entry_cont">
17357             <td class="entry_details" colspan="6">
17358               <p>Depending on what settings are used in the request,<wbr/> and
17359 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17360 and some pipeline stages skipped.<wbr/></p>
17361 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17362             </td>
17363           </tr>
17364
17365           <tr class="entries_header">
17366             <th class="th_details" colspan="6">HAL Implementation Details</th>
17367           </tr>
17368           <tr class="entry_cont">
17369             <td class="entry_details" colspan="6">
17370               <p>This value must always represent the accurate count of how many
17371 pipeline stages were actually used.<wbr/></p>
17372             </td>
17373           </tr>
17374
17375           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17376            <!-- end of entry -->
17377         
17378         
17379
17380       <!-- end of kind -->
17381       </tbody>
17382
17383   <!-- end of section -->
17384   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17385
17386
17387       <tr><td colspan="7" class="kind">controls</td></tr>
17388
17389       <thead class="entries_header">
17390         <tr>
17391           <th class="th_name">Property Name</th>
17392           <th class="th_type">Type</th>
17393           <th class="th_description">Description</th>
17394           <th class="th_units">Units</th>
17395           <th class="th_range">Range</th>
17396           <th class="th_hal_version">Initial HIDL HAL version</th>
17397           <th class="th_tags">Tags</th>
17398         </tr>
17399       </thead>
17400
17401       <tbody>
17402
17403         
17404
17405         
17406
17407         
17408
17409         
17410
17411                 
17412           <tr class="entry" id="controls_android.scaler.cropRegion">
17413             <td class="entry_name
17414              " rowspan="5">
17415               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17416             </td>
17417             <td class="entry_type">
17418                 <span class="entry_type_name">int32</span>
17419                 <span class="entry_type_container">x</span>
17420
17421                 <span class="entry_type_array">
17422                   4
17423                 </span>
17424               <span class="entry_type_visibility"> [public as rectangle]</span>
17425
17426
17427               <span class="entry_type_hwlevel">[legacy] </span>
17428
17429
17430
17431
17432             </td> <!-- entry_type -->
17433
17434             <td class="entry_description">
17435               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17436             </td>
17437
17438             <td class="entry_units">
17439               Pixel coordinates relative to
17440           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17441             </td>
17442
17443             <td class="entry_range">
17444             </td>
17445
17446             <td class="entry_hal_version">
17447               <p>3.<wbr/>2</p>
17448             </td>
17449
17450             <td class="entry_tags">
17451               <ul class="entry_tags">
17452                   <li><a href="#tag_BC">BC</a></li>
17453               </ul>
17454             </td>
17455
17456           </tr>
17457           <tr class="entries_header">
17458             <th class="th_details" colspan="6">Details</th>
17459           </tr>
17460           <tr class="entry_cont">
17461             <td class="entry_details" colspan="6">
17462               <p>This control can be used to implement digital zoom.<wbr/></p>
17463 <p>The crop region coordinate system is based off
17464 <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
17465 top-left corner of the sensor active array.<wbr/></p>
17466 <p>Output streams use this rectangle to produce their output,<wbr/>
17467 cropping to a smaller region if necessary to maintain the
17468 stream's aspect ratio,<wbr/> then scaling the sensor input to
17469 match the output's configured resolution.<wbr/></p>
17470 <p>The crop region is applied after the RAW to other color
17471 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17472 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17473 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17474 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17475 be done to maximize the final pixel area of the stream.<wbr/></p>
17476 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17477 ratio,<wbr/> then 4:3 streams will use the exact crop
17478 region.<wbr/> 16:9 streams will further crop vertically
17479 (letterbox).<wbr/></p>
17480 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17481 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17482 streams will match exactly.<wbr/> These additional crops will
17483 be centered within the crop region.<wbr/></p>
17484 <p>The width and height of the crop region cannot
17485 be set to be smaller than
17486 <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
17487 <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>
17488 <p>The camera device may adjust the crop region to account
17489 for rounding and other hardware requirements; the final
17490 crop region used will be included in the output capture
17491 result.<wbr/></p>
17492             </td>
17493           </tr>
17494
17495           <tr class="entries_header">
17496             <th class="th_details" colspan="6">HAL Implementation Details</th>
17497           </tr>
17498           <tr class="entry_cont">
17499             <td class="entry_details" colspan="6">
17500               <p>The output streams must maintain square pixels at all
17501 times,<wbr/> no matter what the relative aspect ratios of the
17502 crop region and the stream are.<wbr/>  Negative values for
17503 corner are allowed for raw output if full pixel array is
17504 larger than active pixel array.<wbr/> Width and height may be
17505 rounded to nearest larger supportable width,<wbr/> especially
17506 for raw output,<wbr/> where only a few fixed scales may be
17507 possible.<wbr/></p>
17508 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17509 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17510 <ul>
17511 <li>
17512 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17513 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17514 <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>
17515 <ol>
17516 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17517 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17518 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17519 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17520 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17521 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17522 <li>Scale the width and height of requested cropRegion with scaling factor of
17523 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
17524 respectively.<wbr/>
17525 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17526 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17527 follow the general cropping rule for this new cropRegion and effective active
17528 array size.<wbr/></li>
17529 </ol>
17530 </li>
17531 <li>
17532 <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/>
17533 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17534 The reported cropRegion may be slightly different with the requested cropRegion since
17535 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17536 hardware limitations.<wbr/></p>
17537 </li>
17538 </ul>
17539 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17540             </td>
17541           </tr>
17542
17543           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17544            <!-- end of entry -->
17545         
17546         
17547
17548       <!-- end of kind -->
17549       </tbody>
17550       <tr><td colspan="7" class="kind">static</td></tr>
17551
17552       <thead class="entries_header">
17553         <tr>
17554           <th class="th_name">Property Name</th>
17555           <th class="th_type">Type</th>
17556           <th class="th_description">Description</th>
17557           <th class="th_units">Units</th>
17558           <th class="th_range">Range</th>
17559           <th class="th_hal_version">Initial HIDL HAL version</th>
17560           <th class="th_tags">Tags</th>
17561         </tr>
17562       </thead>
17563
17564       <tbody>
17565
17566         
17567
17568         
17569
17570         
17571
17572         
17573
17574                 
17575           <tr class="entry" id="static_android.scaler.availableFormats">
17576             <td class="entry_name
17577                 entry_name_deprecated
17578              " rowspan="5">
17579               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17580             </td>
17581             <td class="entry_type">
17582                 <span class="entry_type_name entry_type_name_enum">int32</span>
17583                 <span class="entry_type_container">x</span>
17584
17585                 <span class="entry_type_array">
17586                   n
17587                 </span>
17588               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17589
17590
17591
17592               <span class="entry_type_deprecated">[deprecated] </span>
17593
17594
17595                 <ul class="entry_type_enum">
17596                   <li>
17597                     <span class="entry_type_enum_name">RAW16</span>
17598                     <span class="entry_type_enum_optional">[optional]</span>
17599                     <span class="entry_type_enum_value">0x20</span>
17600                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17601 buffers with 16-bit pixels.<wbr/></p>
17602 <p>Buffers of this format are typically expected to have a
17603 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17604 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17605 CFAs that are not representable by a format in
17606 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17607 use this format.<wbr/></p>
17608 <p>Buffers of this format will also follow the constraints given for
17609 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17610 <p>This format is intended to give users access to the full contents
17611 of the buffers coming directly from the image sensor prior to any
17612 cropping or scaling operations,<wbr/> and all coordinate systems for
17613 metadata used for this format are relative to the size of the
17614 active region of the image sensor before any geometric distortion
17615 correction has been applied (i.<wbr/>e.<wbr/>
17616 <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
17617 dimensions for this format are limited to the full dimensions of
17618 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
17619 <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
17620 only supported output size).<wbr/></p>
17621 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17622 the full set of performance guarantees.<wbr/></p></span>
17623                   </li>
17624                   <li>
17625                     <span class="entry_type_enum_name">RAW_OPAQUE</span>
17626                     <span class="entry_type_enum_optional">[optional]</span>
17627                     <span class="entry_type_enum_value">0x24</span>
17628                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17629 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17630 as referred in public API) is a format for raw image buffers
17631 coming from an image sensor.<wbr/></p>
17632 <p>The actual structure of buffers of this format is
17633 platform-specific,<wbr/> but must follow several constraints:</p>
17634 <ol>
17635 <li>No image post-processing operations may have been applied to
17636 buffers of this type.<wbr/> These buffers contain raw image data coming
17637 directly from the image sensor.<wbr/></li>
17638 <li>If a buffer of this format is passed to the camera device for
17639 reprocessing,<wbr/> the resulting images will be identical to the images
17640 produced if the buffer had come directly from the sensor and was
17641 processed with the same settings.<wbr/></li>
17642 </ol>
17643 <p>The intended use for this format is to allow access to the native
17644 raw format buffers coming directly from the camera sensor without
17645 any additional conversions or decrease in framerate.<wbr/></p>
17646 <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
17647 performance guarantees.<wbr/></p></span>
17648                   </li>
17649                   <li>
17650                     <span class="entry_type_enum_name">YV12</span>
17651                     <span class="entry_type_enum_optional">[optional]</span>
17652                     <span class="entry_type_enum_value">0x32315659</span>
17653                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17654                   </li>
17655                   <li>
17656                     <span class="entry_type_enum_name">YCrCb_420_SP</span>
17657                     <span class="entry_type_enum_optional">[optional]</span>
17658                     <span class="entry_type_enum_value">0x11</span>
17659                     <span class="entry_type_enum_notes"><p>NV21</p></span>
17660                   </li>
17661                   <li>
17662                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
17663                     <span class="entry_type_enum_value">0x22</span>
17664                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17665                   </li>
17666                   <li>
17667                     <span class="entry_type_enum_name">YCbCr_420_888</span>
17668                     <span class="entry_type_enum_value">0x23</span>
17669                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17670                   </li>
17671                   <li>
17672                     <span class="entry_type_enum_name">BLOB</span>
17673                     <span class="entry_type_enum_value">0x21</span>
17674                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17675                   </li>
17676                 </ul>
17677
17678             </td> <!-- entry_type -->
17679
17680             <td class="entry_description">
17681               <p>The list of image formats that are supported by this
17682 camera device for output streams.<wbr/></p>
17683             </td>
17684
17685             <td class="entry_units">
17686             </td>
17687
17688             <td class="entry_range">
17689               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17690             </td>
17691
17692             <td class="entry_hal_version">
17693               <p>3.<wbr/>2</p>
17694             </td>
17695
17696             <td class="entry_tags">
17697               <ul class="entry_tags">
17698                   <li><a href="#tag_BC">BC</a></li>
17699               </ul>
17700             </td>
17701
17702           </tr>
17703           <tr class="entries_header">
17704             <th class="th_details" colspan="6">Details</th>
17705           </tr>
17706           <tr class="entry_cont">
17707             <td class="entry_details" colspan="6">
17708               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17709 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17710             </td>
17711           </tr>
17712
17713           <tr class="entries_header">
17714             <th class="th_details" colspan="6">HAL Implementation Details</th>
17715           </tr>
17716           <tr class="entry_cont">
17717             <td class="entry_details" colspan="6">
17718               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17719 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17720 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17721 gralloc module will select a format based on the usage flags provided
17722 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17723 usually used by preview and recording streams,<wbr/> where the application doesn't
17724 need access the image data.<wbr/></p>
17725 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17726 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17727 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17728 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17729 recommended that any information used by the camera device when
17730 processing images is fully expressed by the result metadata
17731 for that image buffer.<wbr/></p>
17732             </td>
17733           </tr>
17734
17735           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17736            <!-- end of entry -->
17737         
17738                 
17739           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
17740             <td class="entry_name
17741                 entry_name_deprecated
17742              " rowspan="3">
17743               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
17744             </td>
17745             <td class="entry_type">
17746                 <span class="entry_type_name">int64</span>
17747                 <span class="entry_type_container">x</span>
17748
17749                 <span class="entry_type_array">
17750                   n
17751                 </span>
17752               <span class="entry_type_visibility"> [hidden]</span>
17753
17754
17755
17756               <span class="entry_type_deprecated">[deprecated] </span>
17757
17758
17759
17760             </td> <!-- entry_type -->
17761
17762             <td class="entry_description">
17763               <p>The minimum frame duration that is supported
17764 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
17765             </td>
17766
17767             <td class="entry_units">
17768               Nanoseconds
17769             </td>
17770
17771             <td class="entry_range">
17772               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17773               <p>TODO: Remove property.<wbr/></p>
17774             </td>
17775
17776             <td class="entry_hal_version">
17777               <p>3.<wbr/>2</p>
17778             </td>
17779
17780             <td class="entry_tags">
17781               <ul class="entry_tags">
17782                   <li><a href="#tag_BC">BC</a></li>
17783               </ul>
17784             </td>
17785
17786           </tr>
17787           <tr class="entries_header">
17788             <th class="th_details" colspan="6">Details</th>
17789           </tr>
17790           <tr class="entry_cont">
17791             <td class="entry_details" colspan="6">
17792               <p>This corresponds to the minimum steady-state frame duration when only
17793 that JPEG stream is active and captured in a burst,<wbr/> with all
17794 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17795 <p>When multiple streams are configured,<wbr/> the minimum
17796 frame duration will be &gt;= max(individual stream min
17797 durations)</p>
17798             </td>
17799           </tr>
17800
17801
17802           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17803            <!-- end of entry -->
17804         
17805                 
17806           <tr class="entry" id="static_android.scaler.availableJpegSizes">
17807             <td class="entry_name
17808                 entry_name_deprecated
17809              " rowspan="5">
17810               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17811             </td>
17812             <td class="entry_type">
17813                 <span class="entry_type_name">int32</span>
17814                 <span class="entry_type_container">x</span>
17815
17816                 <span class="entry_type_array">
17817                   n x 2
17818                 </span>
17819               <span class="entry_type_visibility"> [hidden as size]</span>
17820
17821
17822
17823               <span class="entry_type_deprecated">[deprecated] </span>
17824
17825
17826
17827             </td> <!-- entry_type -->
17828
17829             <td class="entry_description">
17830               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17831             </td>
17832
17833             <td class="entry_units">
17834             </td>
17835
17836             <td class="entry_range">
17837               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17838               <p>TODO: Remove property.<wbr/></p>
17839             </td>
17840
17841             <td class="entry_hal_version">
17842               <p>3.<wbr/>2</p>
17843             </td>
17844
17845             <td class="entry_tags">
17846               <ul class="entry_tags">
17847                   <li><a href="#tag_BC">BC</a></li>
17848               </ul>
17849             </td>
17850
17851           </tr>
17852           <tr class="entries_header">
17853             <th class="th_details" colspan="6">Details</th>
17854           </tr>
17855           <tr class="entry_cont">
17856             <td class="entry_details" colspan="6">
17857               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17858 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>
17859             </td>
17860           </tr>
17861
17862           <tr class="entries_header">
17863             <th class="th_details" colspan="6">HAL Implementation Details</th>
17864           </tr>
17865           <tr class="entry_cont">
17866             <td class="entry_details" colspan="6">
17867               <p>The HAL must include sensor maximum resolution
17868 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17869 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17870             </td>
17871           </tr>
17872
17873           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17874            <!-- end of entry -->
17875         
17876                 
17877           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17878             <td class="entry_name
17879              " rowspan="3">
17880               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17881             </td>
17882             <td class="entry_type">
17883                 <span class="entry_type_name">float</span>
17884
17885               <span class="entry_type_visibility"> [public]</span>
17886
17887
17888               <span class="entry_type_hwlevel">[legacy] </span>
17889
17890
17891
17892
17893             </td> <!-- entry_type -->
17894
17895             <td class="entry_description">
17896               <p>The maximum ratio between both active area width
17897 and crop region width,<wbr/> and active area height and
17898 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17899             </td>
17900
17901             <td class="entry_units">
17902               Zoom scale factor
17903             </td>
17904
17905             <td class="entry_range">
17906               <p>&gt;=1</p>
17907             </td>
17908
17909             <td class="entry_hal_version">
17910               <p>3.<wbr/>2</p>
17911             </td>
17912
17913             <td class="entry_tags">
17914               <ul class="entry_tags">
17915                   <li><a href="#tag_BC">BC</a></li>
17916               </ul>
17917             </td>
17918
17919           </tr>
17920           <tr class="entries_header">
17921             <th class="th_details" colspan="6">Details</th>
17922           </tr>
17923           <tr class="entry_cont">
17924             <td class="entry_details" colspan="6">
17925               <p>This represents the maximum amount of zooming possible by
17926 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
17927 window size.<wbr/></p>
17928 <p>Crop regions that have a width or height that is smaller
17929 than this ratio allows will be rounded up to the minimum
17930 allowed size by the camera device.<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="static_android.scaler.availableProcessedMinDurations">
17940             <td class="entry_name
17941                 entry_name_deprecated
17942              " rowspan="3">
17943               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
17944             </td>
17945             <td class="entry_type">
17946                 <span class="entry_type_name">int64</span>
17947                 <span class="entry_type_container">x</span>
17948
17949                 <span class="entry_type_array">
17950                   n
17951                 </span>
17952               <span class="entry_type_visibility"> [hidden]</span>
17953
17954
17955
17956               <span class="entry_type_deprecated">[deprecated] </span>
17957
17958
17959
17960             </td> <!-- entry_type -->
17961
17962             <td class="entry_description">
17963               <p>For each available processed output size (defined in
17964 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17965 minimum supportable frame duration for that size.<wbr/></p>
17966             </td>
17967
17968             <td class="entry_units">
17969               Nanoseconds
17970             </td>
17971
17972             <td class="entry_range">
17973               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17974             </td>
17975
17976             <td class="entry_hal_version">
17977               <p>3.<wbr/>2</p>
17978             </td>
17979
17980             <td class="entry_tags">
17981               <ul class="entry_tags">
17982                   <li><a href="#tag_BC">BC</a></li>
17983               </ul>
17984             </td>
17985
17986           </tr>
17987           <tr class="entries_header">
17988             <th class="th_details" colspan="6">Details</th>
17989           </tr>
17990           <tr class="entry_cont">
17991             <td class="entry_details" colspan="6">
17992               <p>This should correspond to the frame duration when only that processed
17993 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17994 set to FAST.<wbr/></p>
17995 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
17996 be &gt;= max(individual stream min durations).<wbr/></p>
17997             </td>
17998           </tr>
17999
18000
18001           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18002            <!-- end of entry -->
18003         
18004                 
18005           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18006             <td class="entry_name
18007                 entry_name_deprecated
18008              " rowspan="5">
18009               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18010             </td>
18011             <td class="entry_type">
18012                 <span class="entry_type_name">int32</span>
18013                 <span class="entry_type_container">x</span>
18014
18015                 <span class="entry_type_array">
18016                   n x 2
18017                 </span>
18018               <span class="entry_type_visibility"> [hidden as size]</span>
18019
18020
18021
18022               <span class="entry_type_deprecated">[deprecated] </span>
18023
18024
18025
18026             </td> <!-- entry_type -->
18027
18028             <td class="entry_description">
18029               <p>The resolutions available for use with
18030 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18031 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18032 encoders.<wbr/></p>
18033             </td>
18034
18035             <td class="entry_units">
18036             </td>
18037
18038             <td class="entry_range">
18039               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18040             </td>
18041
18042             <td class="entry_hal_version">
18043               <p>3.<wbr/>2</p>
18044             </td>
18045
18046             <td class="entry_tags">
18047               <ul class="entry_tags">
18048                   <li><a href="#tag_BC">BC</a></li>
18049               </ul>
18050             </td>
18051
18052           </tr>
18053           <tr class="entries_header">
18054             <th class="th_details" colspan="6">Details</th>
18055           </tr>
18056           <tr class="entry_cont">
18057             <td class="entry_details" colspan="6">
18058               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18059 <p>For a given use case,<wbr/> the actual maximum supported resolution
18060 may be lower than what is listed here,<wbr/> depending on the destination
18061 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18062 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18063 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18064 can provide.<wbr/></p>
18065 <p>Please reference the documentation for the image data destination to
18066 check if it limits the maximum size for image data.<wbr/></p>
18067             </td>
18068           </tr>
18069
18070           <tr class="entries_header">
18071             <th class="th_details" colspan="6">HAL Implementation Details</th>
18072           </tr>
18073           <tr class="entry_cont">
18074             <td class="entry_details" colspan="6">
18075               <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/>
18076 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>
18077 and each below resolution if it is smaller than or equal to the sensor
18078 maximum resolution (if they are not listed in JPEG sizes already):</p>
18079 <ul>
18080 <li>240p (320 x 240)</li>
18081 <li>480p (640 x 480)</li>
18082 <li>720p (1280 x 720)</li>
18083 <li>1080p (1920 x 1080)</li>
18084 </ul>
18085 <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/>
18086 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18087             </td>
18088           </tr>
18089
18090           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18091            <!-- end of entry -->
18092         
18093                 
18094           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18095             <td class="entry_name
18096                 entry_name_deprecated
18097              " rowspan="3">
18098               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18099             </td>
18100             <td class="entry_type">
18101                 <span class="entry_type_name">int64</span>
18102                 <span class="entry_type_container">x</span>
18103
18104                 <span class="entry_type_array">
18105                   n
18106                 </span>
18107               <span class="entry_type_visibility"> [system]</span>
18108
18109
18110
18111               <span class="entry_type_deprecated">[deprecated] </span>
18112
18113
18114
18115             </td> <!-- entry_type -->
18116
18117             <td class="entry_description">
18118               <p>For each available raw output size (defined in
18119 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18120 supportable frame duration for that size.<wbr/></p>
18121             </td>
18122
18123             <td class="entry_units">
18124               Nanoseconds
18125             </td>
18126
18127             <td class="entry_range">
18128               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18129             </td>
18130
18131             <td class="entry_hal_version">
18132               <p>3.<wbr/>2</p>
18133             </td>
18134
18135             <td class="entry_tags">
18136               <ul class="entry_tags">
18137                   <li><a href="#tag_BC">BC</a></li>
18138               </ul>
18139             </td>
18140
18141           </tr>
18142           <tr class="entries_header">
18143             <th class="th_details" colspan="6">Details</th>
18144           </tr>
18145           <tr class="entry_cont">
18146             <td class="entry_details" colspan="6">
18147               <p>Should correspond to the frame duration when only the raw stream is
18148 active.<wbr/></p>
18149 <p>When multiple streams are configured,<wbr/> the minimum
18150 frame duration will be &gt;= max(individual stream min
18151 durations)</p>
18152             </td>
18153           </tr>
18154
18155
18156           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18157            <!-- end of entry -->
18158         
18159                 
18160           <tr class="entry" id="static_android.scaler.availableRawSizes">
18161             <td class="entry_name
18162                 entry_name_deprecated
18163              " rowspan="1">
18164               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18165             </td>
18166             <td class="entry_type">
18167                 <span class="entry_type_name">int32</span>
18168                 <span class="entry_type_container">x</span>
18169
18170                 <span class="entry_type_array">
18171                   n x 2
18172                 </span>
18173               <span class="entry_type_visibility"> [system as size]</span>
18174
18175
18176
18177               <span class="entry_type_deprecated">[deprecated] </span>
18178
18179
18180
18181             </td> <!-- entry_type -->
18182
18183             <td class="entry_description">
18184               <p>The resolutions available for use with raw
18185 sensor output streams,<wbr/> listed as width,<wbr/>
18186 height</p>
18187             </td>
18188
18189             <td class="entry_units">
18190             </td>
18191
18192             <td class="entry_range">
18193               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18194             </td>
18195
18196             <td class="entry_hal_version">
18197               <p>3.<wbr/>2</p>
18198             </td>
18199
18200             <td class="entry_tags">
18201             </td>
18202
18203           </tr>
18204
18205
18206           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18207            <!-- end of entry -->
18208         
18209                 
18210           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18211             <td class="entry_name
18212              " rowspan="5">
18213               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18214             </td>
18215             <td class="entry_type">
18216                 <span class="entry_type_name">int32</span>
18217
18218               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18219
18220
18221
18222
18223
18224
18225             </td> <!-- entry_type -->
18226
18227             <td class="entry_description">
18228               <p>The mapping of image formats that are supported by this
18229 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18230             </td>
18231
18232             <td class="entry_units">
18233             </td>
18234
18235             <td class="entry_range">
18236             </td>
18237
18238             <td class="entry_hal_version">
18239               <p>3.<wbr/>2</p>
18240             </td>
18241
18242             <td class="entry_tags">
18243               <ul class="entry_tags">
18244                   <li><a href="#tag_REPROC">REPROC</a></li>
18245               </ul>
18246             </td>
18247
18248           </tr>
18249           <tr class="entries_header">
18250             <th class="th_details" colspan="6">Details</th>
18251           </tr>
18252           <tr class="entry_cont">
18253             <td class="entry_details" colspan="6">
18254               <p>All camera devices with at least 1
18255 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18256 available input format.<wbr/></p>
18257 <p>The camera device will support the following map of formats,<wbr/>
18258 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18259 <table>
18260 <thead>
18261 <tr>
18262 <th align="left">Input Format</th>
18263 <th align="left">Output Format</th>
18264 <th align="left">Capability</th>
18265 </tr>
18266 </thead>
18267 <tbody>
18268 <tr>
18269 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18270 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18271 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18272 </tr>
18273 <tr>
18274 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18275 <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>
18276 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18277 </tr>
18278 <tr>
18279 <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>
18280 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18281 <td align="left">YUV_<wbr/>REPROCESSING</td>
18282 </tr>
18283 <tr>
18284 <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>
18285 <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>
18286 <td align="left">YUV_<wbr/>REPROCESSING</td>
18287 </tr>
18288 </tbody>
18289 </table>
18290 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18291 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18292 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18293 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18294 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>
18295 <p>Attempting to configure an input stream with output streams not
18296 listed as available in this map is not valid.<wbr/></p>
18297             </td>
18298           </tr>
18299
18300           <tr class="entries_header">
18301             <th class="th_details" colspan="6">HAL Implementation Details</th>
18302           </tr>
18303           <tr class="entry_cont">
18304             <td class="entry_details" colspan="6">
18305               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18306 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18307 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18308 the actual format by using the gralloc usage flags.<wbr/>
18309 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18310 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18311 See camera3.<wbr/>h for more details.<wbr/></p>
18312 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18313 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18314 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18315 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18316 <p>A code sample to read/<wbr/>write this encoding (with a device that
18317 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18318 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18319 <pre><code>//<wbr/> reading
18320 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18321 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18322     int32_<wbr/>t format = contents[i++];
18323     int32_<wbr/>t length = contents[i++];
18324     int32_<wbr/>t output_<wbr/>formats[length];
18325     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18326            length * sizeof(int32_<wbr/>t));
18327     i += length;
18328 }
18329
18330 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18331 int32_<wbr/>t[] contents = {
18332   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18333   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18334 };
18335 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18336       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18337 </code></pre>
18338 <p>If the HAL claims to support any of the capabilities listed in the
18339 above details,<wbr/> then it must also support all the input-output
18340 combinations listed for that capability.<wbr/> It can optionally support
18341 additional formats if it so chooses.<wbr/></p>
18342             </td>
18343           </tr>
18344
18345           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18346            <!-- end of entry -->
18347         
18348                 
18349           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18350             <td class="entry_name
18351              " rowspan="5">
18352               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18353             </td>
18354             <td class="entry_type">
18355                 <span class="entry_type_name entry_type_name_enum">int32</span>
18356                 <span class="entry_type_container">x</span>
18357
18358                 <span class="entry_type_array">
18359                   n x 4
18360                 </span>
18361               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18362
18363
18364               <span class="entry_type_hwlevel">[legacy] </span>
18365
18366
18367
18368                 <ul class="entry_type_enum">
18369                   <li>
18370                     <span class="entry_type_enum_name">OUTPUT</span>
18371                   </li>
18372                   <li>
18373                     <span class="entry_type_enum_name">INPUT</span>
18374                   </li>
18375                 </ul>
18376
18377             </td> <!-- entry_type -->
18378
18379             <td class="entry_description">
18380               <p>The available stream configurations that this
18381 camera device supports
18382 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18383             </td>
18384
18385             <td class="entry_units">
18386             </td>
18387
18388             <td class="entry_range">
18389             </td>
18390
18391             <td class="entry_hal_version">
18392               <p>3.<wbr/>2</p>
18393             </td>
18394
18395             <td class="entry_tags">
18396             </td>
18397
18398           </tr>
18399           <tr class="entries_header">
18400             <th class="th_details" colspan="6">Details</th>
18401           </tr>
18402           <tr class="entry_cont">
18403             <td class="entry_details" colspan="6">
18404               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18405 tuples.<wbr/></p>
18406 <p>For a given use case,<wbr/> the actual maximum supported resolution
18407 may be lower than what is listed here,<wbr/> depending on the destination
18408 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18409 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18410 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18411 can provide.<wbr/></p>
18412 <p>Please reference the documentation for the image data destination to
18413 check if it limits the maximum size for image data.<wbr/></p>
18414 <p>Not all output formats may be supported in a configuration with
18415 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18416 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18417 <p>The following table describes the minimum required output stream
18418 configurations based on the hardware level
18419 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18420 <table>
18421 <thead>
18422 <tr>
18423 <th align="center">Format</th>
18424 <th align="center">Size</th>
18425 <th align="center">Hardware Level</th>
18426 <th align="center">Notes</th>
18427 </tr>
18428 </thead>
18429 <tbody>
18430 <tr>
18431 <td align="center">JPEG</td>
18432 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18433 <td align="center">Any</td>
18434 <td align="center"></td>
18435 </tr>
18436 <tr>
18437 <td align="center">JPEG</td>
18438 <td align="center">1920x1080 (1080p)</td>
18439 <td align="center">Any</td>
18440 <td align="center">if 1080p &lt;= activeArraySize</td>
18441 </tr>
18442 <tr>
18443 <td align="center">JPEG</td>
18444 <td align="center">1280x720 (720)</td>
18445 <td align="center">Any</td>
18446 <td align="center">if 720p &lt;= activeArraySize</td>
18447 </tr>
18448 <tr>
18449 <td align="center">JPEG</td>
18450 <td align="center">640x480 (480p)</td>
18451 <td align="center">Any</td>
18452 <td align="center">if 480p &lt;= activeArraySize</td>
18453 </tr>
18454 <tr>
18455 <td align="center">JPEG</td>
18456 <td align="center">320x240 (240p)</td>
18457 <td align="center">Any</td>
18458 <td align="center">if 240p &lt;= activeArraySize</td>
18459 </tr>
18460 <tr>
18461 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18462 <td align="center">all output sizes available for JPEG</td>
18463 <td align="center">FULL</td>
18464 <td align="center"></td>
18465 </tr>
18466 <tr>
18467 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18468 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18469 <td align="center">LIMITED</td>
18470 <td align="center"></td>
18471 </tr>
18472 <tr>
18473 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18474 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18475 <td align="center">Any</td>
18476 <td align="center"></td>
18477 </tr>
18478 </tbody>
18479 </table>
18480 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18481 mandatory stream configurations on a per-capability basis.<wbr/></p>
18482             </td>
18483           </tr>
18484
18485           <tr class="entries_header">
18486             <th class="th_details" colspan="6">HAL Implementation Details</th>
18487           </tr>
18488           <tr class="entry_cont">
18489             <td class="entry_details" colspan="6">
18490               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18491 of sensor maximum resolution for JPEG formats (regardless of hardware
18492 level).<wbr/></p>
18493 <p>(The following is a rewording of the above required table):</p>
18494 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18495 <ul>
18496 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18497 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18498 (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/>
18499 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18500 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18501 the dimensions being a multiple of 16.<wbr/></li>
18502 </ul>
18503 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18504 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18505 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18506 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18507 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18508 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18509 3264x2448.<wbr/></p>
18510 <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/>
18511 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18512 here as output streams.<wbr/></p>
18513 <p>It must also include each below resolution if it is smaller than or
18514 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18515 formats),<wbr/> as output streams:</p>
18516 <ul>
18517 <li>240p (320 x 240)</li>
18518 <li>480p (640 x 480)</li>
18519 <li>720p (1280 x 720)</li>
18520 <li>1080p (1920 x 1080)</li>
18521 </ul>
18522 <p>For LIMITED capability devices
18523 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18524 the HAL only has to list up to the maximum video size
18525 supported by the device.<wbr/></p>
18526 <p>Regardless of hardware level,<wbr/> every output resolution available for
18527 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18528 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18529 <ul>
18530 <li>availableFormats</li>
18531 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18532 </ul>
18533             </td>
18534           </tr>
18535
18536           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18537            <!-- end of entry -->
18538         
18539                 
18540           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18541             <td class="entry_name
18542              " rowspan="3">
18543               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18544             </td>
18545             <td class="entry_type">
18546                 <span class="entry_type_name">int64</span>
18547                 <span class="entry_type_container">x</span>
18548
18549                 <span class="entry_type_array">
18550                   4 x n
18551                 </span>
18552               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18553
18554
18555               <span class="entry_type_hwlevel">[legacy] </span>
18556
18557
18558
18559
18560             </td> <!-- entry_type -->
18561
18562             <td class="entry_description">
18563               <p>This lists the minimum frame duration for each
18564 format/<wbr/>size combination.<wbr/></p>
18565             </td>
18566
18567             <td class="entry_units">
18568               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18569             </td>
18570
18571             <td class="entry_range">
18572             </td>
18573
18574             <td class="entry_hal_version">
18575               <p>3.<wbr/>2</p>
18576             </td>
18577
18578             <td class="entry_tags">
18579               <ul class="entry_tags">
18580                   <li><a href="#tag_V1">V1</a></li>
18581               </ul>
18582             </td>
18583
18584           </tr>
18585           <tr class="entries_header">
18586             <th class="th_details" colspan="6">Details</th>
18587           </tr>
18588           <tr class="entry_cont">
18589             <td class="entry_details" colspan="6">
18590               <p>This should correspond to the frame duration when only that
18591 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18592 set to either OFF or FAST.<wbr/></p>
18593 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18594 duration will be max(individual stream min durations).<wbr/></p>
18595 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18596 is the same regardless of whether the stream is input or output.<wbr/></p>
18597 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18598 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18599 calculating the max frame rate.<wbr/></p>
18600             </td>
18601           </tr>
18602
18603
18604           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18605            <!-- end of entry -->
18606         
18607                 
18608           <tr class="entry" id="static_android.scaler.availableStallDurations">
18609             <td class="entry_name
18610              " rowspan="5">
18611               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18612             </td>
18613             <td class="entry_type">
18614                 <span class="entry_type_name">int64</span>
18615                 <span class="entry_type_container">x</span>
18616
18617                 <span class="entry_type_array">
18618                   4 x n
18619                 </span>
18620               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18621
18622
18623               <span class="entry_type_hwlevel">[legacy] </span>
18624
18625
18626
18627
18628             </td> <!-- entry_type -->
18629
18630             <td class="entry_description">
18631               <p>This lists the maximum stall duration for each
18632 output format/<wbr/>size combination.<wbr/></p>
18633             </td>
18634
18635             <td class="entry_units">
18636               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18637             </td>
18638
18639             <td class="entry_range">
18640             </td>
18641
18642             <td class="entry_hal_version">
18643               <p>3.<wbr/>2</p>
18644             </td>
18645
18646             <td class="entry_tags">
18647               <ul class="entry_tags">
18648                   <li><a href="#tag_V1">V1</a></li>
18649               </ul>
18650             </td>
18651
18652           </tr>
18653           <tr class="entries_header">
18654             <th class="th_details" colspan="6">Details</th>
18655           </tr>
18656           <tr class="entry_cont">
18657             <td class="entry_details" colspan="6">
18658               <p>A stall duration is how much extra time would get added
18659 to the normal minimum frame duration for a repeating request
18660 that has streams with non-zero stall.<wbr/></p>
18661 <p>For example,<wbr/> consider JPEG captures which have the following
18662 characteristics:</p>
18663 <ul>
18664 <li>JPEG streams act like processed YUV streams in requests for which
18665 they are not included; in requests in which they are directly
18666 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18667 JPEG stream requires the underlying YUV data to always be ready for
18668 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18669 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18670 <li>The JPEG processor can run concurrently to the rest of the camera
18671 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18672 </ul>
18673 <p>In other words,<wbr/> using a repeating YUV request would result
18674 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18675 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18676 at 30 FPS (as long as we wait for the previous JPEG to return each
18677 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18678 the frame rate will drop from 30 FPS.<wbr/></p>
18679 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18680 stream will <em>not</em> cause a frame rate drop unless there are still
18681 outstanding buffers for that stream from previous requests.<wbr/></p>
18682 <p>Submitting a repeating request with streams (call this <code>S</code>)
18683 is the same as setting the minimum frame duration from
18684 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18685 the maximum stall duration for <code>S</code>.<wbr/></p>
18686 <p>If interleaving requests with and without a stall duration,<wbr/>
18687 a request will stall by the maximum of the remaining times
18688 for each can-stall stream with outstanding buffers.<wbr/></p>
18689 <p>This means that a stalling request will not have an exposure start
18690 until the stall has completed.<wbr/></p>
18691 <p>This should correspond to the stall duration when only that stream is
18692 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18693 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18694 effectively results in an indeterminate stall duration for all
18695 streams in a request (the regular stall calculation rules are
18696 ignored).<wbr/></p>
18697 <p>The following formats may always have a stall duration:</p>
18698 <ul>
18699 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18700 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18701 </ul>
18702 <p>The following formats will never have a stall duration:</p>
18703 <ul>
18704 <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>
18705 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18706 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18707 </ul>
18708 <p>All other formats may or may not have an allowed stall duration on
18709 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18710 for more details.<wbr/></p>
18711 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18712 calculating the max frame rate (absent stalls).<wbr/></p>
18713             </td>
18714           </tr>
18715
18716           <tr class="entries_header">
18717             <th class="th_details" colspan="6">HAL Implementation Details</th>
18718           </tr>
18719           <tr class="entry_cont">
18720             <td class="entry_details" colspan="6">
18721               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18722 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18723 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18724             </td>
18725           </tr>
18726
18727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18728            <!-- end of entry -->
18729         
18730                 
18731           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
18732             <td class="entry_name
18733              " rowspan="5">
18734               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
18735             </td>
18736             <td class="entry_type">
18737                 <span class="entry_type_name">int32</span>
18738
18739               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
18740
18741               <span class="entry_type_synthetic">[synthetic] </span>
18742
18743               <span class="entry_type_hwlevel">[legacy] </span>
18744
18745
18746
18747
18748             </td> <!-- entry_type -->
18749
18750             <td class="entry_description">
18751               <p>The available stream configurations that this
18752 camera device supports; also includes the minimum frame durations
18753 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
18754             </td>
18755
18756             <td class="entry_units">
18757             </td>
18758
18759             <td class="entry_range">
18760             </td>
18761
18762             <td class="entry_hal_version">
18763               <p>3.<wbr/>2</p>
18764             </td>
18765
18766             <td class="entry_tags">
18767             </td>
18768
18769           </tr>
18770           <tr class="entries_header">
18771             <th class="th_details" colspan="6">Details</th>
18772           </tr>
18773           <tr class="entry_cont">
18774             <td class="entry_details" colspan="6">
18775               <p>All camera devices will support sensor maximum resolution (defined by
18776 <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>
18777 <p>For a given use case,<wbr/> the actual maximum supported resolution
18778 may be lower than what is listed here,<wbr/> depending on the destination
18779 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18780 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18781 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18782 can provide.<wbr/></p>
18783 <p>Please reference the documentation for the image data destination to
18784 check if it limits the maximum size for image data.<wbr/></p>
18785 <p>The following table describes the minimum required output stream
18786 configurations based on the hardware level
18787 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18788 <table>
18789 <thead>
18790 <tr>
18791 <th align="center">Format</th>
18792 <th align="center">Size</th>
18793 <th align="center">Hardware Level</th>
18794 <th align="center">Notes</th>
18795 </tr>
18796 </thead>
18797 <tbody>
18798 <tr>
18799 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18800 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
18801 <td align="center">Any</td>
18802 <td align="center"></td>
18803 </tr>
18804 <tr>
18805 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18806 <td align="center">1920x1080 (1080p)</td>
18807 <td align="center">Any</td>
18808 <td align="center">if 1080p &lt;= activeArraySize</td>
18809 </tr>
18810 <tr>
18811 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18812 <td align="center">1280x720 (720p)</td>
18813 <td align="center">Any</td>
18814 <td align="center">if 720p &lt;= activeArraySize</td>
18815 </tr>
18816 <tr>
18817 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18818 <td align="center">640x480 (480p)</td>
18819 <td align="center">Any</td>
18820 <td align="center">if 480p &lt;= activeArraySize</td>
18821 </tr>
18822 <tr>
18823 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18824 <td align="center">320x240 (240p)</td>
18825 <td align="center">Any</td>
18826 <td align="center">if 240p &lt;= activeArraySize</td>
18827 </tr>
18828 <tr>
18829 <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>
18830 <td align="center">all output sizes available for JPEG</td>
18831 <td align="center">FULL</td>
18832 <td align="center"></td>
18833 </tr>
18834 <tr>
18835 <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>
18836 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18837 <td align="center">LIMITED</td>
18838 <td align="center"></td>
18839 </tr>
18840 <tr>
18841 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18842 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18843 <td align="center">Any</td>
18844 <td align="center"></td>
18845 </tr>
18846 </tbody>
18847 </table>
18848 <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
18849 stream configurations on a per-capability basis.<wbr/></p>
18850 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18851 <ul>
18852 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18853 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18854 (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/>
18855 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18856 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18857 the dimensions being a multiple of 16.<wbr/>
18858 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18859 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18860 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18861 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18862 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18863 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18864 3264x2448.<wbr/></li>
18865 </ul>
18866             </td>
18867           </tr>
18868
18869           <tr class="entries_header">
18870             <th class="th_details" colspan="6">HAL Implementation Details</th>
18871           </tr>
18872           <tr class="entry_cont">
18873             <td class="entry_details" colspan="6">
18874               <p>Do not set this property directly
18875 (it is synthetic and will not be available at the HAL layer);
18876 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18877 <p>Not all output formats may be supported in a configuration with
18878 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18879 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18880 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18881 of sensor maximum resolution for JPEG formats (regardless of hardware
18882 level).<wbr/></p>
18883 <p>(The following is a rewording of the above required table):</p>
18884 <p>The HAL must include sensor maximum resolution (defined by
18885 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18886 <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/>
18887 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18888 here as output streams.<wbr/></p>
18889 <p>It must also include each below resolution if it is smaller than or
18890 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18891 formats),<wbr/> as output streams:</p>
18892 <ul>
18893 <li>240p (320 x 240)</li>
18894 <li>480p (640 x 480)</li>
18895 <li>720p (1280 x 720)</li>
18896 <li>1080p (1920 x 1080)</li>
18897 </ul>
18898 <p>For LIMITED capability devices
18899 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18900 the HAL only has to list up to the maximum video size
18901 supported by the device.<wbr/></p>
18902 <p>Regardless of hardware level,<wbr/> every output resolution available for
18903 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18904 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18905 <ul>
18906 <li>availableFormats</li>
18907 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18908 </ul>
18909             </td>
18910           </tr>
18911
18912           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18913            <!-- end of entry -->
18914         
18915                 
18916           <tr class="entry" id="static_android.scaler.croppingType">
18917             <td class="entry_name
18918              " rowspan="3">
18919               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
18920             </td>
18921             <td class="entry_type">
18922                 <span class="entry_type_name entry_type_name_enum">byte</span>
18923
18924               <span class="entry_type_visibility"> [public]</span>
18925
18926
18927               <span class="entry_type_hwlevel">[legacy] </span>
18928
18929
18930
18931                 <ul class="entry_type_enum">
18932                   <li>
18933                     <span class="entry_type_enum_name">CENTER_ONLY</span>
18934                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
18935                   </li>
18936                   <li>
18937                     <span class="entry_type_enum_name">FREEFORM</span>
18938                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
18939                   </li>
18940                 </ul>
18941
18942             </td> <!-- entry_type -->
18943
18944             <td class="entry_description">
18945               <p>The crop type that this camera device supports.<wbr/></p>
18946             </td>
18947
18948             <td class="entry_units">
18949             </td>
18950
18951             <td class="entry_range">
18952             </td>
18953
18954             <td class="entry_hal_version">
18955               <p>3.<wbr/>2</p>
18956             </td>
18957
18958             <td class="entry_tags">
18959             </td>
18960
18961           </tr>
18962           <tr class="entries_header">
18963             <th class="th_details" colspan="6">Details</th>
18964           </tr>
18965           <tr class="entry_cont">
18966             <td class="entry_details" colspan="6">
18967               <p>When passing a non-centered crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) to a camera
18968 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
18969 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>)
18970 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
18971 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18972 <p>Camera devices that support FREEFORM cropping will support any crop region that
18973 is inside of the active array.<wbr/> The camera device will apply the same crop region and
18974 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>
18975 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
18976             </td>
18977           </tr>
18978
18979
18980           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18981            <!-- end of entry -->
18982         
18983         
18984
18985       <!-- end of kind -->
18986       </tbody>
18987       <tr><td colspan="7" class="kind">dynamic</td></tr>
18988
18989       <thead class="entries_header">
18990         <tr>
18991           <th class="th_name">Property Name</th>
18992           <th class="th_type">Type</th>
18993           <th class="th_description">Description</th>
18994           <th class="th_units">Units</th>
18995           <th class="th_range">Range</th>
18996           <th class="th_hal_version">Initial HIDL HAL version</th>
18997           <th class="th_tags">Tags</th>
18998         </tr>
18999       </thead>
19000
19001       <tbody>
19002
19003         
19004
19005         
19006
19007         
19008
19009         
19010
19011                 
19012           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19013             <td class="entry_name
19014              " rowspan="5">
19015               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19016             </td>
19017             <td class="entry_type">
19018                 <span class="entry_type_name">int32</span>
19019                 <span class="entry_type_container">x</span>
19020
19021                 <span class="entry_type_array">
19022                   4
19023                 </span>
19024               <span class="entry_type_visibility"> [public as rectangle]</span>
19025
19026
19027               <span class="entry_type_hwlevel">[legacy] </span>
19028
19029
19030
19031
19032             </td> <!-- entry_type -->
19033
19034             <td class="entry_description">
19035               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19036             </td>
19037
19038             <td class="entry_units">
19039               Pixel coordinates relative to
19040           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19041             </td>
19042
19043             <td class="entry_range">
19044             </td>
19045
19046             <td class="entry_hal_version">
19047               <p>3.<wbr/>2</p>
19048             </td>
19049
19050             <td class="entry_tags">
19051               <ul class="entry_tags">
19052                   <li><a href="#tag_BC">BC</a></li>
19053               </ul>
19054             </td>
19055
19056           </tr>
19057           <tr class="entries_header">
19058             <th class="th_details" colspan="6">Details</th>
19059           </tr>
19060           <tr class="entry_cont">
19061             <td class="entry_details" colspan="6">
19062               <p>This control can be used to implement digital zoom.<wbr/></p>
19063 <p>The crop region coordinate system is based off
19064 <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
19065 top-left corner of the sensor active array.<wbr/></p>
19066 <p>Output streams use this rectangle to produce their output,<wbr/>
19067 cropping to a smaller region if necessary to maintain the
19068 stream's aspect ratio,<wbr/> then scaling the sensor input to
19069 match the output's configured resolution.<wbr/></p>
19070 <p>The crop region is applied after the RAW to other color
19071 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19072 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19073 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19074 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19075 be done to maximize the final pixel area of the stream.<wbr/></p>
19076 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19077 ratio,<wbr/> then 4:3 streams will use the exact crop
19078 region.<wbr/> 16:9 streams will further crop vertically
19079 (letterbox).<wbr/></p>
19080 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19081 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19082 streams will match exactly.<wbr/> These additional crops will
19083 be centered within the crop region.<wbr/></p>
19084 <p>The width and height of the crop region cannot
19085 be set to be smaller than
19086 <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
19087 <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>
19088 <p>The camera device may adjust the crop region to account
19089 for rounding and other hardware requirements; the final
19090 crop region used will be included in the output capture
19091 result.<wbr/></p>
19092             </td>
19093           </tr>
19094
19095           <tr class="entries_header">
19096             <th class="th_details" colspan="6">HAL Implementation Details</th>
19097           </tr>
19098           <tr class="entry_cont">
19099             <td class="entry_details" colspan="6">
19100               <p>The output streams must maintain square pixels at all
19101 times,<wbr/> no matter what the relative aspect ratios of the
19102 crop region and the stream are.<wbr/>  Negative values for
19103 corner are allowed for raw output if full pixel array is
19104 larger than active pixel array.<wbr/> Width and height may be
19105 rounded to nearest larger supportable width,<wbr/> especially
19106 for raw output,<wbr/> where only a few fixed scales may be
19107 possible.<wbr/></p>
19108 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19109 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19110 <ul>
19111 <li>
19112 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19113 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19114 <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>
19115 <ol>
19116 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19117 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19118 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19119 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19120 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19121 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19122 <li>Scale the width and height of requested cropRegion with scaling factor of
19123 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
19124 respectively.<wbr/>
19125 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19126 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19127 follow the general cropping rule for this new cropRegion and effective active
19128 array size.<wbr/></li>
19129 </ol>
19130 </li>
19131 <li>
19132 <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/>
19133 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19134 The reported cropRegion may be slightly different with the requested cropRegion since
19135 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19136 hardware limitations.<wbr/></p>
19137 </li>
19138 </ul>
19139 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19140             </td>
19141           </tr>
19142
19143           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19144            <!-- end of entry -->
19145         
19146         
19147
19148       <!-- end of kind -->
19149       </tbody>
19150
19151   <!-- end of section -->
19152   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19153
19154
19155       <tr><td colspan="7" class="kind">controls</td></tr>
19156
19157       <thead class="entries_header">
19158         <tr>
19159           <th class="th_name">Property Name</th>
19160           <th class="th_type">Type</th>
19161           <th class="th_description">Description</th>
19162           <th class="th_units">Units</th>
19163           <th class="th_range">Range</th>
19164           <th class="th_hal_version">Initial HIDL HAL version</th>
19165           <th class="th_tags">Tags</th>
19166         </tr>
19167       </thead>
19168
19169       <tbody>
19170
19171         
19172
19173         
19174
19175         
19176
19177         
19178
19179                 
19180           <tr class="entry" id="controls_android.sensor.exposureTime">
19181             <td class="entry_name
19182              " rowspan="3">
19183               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19184             </td>
19185             <td class="entry_type">
19186                 <span class="entry_type_name">int64</span>
19187
19188               <span class="entry_type_visibility"> [public]</span>
19189
19190
19191               <span class="entry_type_hwlevel">[full] </span>
19192
19193
19194
19195
19196             </td> <!-- entry_type -->
19197
19198             <td class="entry_description">
19199               <p>Duration each pixel is exposed to
19200 light.<wbr/></p>
19201             </td>
19202
19203             <td class="entry_units">
19204               Nanoseconds
19205             </td>
19206
19207             <td class="entry_range">
19208               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19209             </td>
19210
19211             <td class="entry_hal_version">
19212               <p>3.<wbr/>2</p>
19213             </td>
19214
19215             <td class="entry_tags">
19216               <ul class="entry_tags">
19217                   <li><a href="#tag_V1">V1</a></li>
19218               </ul>
19219             </td>
19220
19221           </tr>
19222           <tr class="entries_header">
19223             <th class="th_details" colspan="6">Details</th>
19224           </tr>
19225           <tr class="entry_cont">
19226             <td class="entry_details" colspan="6">
19227               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19228 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19229 The final exposure time used will be available in the output capture result.<wbr/></p>
19230 <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
19231 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19232             </td>
19233           </tr>
19234
19235
19236           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19237            <!-- end of entry -->
19238         
19239                 
19240           <tr class="entry" id="controls_android.sensor.frameDuration">
19241             <td class="entry_name
19242              " rowspan="5">
19243               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19244             </td>
19245             <td class="entry_type">
19246                 <span class="entry_type_name">int64</span>
19247
19248               <span class="entry_type_visibility"> [public]</span>
19249
19250
19251               <span class="entry_type_hwlevel">[full] </span>
19252
19253
19254
19255
19256             </td> <!-- entry_type -->
19257
19258             <td class="entry_description">
19259               <p>Duration from start of frame exposure to
19260 start of next frame exposure.<wbr/></p>
19261             </td>
19262
19263             <td class="entry_units">
19264               Nanoseconds
19265             </td>
19266
19267             <td class="entry_range">
19268               <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/>
19269 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19270             </td>
19271
19272             <td class="entry_hal_version">
19273               <p>3.<wbr/>2</p>
19274             </td>
19275
19276             <td class="entry_tags">
19277               <ul class="entry_tags">
19278                   <li><a href="#tag_V1">V1</a></li>
19279               </ul>
19280             </td>
19281
19282           </tr>
19283           <tr class="entries_header">
19284             <th class="th_details" colspan="6">Details</th>
19285           </tr>
19286           <tr class="entry_cont">
19287             <td class="entry_details" colspan="6">
19288               <p>The maximum frame rate that can be supported by a camera subsystem is
19289 a function of many factors:</p>
19290 <ul>
19291 <li>Requested resolutions of output image streams</li>
19292 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19293 <li>The bandwidth of the imager interface</li>
19294 <li>The bandwidth of the various ISP processing blocks</li>
19295 </ul>
19296 <p>Since these factors can vary greatly between different ISPs and
19297 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19298 restrictions with as simple a model as possible.<wbr/></p>
19299 <p>The model presented has the following characteristics:</p>
19300 <ul>
19301 <li>The image sensor is always configured to output the smallest
19302 resolution possible given the application's requested output stream
19303 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19304 as the largest requested output stream size; the camera pipeline must
19305 never digitally upsample sensor data when the crop region covers the
19306 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19307 resolutions are configured,<wbr/> the sensor can provide a higher frame
19308 rate.<wbr/></li>
19309 <li>Since any request may use any or all the currently configured
19310 output streams,<wbr/> the sensor and ISP must be configured to support
19311 scaling a single capture to all the streams at the same time.<wbr/>  This
19312 means the camera pipeline must be ready to produce the largest
19313 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19314 frame rate of a given configured stream set is governed only by the
19315 largest requested stream resolution.<wbr/></li>
19316 <li>Using more than one output stream in a request does not affect the
19317 frame duration.<wbr/></li>
19318 <li>Certain format-streams may need to do additional background processing
19319 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19320 can run concurrently to the rest of the camera pipeline,<wbr/> but
19321 cannot process more than 1 capture at a time.<wbr/></li>
19322 </ul>
19323 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19324 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19325 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19326 possible for a given stream configuration.<wbr/></p>
19327 <p>Specifically,<wbr/> the application can use the following rules to
19328 determine the minimum frame duration it can request from the camera
19329 device:</p>
19330 <ol>
19331 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19332 <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>
19333 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19334 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19335 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>
19336 </ol>
19337 <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>
19338 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19339 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19340 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19341 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19342 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19343 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19344 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19345 <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>
19346 <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
19347 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19348             </td>
19349           </tr>
19350
19351           <tr class="entries_header">
19352             <th class="th_details" colspan="6">HAL Implementation Details</th>
19353           </tr>
19354           <tr class="entry_cont">
19355             <td class="entry_details" colspan="6">
19356               <p>For more details about stalling,<wbr/> see
19357 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19358             </td>
19359           </tr>
19360
19361           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19362            <!-- end of entry -->
19363         
19364                 
19365           <tr class="entry" id="controls_android.sensor.sensitivity">
19366             <td class="entry_name
19367              " rowspan="5">
19368               android.<wbr/>sensor.<wbr/>sensitivity
19369             </td>
19370             <td class="entry_type">
19371                 <span class="entry_type_name">int32</span>
19372
19373               <span class="entry_type_visibility"> [public]</span>
19374
19375
19376               <span class="entry_type_hwlevel">[full] </span>
19377
19378
19379
19380
19381             </td> <!-- entry_type -->
19382
19383             <td class="entry_description">
19384               <p>The amount of gain applied to sensor data
19385 before processing.<wbr/></p>
19386             </td>
19387
19388             <td class="entry_units">
19389               ISO arithmetic units
19390             </td>
19391
19392             <td class="entry_range">
19393               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19394             </td>
19395
19396             <td class="entry_hal_version">
19397               <p>3.<wbr/>2</p>
19398             </td>
19399
19400             <td class="entry_tags">
19401               <ul class="entry_tags">
19402                   <li><a href="#tag_V1">V1</a></li>
19403               </ul>
19404             </td>
19405
19406           </tr>
19407           <tr class="entries_header">
19408             <th class="th_details" colspan="6">Details</th>
19409           </tr>
19410           <tr class="entry_cont">
19411             <td class="entry_details" colspan="6">
19412               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19413 as defined in ISO 12232:2006.<wbr/></p>
19414 <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
19415 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
19416 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19417 <p>If the camera device cannot apply the exact sensitivity
19418 requested,<wbr/> it will reduce the gain to the nearest supported
19419 value.<wbr/> The final sensitivity used will be available in the
19420 output capture result.<wbr/></p>
19421 <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
19422 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19423             </td>
19424           </tr>
19425
19426           <tr class="entries_header">
19427             <th class="th_details" colspan="6">HAL Implementation Details</th>
19428           </tr>
19429           <tr class="entry_cont">
19430             <td class="entry_details" colspan="6">
19431               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19432             </td>
19433           </tr>
19434
19435           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19436            <!-- end of entry -->
19437         
19438                 
19439           <tr class="entry" id="controls_android.sensor.testPatternData">
19440             <td class="entry_name
19441              " rowspan="5">
19442               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19443             </td>
19444             <td class="entry_type">
19445                 <span class="entry_type_name">int32</span>
19446                 <span class="entry_type_container">x</span>
19447
19448                 <span class="entry_type_array">
19449                   4
19450                 </span>
19451               <span class="entry_type_visibility"> [public]</span>
19452
19453
19454
19455
19456
19457
19458             </td> <!-- entry_type -->
19459
19460             <td class="entry_description">
19461               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19462 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19463             </td>
19464
19465             <td class="entry_units">
19466             </td>
19467
19468             <td class="entry_range">
19469             </td>
19470
19471             <td class="entry_hal_version">
19472               <p>3.<wbr/>2</p>
19473             </td>
19474
19475             <td class="entry_tags">
19476             </td>
19477
19478           </tr>
19479           <tr class="entries_header">
19480             <th class="th_details" colspan="6">Details</th>
19481           </tr>
19482           <tr class="entry_cont">
19483             <td class="entry_details" colspan="6">
19484               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19485 The camera device then uses the most significant X bits
19486 that correspond to how many bits are in its Bayer raw sensor
19487 output.<wbr/></p>
19488 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19489 10 most significant bits from each color channel.<wbr/></p>
19490             </td>
19491           </tr>
19492
19493           <tr class="entries_header">
19494             <th class="th_details" colspan="6">HAL Implementation Details</th>
19495           </tr>
19496           <tr class="entry_cont">
19497             <td class="entry_details" colspan="6">
19498               
19499             </td>
19500           </tr>
19501
19502           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19503            <!-- end of entry -->
19504         
19505                 
19506           <tr class="entry" id="controls_android.sensor.testPatternMode">
19507             <td class="entry_name
19508              " rowspan="5">
19509               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19510             </td>
19511             <td class="entry_type">
19512                 <span class="entry_type_name entry_type_name_enum">int32</span>
19513
19514               <span class="entry_type_visibility"> [public]</span>
19515
19516
19517
19518
19519
19520                 <ul class="entry_type_enum">
19521                   <li>
19522                     <span class="entry_type_enum_name">OFF</span>
19523                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19524 device returns captures from the image sensor.<wbr/></p>
19525 <p>This is the default if the key is not set.<wbr/></p></span>
19526                   </li>
19527                   <li>
19528                     <span class="entry_type_enum_name">SOLID_COLOR</span>
19529                     <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
19530 respective color channel provided in
19531 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19532 <p>For example:</p>
19533 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19534 </code></pre>
19535 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19536 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19537 </code></pre>
19538 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19539 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19540                   </li>
19541                   <li>
19542                     <span class="entry_type_enum_name">COLOR_BARS</span>
19543                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19544 <p>The vertical bars (left-to-right) are as follows:</p>
19545 <ul>
19546 <li>100% white</li>
19547 <li>yellow</li>
19548 <li>cyan</li>
19549 <li>green</li>
19550 <li>magenta</li>
19551 <li>red</li>
19552 <li>blue</li>
19553 <li>black</li>
19554 </ul>
19555 <p>In general the image would look like the following:</p>
19556 <pre><code>W Y C G M R B K
19557 W Y C G M R B K
19558 W Y C G M R B K
19559 W Y C G M R B K
19560 W Y C G M R B K
19561 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19562 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19563 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19564
19565 (B = Blue,<wbr/> K = Black)
19566 </code></pre>
19567 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19568 When this is not possible,<wbr/> the bar size should be rounded
19569 down to the nearest integer and the pattern can repeat
19570 on the right side.<wbr/></p>
19571 <p>Each bar's height must always take up the full sensor
19572 pixel array height.<wbr/></p>
19573 <p>Each pixel in this test pattern must be set to either
19574 0% intensity or 100% intensity.<wbr/></p></span>
19575                   </li>
19576                   <li>
19577                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
19578                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19579 each bar should start at its specified color at the top,<wbr/>
19580 and fade to gray at the bottom.<wbr/></p>
19581 <p>Furthermore each bar is further subdivided into a left and
19582 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19583 and the right half should have a quantized gradient.<wbr/></p>
19584 <p>In particular,<wbr/> the right half's should consist of blocks of the
19585 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19586 <p>The least significant bits in the quantized gradient should
19587 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19588 <p>The height of each bar should always be a multiple of 128.<wbr/>
19589 When this is not the case,<wbr/> the pattern should repeat at the bottom
19590 of the image.<wbr/></p></span>
19591                   </li>
19592                   <li>
19593                     <span class="entry_type_enum_name">PN9</span>
19594                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19595 generated from a PN9 512-bit sequence (typically implemented
19596 in hardware with a linear feedback shift register).<wbr/></p>
19597 <p>The generator should be reset at the beginning of each frame,<wbr/>
19598 and thus each subsequent raw frame with this test pattern should
19599 be exactly the same as the last.<wbr/></p></span>
19600                   </li>
19601                   <li>
19602                     <span class="entry_type_enum_name">CUSTOM1</span>
19603                     <span class="entry_type_enum_value">256</span>
19604                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19605 available only on this camera device are at least this numeric
19606 value.<wbr/></p>
19607 <p>All of the custom test patterns will be static
19608 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19609                   </li>
19610                 </ul>
19611
19612             </td> <!-- entry_type -->
19613
19614             <td class="entry_description">
19615               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19616 doing a real exposure from the camera.<wbr/></p>
19617             </td>
19618
19619             <td class="entry_units">
19620             </td>
19621
19622             <td class="entry_range">
19623               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19624             </td>
19625
19626             <td class="entry_hal_version">
19627               <p>3.<wbr/>2</p>
19628             </td>
19629
19630             <td class="entry_tags">
19631             </td>
19632
19633           </tr>
19634           <tr class="entries_header">
19635             <th class="th_details" colspan="6">Details</th>
19636           </tr>
19637           <tr class="entry_cont">
19638             <td class="entry_details" colspan="6">
19639               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19640 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19641 work as normal.<wbr/></p>
19642 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19643 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19644 would not actually affect it).<wbr/></p>
19645 <p>Defaults to OFF.<wbr/></p>
19646             </td>
19647           </tr>
19648
19649           <tr class="entries_header">
19650             <th class="th_details" colspan="6">HAL Implementation Details</th>
19651           </tr>
19652           <tr class="entry_cont">
19653             <td class="entry_details" colspan="6">
19654               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19655 <p>The HAL may choose to substitute test patterns from the sensor
19656 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19657 indistinguishable to the ISP whether the data came from the
19658 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19659             </td>
19660           </tr>
19661
19662           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19663            <!-- end of entry -->
19664         
19665         
19666
19667       <!-- end of kind -->
19668       </tbody>
19669       <tr><td colspan="7" class="kind">static</td></tr>
19670
19671       <thead class="entries_header">
19672         <tr>
19673           <th class="th_name">Property Name</th>
19674           <th class="th_type">Type</th>
19675           <th class="th_description">Description</th>
19676           <th class="th_units">Units</th>
19677           <th class="th_range">Range</th>
19678           <th class="th_hal_version">Initial HIDL HAL version</th>
19679           <th class="th_tags">Tags</th>
19680         </tr>
19681       </thead>
19682
19683       <tbody>
19684
19685         
19686
19687         
19688
19689         
19690
19691         
19692                 
19693             
19694
19695                 
19696           <tr class="entry" id="static_android.sensor.info.activeArraySize">
19697             <td class="entry_name
19698              " rowspan="5">
19699               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19700             </td>
19701             <td class="entry_type">
19702                 <span class="entry_type_name">int32</span>
19703                 <span class="entry_type_container">x</span>
19704
19705                 <span class="entry_type_array">
19706                   4
19707                 </span>
19708               <span class="entry_type_visibility"> [public as rectangle]</span>
19709
19710
19711               <span class="entry_type_hwlevel">[legacy] </span>
19712
19713
19714                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19715
19716
19717             </td> <!-- entry_type -->
19718
19719             <td class="entry_description">
19720               <p>The area of the image sensor which corresponds to active pixels after any geometric
19721 distortion correction has been applied.<wbr/></p>
19722             </td>
19723
19724             <td class="entry_units">
19725               Pixel coordinates on the image sensor
19726             </td>
19727
19728             <td class="entry_range">
19729             </td>
19730
19731             <td class="entry_hal_version">
19732               <p>3.<wbr/>2</p>
19733             </td>
19734
19735             <td class="entry_tags">
19736               <ul class="entry_tags">
19737                   <li><a href="#tag_RAW">RAW</a></li>
19738               </ul>
19739             </td>
19740
19741           </tr>
19742           <tr class="entries_header">
19743             <th class="th_details" colspan="6">Details</th>
19744           </tr>
19745           <tr class="entry_cont">
19746             <td class="entry_details" colspan="6">
19747               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19748 the region that actually receives light from the scene) after any geometric correction
19749 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
19750 image output formats aside from the raw formats.<wbr/></p>
19751 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19752 the full pixel array,<wbr/> and the size of the full pixel array is given by
19753 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19754 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
19755 <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
19756 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
19757 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
19758 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
19759 resulting in scaling or cropping may have been applied.<wbr/></p>
19760             </td>
19761           </tr>
19762
19763           <tr class="entries_header">
19764             <th class="th_details" colspan="6">HAL Implementation Details</th>
19765           </tr>
19766           <tr class="entry_cont">
19767             <td class="entry_details" colspan="6">
19768               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19769 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19770 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>
19771             </td>
19772           </tr>
19773
19774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19775            <!-- end of entry -->
19776         
19777                 
19778           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
19779             <td class="entry_name
19780              " rowspan="3">
19781               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
19782             </td>
19783             <td class="entry_type">
19784                 <span class="entry_type_name">int32</span>
19785                 <span class="entry_type_container">x</span>
19786
19787                 <span class="entry_type_array">
19788                   2
19789                 </span>
19790               <span class="entry_type_visibility"> [public as rangeInt]</span>
19791
19792
19793               <span class="entry_type_hwlevel">[full] </span>
19794
19795
19796                 <div class="entry_type_notes">Range of supported sensitivities</div>
19797
19798
19799             </td> <!-- entry_type -->
19800
19801             <td class="entry_description">
19802               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
19803 camera device.<wbr/></p>
19804             </td>
19805
19806             <td class="entry_units">
19807             </td>
19808
19809             <td class="entry_range">
19810               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
19811             </td>
19812
19813             <td class="entry_hal_version">
19814               <p>3.<wbr/>2</p>
19815             </td>
19816
19817             <td class="entry_tags">
19818               <ul class="entry_tags">
19819                   <li><a href="#tag_BC">BC</a></li>
19820                   <li><a href="#tag_V1">V1</a></li>
19821               </ul>
19822             </td>
19823
19824           </tr>
19825           <tr class="entries_header">
19826             <th class="th_details" colspan="6">Details</th>
19827           </tr>
19828           <tr class="entry_cont">
19829             <td class="entry_details" colspan="6">
19830               <p>The values are the standard ISO sensitivity values,<wbr/>
19831 as defined in ISO 12232:2006.<wbr/></p>
19832             </td>
19833           </tr>
19834
19835
19836           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19837            <!-- end of entry -->
19838         
19839                 
19840           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
19841             <td class="entry_name
19842              " rowspan="1">
19843               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
19844             </td>
19845             <td class="entry_type">
19846                 <span class="entry_type_name entry_type_name_enum">byte</span>
19847
19848               <span class="entry_type_visibility"> [public]</span>
19849
19850
19851               <span class="entry_type_hwlevel">[full] </span>
19852
19853
19854
19855                 <ul class="entry_type_enum">
19856                   <li>
19857                     <span class="entry_type_enum_name">RGGB</span>
19858                   </li>
19859                   <li>
19860                     <span class="entry_type_enum_name">GRBG</span>
19861                   </li>
19862                   <li>
19863                     <span class="entry_type_enum_name">GBRG</span>
19864                   </li>
19865                   <li>
19866                     <span class="entry_type_enum_name">BGGR</span>
19867                   </li>
19868                   <li>
19869                     <span class="entry_type_enum_name">RGB</span>
19870                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19871 values for each pixel,<wbr/> instead of just 1 16-bit value
19872 per pixel.<wbr/></p></span>
19873                   </li>
19874                 </ul>
19875
19876             </td> <!-- entry_type -->
19877
19878             <td class="entry_description">
19879               <p>The arrangement of color filters on sensor;
19880 represents the colors in the top-left 2x2 section of
19881 the sensor,<wbr/> in reading order.<wbr/></p>
19882             </td>
19883
19884             <td class="entry_units">
19885             </td>
19886
19887             <td class="entry_range">
19888             </td>
19889
19890             <td class="entry_hal_version">
19891               <p>3.<wbr/>2</p>
19892             </td>
19893
19894             <td class="entry_tags">
19895               <ul class="entry_tags">
19896                   <li><a href="#tag_RAW">RAW</a></li>
19897               </ul>
19898             </td>
19899
19900           </tr>
19901
19902
19903           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19904            <!-- end of entry -->
19905         
19906                 
19907           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
19908             <td class="entry_name
19909              " rowspan="3">
19910               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
19911             </td>
19912             <td class="entry_type">
19913                 <span class="entry_type_name">int64</span>
19914                 <span class="entry_type_container">x</span>
19915
19916                 <span class="entry_type_array">
19917                   2
19918                 </span>
19919               <span class="entry_type_visibility"> [public as rangeLong]</span>
19920
19921
19922               <span class="entry_type_hwlevel">[full] </span>
19923
19924
19925                 <div class="entry_type_notes">nanoseconds</div>
19926
19927
19928             </td> <!-- entry_type -->
19929
19930             <td class="entry_description">
19931               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
19932 by this camera device.<wbr/></p>
19933             </td>
19934
19935             <td class="entry_units">
19936               Nanoseconds
19937             </td>
19938
19939             <td class="entry_range">
19940               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
19941 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19942 the maximum exposure time will be greater than 100ms.<wbr/></p>
19943             </td>
19944
19945             <td class="entry_hal_version">
19946               <p>3.<wbr/>2</p>
19947             </td>
19948
19949             <td class="entry_tags">
19950               <ul class="entry_tags">
19951                   <li><a href="#tag_V1">V1</a></li>
19952               </ul>
19953             </td>
19954
19955           </tr>
19956
19957           <tr class="entries_header">
19958             <th class="th_details" colspan="6">HAL Implementation Details</th>
19959           </tr>
19960           <tr class="entry_cont">
19961             <td class="entry_details" colspan="6">
19962               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19963 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
19964 100ms.<wbr/></p>
19965             </td>
19966           </tr>
19967
19968           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19969            <!-- end of entry -->
19970         
19971                 
19972           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
19973             <td class="entry_name
19974              " rowspan="5">
19975               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
19976             </td>
19977             <td class="entry_type">
19978                 <span class="entry_type_name">int64</span>
19979
19980               <span class="entry_type_visibility"> [public]</span>
19981
19982
19983               <span class="entry_type_hwlevel">[full] </span>
19984
19985
19986
19987
19988             </td> <!-- entry_type -->
19989
19990             <td class="entry_description">
19991               <p>The maximum possible frame duration (minimum frame rate) for
19992 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
19993             </td>
19994
19995             <td class="entry_units">
19996               Nanoseconds
19997             </td>
19998
19999             <td class="entry_range">
20000               <p>For FULL capability devices
20001 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20002             </td>
20003
20004             <td class="entry_hal_version">
20005               <p>3.<wbr/>2</p>
20006             </td>
20007
20008             <td class="entry_tags">
20009               <ul class="entry_tags">
20010                   <li><a href="#tag_V1">V1</a></li>
20011               </ul>
20012             </td>
20013
20014           </tr>
20015           <tr class="entries_header">
20016             <th class="th_details" colspan="6">Details</th>
20017           </tr>
20018           <tr class="entry_cont">
20019             <td class="entry_details" colspan="6">
20020               <p>Attempting to use frame durations beyond the maximum will result in the frame
20021 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20022 durations.<wbr/></p>
20023 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20024 for the minimum frame duration values.<wbr/></p>
20025             </td>
20026           </tr>
20027
20028           <tr class="entries_header">
20029             <th class="th_details" colspan="6">HAL Implementation Details</th>
20030           </tr>
20031           <tr class="entry_cont">
20032             <td class="entry_details" colspan="6">
20033               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20034 The maximum of the range SHOULD be at least
20035 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20036 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20037 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20038 value (since exposure time overrides frame duration).<wbr/></p>
20039 <p>Available minimum frame durations for JPEG must be no greater
20040 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20041 minimum frame durations (for that respective size).<wbr/></p>
20042 <p>Since JPEG processing is considered offline and can take longer than
20043 a single uncompressed capture,<wbr/> refer to
20044 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20045 for details about encoding this scenario.<wbr/></p>
20046             </td>
20047           </tr>
20048
20049           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20050            <!-- end of entry -->
20051         
20052                 
20053           <tr class="entry" id="static_android.sensor.info.physicalSize">
20054             <td class="entry_name
20055              " rowspan="5">
20056               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20057             </td>
20058             <td class="entry_type">
20059                 <span class="entry_type_name">float</span>
20060                 <span class="entry_type_container">x</span>
20061
20062                 <span class="entry_type_array">
20063                   2
20064                 </span>
20065               <span class="entry_type_visibility"> [public as sizeF]</span>
20066
20067
20068               <span class="entry_type_hwlevel">[legacy] </span>
20069
20070
20071                 <div class="entry_type_notes">width x height</div>
20072
20073
20074             </td> <!-- entry_type -->
20075
20076             <td class="entry_description">
20077               <p>The physical dimensions of the full pixel
20078 array.<wbr/></p>
20079             </td>
20080
20081             <td class="entry_units">
20082               Millimeters
20083             </td>
20084
20085             <td class="entry_range">
20086             </td>
20087
20088             <td class="entry_hal_version">
20089               <p>3.<wbr/>2</p>
20090             </td>
20091
20092             <td class="entry_tags">
20093               <ul class="entry_tags">
20094                   <li><a href="#tag_V1">V1</a></li>
20095                   <li><a href="#tag_BC">BC</a></li>
20096               </ul>
20097             </td>
20098
20099           </tr>
20100           <tr class="entries_header">
20101             <th class="th_details" colspan="6">Details</th>
20102           </tr>
20103           <tr class="entry_cont">
20104             <td class="entry_details" colspan="6">
20105               <p>This is the physical size of the sensor pixel
20106 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20107             </td>
20108           </tr>
20109
20110           <tr class="entries_header">
20111             <th class="th_details" colspan="6">HAL Implementation Details</th>
20112           </tr>
20113           <tr class="entry_cont">
20114             <td class="entry_details" colspan="6">
20115               <p>Needed for FOV calculation for old API</p>
20116             </td>
20117           </tr>
20118
20119           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20120            <!-- end of entry -->
20121         
20122                 
20123           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20124             <td class="entry_name
20125              " rowspan="3">
20126               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20127             </td>
20128             <td class="entry_type">
20129                 <span class="entry_type_name">int32</span>
20130                 <span class="entry_type_container">x</span>
20131
20132                 <span class="entry_type_array">
20133                   2
20134                 </span>
20135               <span class="entry_type_visibility"> [public as size]</span>
20136
20137
20138               <span class="entry_type_hwlevel">[legacy] </span>
20139
20140
20141
20142
20143             </td> <!-- entry_type -->
20144
20145             <td class="entry_description">
20146               <p>Dimensions of the full pixel array,<wbr/> possibly
20147 including black calibration pixels.<wbr/></p>
20148             </td>
20149
20150             <td class="entry_units">
20151               Pixels
20152             </td>
20153
20154             <td class="entry_range">
20155             </td>
20156
20157             <td class="entry_hal_version">
20158               <p>3.<wbr/>2</p>
20159             </td>
20160
20161             <td class="entry_tags">
20162               <ul class="entry_tags">
20163                   <li><a href="#tag_RAW">RAW</a></li>
20164                   <li><a href="#tag_BC">BC</a></li>
20165               </ul>
20166             </td>
20167
20168           </tr>
20169           <tr class="entries_header">
20170             <th class="th_details" colspan="6">Details</th>
20171           </tr>
20172           <tr class="entry_cont">
20173             <td class="entry_details" colspan="6">
20174               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20175 <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
20176 the raw buffers produced by this sensor.<wbr/></p>
20177 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20178 <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
20179 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20180 (this depends on whether or not the image sensor returns buffers containing pixels that
20181 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20182 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20183 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
20184 defines the rectangle of active pixels that will be included in processed image
20185 formats.<wbr/></p>
20186             </td>
20187           </tr>
20188
20189
20190           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20191            <!-- end of entry -->
20192         
20193                 
20194           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20195             <td class="entry_name
20196              " rowspan="5">
20197               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20198             </td>
20199             <td class="entry_type">
20200                 <span class="entry_type_name">int32</span>
20201
20202               <span class="entry_type_visibility"> [public]</span>
20203
20204
20205
20206
20207
20208
20209             </td> <!-- entry_type -->
20210
20211             <td class="entry_description">
20212               <p>Maximum raw value output by sensor.<wbr/></p>
20213             </td>
20214
20215             <td class="entry_units">
20216             </td>
20217
20218             <td class="entry_range">
20219               <p>&gt; 255 (8-bit output)</p>
20220             </td>
20221
20222             <td class="entry_hal_version">
20223               <p>3.<wbr/>2</p>
20224             </td>
20225
20226             <td class="entry_tags">
20227               <ul class="entry_tags">
20228                   <li><a href="#tag_RAW">RAW</a></li>
20229               </ul>
20230             </td>
20231
20232           </tr>
20233           <tr class="entries_header">
20234             <th class="th_details" colspan="6">Details</th>
20235           </tr>
20236           <tr class="entry_cont">
20237             <td class="entry_details" colspan="6">
20238               <p>This specifies the fully-saturated encoding level for the raw
20239 sample values from the sensor.<wbr/>  This is typically caused by the
20240 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20241 each channel is specified by the offset in the
20242 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20243 <p>The white level is typically determined either by sensor bit depth
20244 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20245 becomes too non-linear to be useful.<wbr/>  The default value for this is
20246 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20247 <p>The white level values of captured images may vary for different
20248 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20249 represents a coarse approximation for such case.<wbr/> It is recommended
20250 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20251 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20252             </td>
20253           </tr>
20254
20255           <tr class="entries_header">
20256             <th class="th_details" colspan="6">HAL Implementation Details</th>
20257           </tr>
20258           <tr class="entry_cont">
20259             <td class="entry_details" colspan="6">
20260               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20261 so the value for linear sensors should not be significantly lower
20262 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20263             </td>
20264           </tr>
20265
20266           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20267            <!-- end of entry -->
20268         
20269                 
20270           <tr class="entry" id="static_android.sensor.info.timestampSource">
20271             <td class="entry_name
20272              " rowspan="5">
20273               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20274             </td>
20275             <td class="entry_type">
20276                 <span class="entry_type_name entry_type_name_enum">byte</span>
20277
20278               <span class="entry_type_visibility"> [public]</span>
20279
20280
20281               <span class="entry_type_hwlevel">[legacy] </span>
20282
20283
20284
20285                 <ul class="entry_type_enum">
20286                   <li>
20287                     <span class="entry_type_enum_name">UNKNOWN</span>
20288                     <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/>
20289 but can not be compared to timestamps from other subsystems
20290 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20291 camera devices in the same system.<wbr/> Timestamps between streams and results for
20292 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20293 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20294                   </li>
20295                   <li>
20296                     <span class="entry_type_enum_name">REALTIME</span>
20297                     <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
20298 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20299 and they can be compared to other timestamps using that base.<wbr/></p></span>
20300                   </li>
20301                 </ul>
20302
20303             </td> <!-- entry_type -->
20304
20305             <td class="entry_description">
20306               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20307             </td>
20308
20309             <td class="entry_units">
20310             </td>
20311
20312             <td class="entry_range">
20313             </td>
20314
20315             <td class="entry_hal_version">
20316               <p>3.<wbr/>2</p>
20317             </td>
20318
20319             <td class="entry_tags">
20320               <ul class="entry_tags">
20321                   <li><a href="#tag_V1">V1</a></li>
20322               </ul>
20323             </td>
20324
20325           </tr>
20326           <tr class="entries_header">
20327             <th class="th_details" colspan="6">Details</th>
20328           </tr>
20329           <tr class="entry_cont">
20330             <td class="entry_details" colspan="6">
20331               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20332 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20333 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20334 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20335             </td>
20336           </tr>
20337
20338           <tr class="entries_header">
20339             <th class="th_details" colspan="6">HAL Implementation Details</th>
20340           </tr>
20341           <tr class="entry_cont">
20342             <td class="entry_details" colspan="6">
20343               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20344 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20345 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20346 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20347 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20348 recording might suffer unexpected behavior.<wbr/></p>
20349 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20350 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20351             </td>
20352           </tr>
20353
20354           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20355            <!-- end of entry -->
20356         
20357                 
20358           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20359             <td class="entry_name
20360              " rowspan="3">
20361               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20362             </td>
20363             <td class="entry_type">
20364                 <span class="entry_type_name entry_type_name_enum">byte</span>
20365
20366               <span class="entry_type_visibility"> [public as boolean]</span>
20367
20368
20369
20370
20371
20372                 <ul class="entry_type_enum">
20373                   <li>
20374                     <span class="entry_type_enum_name">FALSE</span>
20375                   </li>
20376                   <li>
20377                     <span class="entry_type_enum_name">TRUE</span>
20378                   </li>
20379                 </ul>
20380
20381             </td> <!-- entry_type -->
20382
20383             <td class="entry_description">
20384               <p>Whether the RAW images output from this camera device are subject to
20385 lens shading correction.<wbr/></p>
20386             </td>
20387
20388             <td class="entry_units">
20389             </td>
20390
20391             <td class="entry_range">
20392             </td>
20393
20394             <td class="entry_hal_version">
20395               <p>3.<wbr/>2</p>
20396             </td>
20397
20398             <td class="entry_tags">
20399             </td>
20400
20401           </tr>
20402           <tr class="entries_header">
20403             <th class="th_details" colspan="6">Details</th>
20404           </tr>
20405           <tr class="entry_cont">
20406             <td class="entry_details" colspan="6">
20407               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20408 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20409 not be adjusted for lens shading correction.<wbr/>
20410 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>
20411 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20412 Devices with RAW capability will always report this information in this key.<wbr/></p>
20413             </td>
20414           </tr>
20415
20416
20417           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20418            <!-- end of entry -->
20419         
20420                 
20421           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20422             <td class="entry_name
20423              " rowspan="5">
20424               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20425             </td>
20426             <td class="entry_type">
20427                 <span class="entry_type_name">int32</span>
20428                 <span class="entry_type_container">x</span>
20429
20430                 <span class="entry_type_array">
20431                   4
20432                 </span>
20433               <span class="entry_type_visibility"> [public as rectangle]</span>
20434
20435
20436               <span class="entry_type_hwlevel">[legacy] </span>
20437
20438
20439                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20440
20441
20442             </td> <!-- entry_type -->
20443
20444             <td class="entry_description">
20445               <p>The area of the image sensor which corresponds to active pixels prior to the
20446 application of any geometric distortion correction.<wbr/></p>
20447             </td>
20448
20449             <td class="entry_units">
20450               Pixel coordinates on the image sensor
20451             </td>
20452
20453             <td class="entry_range">
20454             </td>
20455
20456             <td class="entry_hal_version">
20457               <p>3.<wbr/>2</p>
20458             </td>
20459
20460             <td class="entry_tags">
20461               <ul class="entry_tags">
20462                   <li><a href="#tag_RAW">RAW</a></li>
20463               </ul>
20464             </td>
20465
20466           </tr>
20467           <tr class="entries_header">
20468             <th class="th_details" colspan="6">Details</th>
20469           </tr>
20470           <tr class="entry_cont">
20471             <td class="entry_details" colspan="6">
20472               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20473 the region that actually receives light from the scene) before any geometric correction
20474 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20475 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20476 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20477 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20478 <p>The size of this region determines the maximum field of view and the maximum number of
20479 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20480 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20481 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>
20482 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20483 can be calculated by applying the geometric distortion correction fields to this
20484 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>
20485 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20486 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/>
20487 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20488 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20489 <ol>
20490 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20491 <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
20492 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20493 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20494 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20495 buffers is defined relative to the top,<wbr/> left of the
20496 <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>
20497 <li>If the resulting corrected pixel coordinate is within the region given in
20498 <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
20499 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20500 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20501 </ol>
20502 <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>
20503 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/>
20504 <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
20505 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20506 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20507 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)
20508 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20509 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20510 <p>The currently supported fields that correct for geometric distortion are:</p>
20511 <ol>
20512 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20513 </ol>
20514 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20515 as the post-distortion-corrected rectangle given in
20516 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20517 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20518 the full pixel array,<wbr/> and the size of the full pixel array is given by
20519 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20520 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20521 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20522             </td>
20523           </tr>
20524
20525           <tr class="entries_header">
20526             <th class="th_details" colspan="6">HAL Implementation Details</th>
20527           </tr>
20528           <tr class="entry_cont">
20529             <td class="entry_details" colspan="6">
20530               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20531 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20532 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>
20533 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20534 the same as the post-correction active array region given in
20535 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20536             </td>
20537           </tr>
20538
20539           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20540            <!-- end of entry -->
20541         
20542         
20543         
20544
20545                 
20546           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20547             <td class="entry_name
20548              " rowspan="5">
20549               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20550             </td>
20551             <td class="entry_type">
20552                 <span class="entry_type_name entry_type_name_enum">byte</span>
20553
20554               <span class="entry_type_visibility"> [public]</span>
20555
20556
20557
20558
20559
20560                 <ul class="entry_type_enum">
20561                   <li>
20562                     <span class="entry_type_enum_name">DAYLIGHT</span>
20563                     <span class="entry_type_enum_value">1</span>
20564                   </li>
20565                   <li>
20566                     <span class="entry_type_enum_name">FLUORESCENT</span>
20567                     <span class="entry_type_enum_value">2</span>
20568                   </li>
20569                   <li>
20570                     <span class="entry_type_enum_name">TUNGSTEN</span>
20571                     <span class="entry_type_enum_value">3</span>
20572                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20573                   </li>
20574                   <li>
20575                     <span class="entry_type_enum_name">FLASH</span>
20576                     <span class="entry_type_enum_value">4</span>
20577                   </li>
20578                   <li>
20579                     <span class="entry_type_enum_name">FINE_WEATHER</span>
20580                     <span class="entry_type_enum_value">9</span>
20581                   </li>
20582                   <li>
20583                     <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
20584                     <span class="entry_type_enum_value">10</span>
20585                   </li>
20586                   <li>
20587                     <span class="entry_type_enum_name">SHADE</span>
20588                     <span class="entry_type_enum_value">11</span>
20589                   </li>
20590                   <li>
20591                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
20592                     <span class="entry_type_enum_value">12</span>
20593                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20594                   </li>
20595                   <li>
20596                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
20597                     <span class="entry_type_enum_value">13</span>
20598                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20599                   </li>
20600                   <li>
20601                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
20602                     <span class="entry_type_enum_value">14</span>
20603                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20604                   </li>
20605                   <li>
20606                     <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
20607                     <span class="entry_type_enum_value">15</span>
20608                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20609                   </li>
20610                   <li>
20611                     <span class="entry_type_enum_name">STANDARD_A</span>
20612                     <span class="entry_type_enum_value">17</span>
20613                   </li>
20614                   <li>
20615                     <span class="entry_type_enum_name">STANDARD_B</span>
20616                     <span class="entry_type_enum_value">18</span>
20617                   </li>
20618                   <li>
20619                     <span class="entry_type_enum_name">STANDARD_C</span>
20620                     <span class="entry_type_enum_value">19</span>
20621                   </li>
20622                   <li>
20623                     <span class="entry_type_enum_name">D55</span>
20624                     <span class="entry_type_enum_value">20</span>
20625                   </li>
20626                   <li>
20627                     <span class="entry_type_enum_name">D65</span>
20628                     <span class="entry_type_enum_value">21</span>
20629                   </li>
20630                   <li>
20631                     <span class="entry_type_enum_name">D75</span>
20632                     <span class="entry_type_enum_value">22</span>
20633                   </li>
20634                   <li>
20635                     <span class="entry_type_enum_name">D50</span>
20636                     <span class="entry_type_enum_value">23</span>
20637                   </li>
20638                   <li>
20639                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
20640                     <span class="entry_type_enum_value">24</span>
20641                   </li>
20642                 </ul>
20643
20644             </td> <!-- entry_type -->
20645
20646             <td class="entry_description">
20647               <p>The standard reference illuminant used as the scene light source when
20648 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20649 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20650 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20651             </td>
20652
20653             <td class="entry_units">
20654             </td>
20655
20656             <td class="entry_range">
20657             </td>
20658
20659             <td class="entry_hal_version">
20660               <p>3.<wbr/>2</p>
20661             </td>
20662
20663             <td class="entry_tags">
20664               <ul class="entry_tags">
20665                   <li><a href="#tag_RAW">RAW</a></li>
20666               </ul>
20667             </td>
20668
20669           </tr>
20670           <tr class="entries_header">
20671             <th class="th_details" colspan="6">Details</th>
20672           </tr>
20673           <tr class="entry_cont">
20674             <td class="entry_details" colspan="6">
20675               <p>The values in this key correspond to the values defined for the
20676 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20677 that are often used calibrating camera devices.<wbr/></p>
20678 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20679 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20680 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20681 <p>Some devices may choose to provide a second set of calibration
20682 information for improved quality,<wbr/> including
20683 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20684             </td>
20685           </tr>
20686
20687           <tr class="entries_header">
20688             <th class="th_details" colspan="6">HAL Implementation Details</th>
20689           </tr>
20690           <tr class="entry_cont">
20691             <td class="entry_details" colspan="6">
20692               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20693 and corresponding matrices must be present to support the RAW capability
20694 and DNG output.<wbr/></p>
20695 <p>When producing raw images with a color profile that has only been
20696 calibrated against a single light source,<wbr/> it is valid to omit
20697 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20698 <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/>
20699 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20700 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20701 chosen so that it is representative of typical scene lighting.<wbr/>  In
20702 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20703 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20704 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20705 chosen to represent the typical range of scene lighting conditions.<wbr/>
20706 In general,<wbr/> low color temperature illuminant such as Standard-A will
20707 be chosen for the first reference illuminant and a higher color
20708 temperature illuminant such as D65 will be chosen for the second
20709 reference illuminant.<wbr/></p>
20710             </td>
20711           </tr>
20712
20713           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20714            <!-- end of entry -->
20715         
20716                 
20717           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20718             <td class="entry_name
20719              " rowspan="3">
20720               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20721             </td>
20722             <td class="entry_type">
20723                 <span class="entry_type_name">byte</span>
20724
20725               <span class="entry_type_visibility"> [public]</span>
20726
20727
20728
20729
20730
20731
20732             </td> <!-- entry_type -->
20733
20734             <td class="entry_description">
20735               <p>The standard reference illuminant used as the scene light source when
20736 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20737 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20738 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20739             </td>
20740
20741             <td class="entry_units">
20742             </td>
20743
20744             <td class="entry_range">
20745               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
20746             </td>
20747
20748             <td class="entry_hal_version">
20749               <p>3.<wbr/>2</p>
20750             </td>
20751
20752             <td class="entry_tags">
20753               <ul class="entry_tags">
20754                   <li><a href="#tag_RAW">RAW</a></li>
20755               </ul>
20756             </td>
20757
20758           </tr>
20759           <tr class="entries_header">
20760             <th class="th_details" colspan="6">Details</th>
20761           </tr>
20762           <tr class="entry_cont">
20763             <td class="entry_details" colspan="6">
20764               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
20765 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20766 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20767 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
20768             </td>
20769           </tr>
20770
20771
20772           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20773            <!-- end of entry -->
20774         
20775                 
20776           <tr class="entry" id="static_android.sensor.calibrationTransform1">
20777             <td class="entry_name
20778              " rowspan="3">
20779               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
20780             </td>
20781             <td class="entry_type">
20782                 <span class="entry_type_name">rational</span>
20783                 <span class="entry_type_container">x</span>
20784
20785                 <span class="entry_type_array">
20786                   3 x 3
20787                 </span>
20788               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20789
20790
20791
20792
20793                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20794
20795
20796             </td> <!-- entry_type -->
20797
20798             <td class="entry_description">
20799               <p>A per-device calibration transform matrix that maps from the
20800 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
20801             </td>
20802
20803             <td class="entry_units">
20804             </td>
20805
20806             <td class="entry_range">
20807             </td>
20808
20809             <td class="entry_hal_version">
20810               <p>3.<wbr/>2</p>
20811             </td>
20812
20813             <td class="entry_tags">
20814               <ul class="entry_tags">
20815                   <li><a href="#tag_RAW">RAW</a></li>
20816               </ul>
20817             </td>
20818
20819           </tr>
20820           <tr class="entries_header">
20821             <th class="th_details" colspan="6">Details</th>
20822           </tr>
20823           <tr class="entry_cont">
20824             <td class="entry_details" colspan="6">
20825               <p>This matrix is used to correct for per-device variations in the
20826 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20827 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20828 contains a per-device calibration transform that maps colors
20829 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20830 colorspace) into this camera device's native sensor color
20831 space under the first reference illuminant
20832 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20833             </td>
20834           </tr>
20835
20836
20837           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20838            <!-- end of entry -->
20839         
20840                 
20841           <tr class="entry" id="static_android.sensor.calibrationTransform2">
20842             <td class="entry_name
20843              " rowspan="3">
20844               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
20845             </td>
20846             <td class="entry_type">
20847                 <span class="entry_type_name">rational</span>
20848                 <span class="entry_type_container">x</span>
20849
20850                 <span class="entry_type_array">
20851                   3 x 3
20852                 </span>
20853               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20854
20855
20856
20857
20858                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20859
20860
20861             </td> <!-- entry_type -->
20862
20863             <td class="entry_description">
20864               <p>A per-device calibration transform matrix that maps from the
20865 reference sensor colorspace to the actual device sensor colorspace
20866 (this is the colorspace of the raw buffer data).<wbr/></p>
20867             </td>
20868
20869             <td class="entry_units">
20870             </td>
20871
20872             <td class="entry_range">
20873             </td>
20874
20875             <td class="entry_hal_version">
20876               <p>3.<wbr/>2</p>
20877             </td>
20878
20879             <td class="entry_tags">
20880               <ul class="entry_tags">
20881                   <li><a href="#tag_RAW">RAW</a></li>
20882               </ul>
20883             </td>
20884
20885           </tr>
20886           <tr class="entries_header">
20887             <th class="th_details" colspan="6">Details</th>
20888           </tr>
20889           <tr class="entry_cont">
20890             <td class="entry_details" colspan="6">
20891               <p>This matrix is used to correct for per-device variations in the
20892 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20893 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20894 contains a per-device calibration transform that maps colors
20895 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20896 colorspace) into this camera device's native sensor color
20897 space under the second reference illuminant
20898 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
20899 <p>This matrix will only be present if the second reference
20900 illuminant is present.<wbr/></p>
20901             </td>
20902           </tr>
20903
20904
20905           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20906            <!-- end of entry -->
20907         
20908                 
20909           <tr class="entry" id="static_android.sensor.colorTransform1">
20910             <td class="entry_name
20911              " rowspan="3">
20912               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
20913             </td>
20914             <td class="entry_type">
20915                 <span class="entry_type_name">rational</span>
20916                 <span class="entry_type_container">x</span>
20917
20918                 <span class="entry_type_array">
20919                   3 x 3
20920                 </span>
20921               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20922
20923
20924
20925
20926                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20927
20928
20929             </td> <!-- entry_type -->
20930
20931             <td class="entry_description">
20932               <p>A matrix that transforms color values from CIE XYZ color space to
20933 reference sensor color space.<wbr/></p>
20934             </td>
20935
20936             <td class="entry_units">
20937             </td>
20938
20939             <td class="entry_range">
20940             </td>
20941
20942             <td class="entry_hal_version">
20943               <p>3.<wbr/>2</p>
20944             </td>
20945
20946             <td class="entry_tags">
20947               <ul class="entry_tags">
20948                   <li><a href="#tag_RAW">RAW</a></li>
20949               </ul>
20950             </td>
20951
20952           </tr>
20953           <tr class="entries_header">
20954             <th class="th_details" colspan="6">Details</th>
20955           </tr>
20956           <tr class="entry_cont">
20957             <td class="entry_details" colspan="6">
20958               <p>This matrix is used to convert from the standard CIE XYZ color
20959 space to the reference sensor colorspace,<wbr/> and is used when processing
20960 raw buffer data.<wbr/></p>
20961 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20962 contains a color transform matrix that maps colors from the CIE
20963 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20964 "golden module" colorspace) under the first reference illuminant
20965 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20966 <p>The white points chosen in both the reference sensor color space
20967 and the CIE XYZ colorspace when calculating this transform will
20968 match the standard white point for the first reference illuminant
20969 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20970             </td>
20971           </tr>
20972
20973
20974           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20975            <!-- end of entry -->
20976         
20977                 
20978           <tr class="entry" id="static_android.sensor.colorTransform2">
20979             <td class="entry_name
20980              " rowspan="3">
20981               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
20982             </td>
20983             <td class="entry_type">
20984                 <span class="entry_type_name">rational</span>
20985                 <span class="entry_type_container">x</span>
20986
20987                 <span class="entry_type_array">
20988                   3 x 3
20989                 </span>
20990               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20991
20992
20993
20994
20995                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20996
20997
20998             </td> <!-- entry_type -->
20999
21000             <td class="entry_description">
21001               <p>A matrix that transforms color values from CIE XYZ color space to
21002 reference sensor color space.<wbr/></p>
21003             </td>
21004
21005             <td class="entry_units">
21006             </td>
21007
21008             <td class="entry_range">
21009             </td>
21010
21011             <td class="entry_hal_version">
21012               <p>3.<wbr/>2</p>
21013             </td>
21014
21015             <td class="entry_tags">
21016               <ul class="entry_tags">
21017                   <li><a href="#tag_RAW">RAW</a></li>
21018               </ul>
21019             </td>
21020
21021           </tr>
21022           <tr class="entries_header">
21023             <th class="th_details" colspan="6">Details</th>
21024           </tr>
21025           <tr class="entry_cont">
21026             <td class="entry_details" colspan="6">
21027               <p>This matrix is used to convert from the standard CIE XYZ color
21028 space to the reference sensor colorspace,<wbr/> and is used when processing
21029 raw buffer data.<wbr/></p>
21030 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21031 contains a color transform matrix that maps colors from the CIE
21032 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21033 "golden module" colorspace) under the second reference illuminant
21034 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21035 <p>The white points chosen in both the reference sensor color space
21036 and the CIE XYZ colorspace when calculating this transform will
21037 match the standard white point for the second reference illuminant
21038 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21039 <p>This matrix will only be present if the second reference
21040 illuminant is present.<wbr/></p>
21041             </td>
21042           </tr>
21043
21044
21045           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21046            <!-- end of entry -->
21047         
21048                 
21049           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21050             <td class="entry_name
21051              " rowspan="3">
21052               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21053             </td>
21054             <td class="entry_type">
21055                 <span class="entry_type_name">rational</span>
21056                 <span class="entry_type_container">x</span>
21057
21058                 <span class="entry_type_array">
21059                   3 x 3
21060                 </span>
21061               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21062
21063
21064
21065
21066                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21067
21068
21069             </td> <!-- entry_type -->
21070
21071             <td class="entry_description">
21072               <p>A matrix that transforms white balanced camera colors from the reference
21073 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21074             </td>
21075
21076             <td class="entry_units">
21077             </td>
21078
21079             <td class="entry_range">
21080             </td>
21081
21082             <td class="entry_hal_version">
21083               <p>3.<wbr/>2</p>
21084             </td>
21085
21086             <td class="entry_tags">
21087               <ul class="entry_tags">
21088                   <li><a href="#tag_RAW">RAW</a></li>
21089               </ul>
21090             </td>
21091
21092           </tr>
21093           <tr class="entries_header">
21094             <th class="th_details" colspan="6">Details</th>
21095           </tr>
21096           <tr class="entry_cont">
21097             <td class="entry_details" colspan="6">
21098               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21099 is used when processing raw buffer data.<wbr/></p>
21100 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21101 a color transform matrix that maps white balanced colors from the
21102 reference sensor color space to the CIE XYZ color space with a D50 white
21103 point.<wbr/></p>
21104 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21105 this matrix is chosen so that the standard white point for this reference
21106 illuminant in the reference sensor colorspace is mapped to D50 in the
21107 CIE XYZ colorspace.<wbr/></p>
21108             </td>
21109           </tr>
21110
21111
21112           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21113            <!-- end of entry -->
21114         
21115                 
21116           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21117             <td class="entry_name
21118              " rowspan="3">
21119               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21120             </td>
21121             <td class="entry_type">
21122                 <span class="entry_type_name">rational</span>
21123                 <span class="entry_type_container">x</span>
21124
21125                 <span class="entry_type_array">
21126                   3 x 3
21127                 </span>
21128               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21129
21130
21131
21132
21133                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21134
21135
21136             </td> <!-- entry_type -->
21137
21138             <td class="entry_description">
21139               <p>A matrix that transforms white balanced camera colors from the reference
21140 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21141             </td>
21142
21143             <td class="entry_units">
21144             </td>
21145
21146             <td class="entry_range">
21147             </td>
21148
21149             <td class="entry_hal_version">
21150               <p>3.<wbr/>2</p>
21151             </td>
21152
21153             <td class="entry_tags">
21154               <ul class="entry_tags">
21155                   <li><a href="#tag_RAW">RAW</a></li>
21156               </ul>
21157             </td>
21158
21159           </tr>
21160           <tr class="entries_header">
21161             <th class="th_details" colspan="6">Details</th>
21162           </tr>
21163           <tr class="entry_cont">
21164             <td class="entry_details" colspan="6">
21165               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21166 is used when processing raw buffer data.<wbr/></p>
21167 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21168 a color transform matrix that maps white balanced colors from the
21169 reference sensor color space to the CIE XYZ color space with a D50 white
21170 point.<wbr/></p>
21171 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21172 this matrix is chosen so that the standard white point for this reference
21173 illuminant in the reference sensor colorspace is mapped to D50 in the
21174 CIE XYZ colorspace.<wbr/></p>
21175 <p>This matrix will only be present if the second reference
21176 illuminant is present.<wbr/></p>
21177             </td>
21178           </tr>
21179
21180
21181           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21182            <!-- end of entry -->
21183         
21184                 
21185           <tr class="entry" id="static_android.sensor.baseGainFactor">
21186             <td class="entry_name
21187              " rowspan="1">
21188               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21189             </td>
21190             <td class="entry_type">
21191                 <span class="entry_type_name">rational</span>
21192
21193               <span class="entry_type_visibility"> [system]</span>
21194
21195
21196
21197
21198
21199
21200             </td> <!-- entry_type -->
21201
21202             <td class="entry_description">
21203               <p>Gain factor from electrons to raw units when
21204 ISO=100</p>
21205             </td>
21206
21207             <td class="entry_units">
21208             </td>
21209
21210             <td class="entry_range">
21211             </td>
21212
21213             <td class="entry_hal_version">
21214               <p>3.<wbr/>2</p>
21215             </td>
21216
21217             <td class="entry_tags">
21218               <ul class="entry_tags">
21219                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21220               </ul>
21221             </td>
21222
21223           </tr>
21224
21225
21226           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21227            <!-- end of entry -->
21228         
21229                 
21230           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21231             <td class="entry_name
21232              " rowspan="5">
21233               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21234             </td>
21235             <td class="entry_type">
21236                 <span class="entry_type_name">int32</span>
21237                 <span class="entry_type_container">x</span>
21238
21239                 <span class="entry_type_array">
21240                   4
21241                 </span>
21242               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21243
21244
21245
21246
21247                 <div class="entry_type_notes">2x2 raw count block</div>
21248
21249
21250             </td> <!-- entry_type -->
21251
21252             <td class="entry_description">
21253               <p>A fixed black level offset for each of the color filter arrangement
21254 (CFA) mosaic channels.<wbr/></p>
21255             </td>
21256
21257             <td class="entry_units">
21258             </td>
21259
21260             <td class="entry_range">
21261               <p>&gt;= 0 for each.<wbr/></p>
21262             </td>
21263
21264             <td class="entry_hal_version">
21265               <p>3.<wbr/>2</p>
21266             </td>
21267
21268             <td class="entry_tags">
21269               <ul class="entry_tags">
21270                   <li><a href="#tag_RAW">RAW</a></li>
21271               </ul>
21272             </td>
21273
21274           </tr>
21275           <tr class="entries_header">
21276             <th class="th_details" colspan="6">Details</th>
21277           </tr>
21278           <tr class="entry_cont">
21279             <td class="entry_details" colspan="6">
21280               <p>This key specifies the zero light value for each of the CFA mosaic
21281 channels in the camera sensor.<wbr/>  The maximal value output by the
21282 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>
21283 <p>The values are given in the same order as channels listed for the CFA
21284 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
21285 nth value given corresponds to the black level offset for the nth
21286 color channel listed in the CFA.<wbr/></p>
21287 <p>The black level values of captured images may vary for different
21288 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21289 represents a coarse approximation for such case.<wbr/> It is recommended to
21290 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21291 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21292 supported by the camera device,<wbr/> which provides more accurate black
21293 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21294 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21295 level values for each frame.<wbr/></p>
21296             </td>
21297           </tr>
21298
21299           <tr class="entries_header">
21300             <th class="th_details" colspan="6">HAL Implementation Details</th>
21301           </tr>
21302           <tr class="entry_cont">
21303             <td class="entry_details" colspan="6">
21304               <p>The values are given in row-column scan order,<wbr/> with the first value
21305 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21306             </td>
21307           </tr>
21308
21309           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21310            <!-- end of entry -->
21311         
21312                 
21313           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21314             <td class="entry_name
21315              " rowspan="3">
21316               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21317             </td>
21318             <td class="entry_type">
21319                 <span class="entry_type_name">int32</span>
21320
21321               <span class="entry_type_visibility"> [public]</span>
21322
21323
21324               <span class="entry_type_hwlevel">[full] </span>
21325
21326
21327
21328
21329             </td> <!-- entry_type -->
21330
21331             <td class="entry_description">
21332               <p>Maximum sensitivity that is implemented
21333 purely through analog gain.<wbr/></p>
21334             </td>
21335
21336             <td class="entry_units">
21337             </td>
21338
21339             <td class="entry_range">
21340             </td>
21341
21342             <td class="entry_hal_version">
21343               <p>3.<wbr/>2</p>
21344             </td>
21345
21346             <td class="entry_tags">
21347               <ul class="entry_tags">
21348                   <li><a href="#tag_V1">V1</a></li>
21349                   <li><a href="#tag_FULL">FULL</a></li>
21350               </ul>
21351             </td>
21352
21353           </tr>
21354           <tr class="entries_header">
21355             <th class="th_details" colspan="6">Details</th>
21356           </tr>
21357           <tr class="entry_cont">
21358             <td class="entry_details" colspan="6">
21359               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21360 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21361 values above this,<wbr/> the gain applied can be a mix of analog and
21362 digital.<wbr/></p>
21363             </td>
21364           </tr>
21365
21366
21367           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21368            <!-- end of entry -->
21369         
21370                 
21371           <tr class="entry" id="static_android.sensor.orientation">
21372             <td class="entry_name
21373              " rowspan="3">
21374               android.<wbr/>sensor.<wbr/>orientation
21375             </td>
21376             <td class="entry_type">
21377                 <span class="entry_type_name">int32</span>
21378
21379               <span class="entry_type_visibility"> [public]</span>
21380
21381
21382               <span class="entry_type_hwlevel">[legacy] </span>
21383
21384
21385
21386
21387             </td> <!-- entry_type -->
21388
21389             <td class="entry_description">
21390               <p>Clockwise angle through which the output image needs to be rotated to be
21391 upright on the device screen in its native orientation.<wbr/></p>
21392             </td>
21393
21394             <td class="entry_units">
21395               Degrees of clockwise rotation; always a multiple of
21396           90
21397             </td>
21398
21399             <td class="entry_range">
21400               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21401             </td>
21402
21403             <td class="entry_hal_version">
21404               <p>3.<wbr/>2</p>
21405             </td>
21406
21407             <td class="entry_tags">
21408               <ul class="entry_tags">
21409                   <li><a href="#tag_BC">BC</a></li>
21410               </ul>
21411             </td>
21412
21413           </tr>
21414           <tr class="entries_header">
21415             <th class="th_details" colspan="6">Details</th>
21416           </tr>
21417           <tr class="entry_cont">
21418             <td class="entry_details" colspan="6">
21419               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21420 the sensor's coordinate system.<wbr/></p>
21421             </td>
21422           </tr>
21423
21424
21425           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21426            <!-- end of entry -->
21427         
21428                 
21429           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21430             <td class="entry_name
21431              " rowspan="3">
21432               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21433             </td>
21434             <td class="entry_type">
21435                 <span class="entry_type_name">int32</span>
21436                 <span class="entry_type_container">x</span>
21437
21438                 <span class="entry_type_array">
21439                   3
21440                 </span>
21441               <span class="entry_type_visibility"> [system]</span>
21442
21443
21444
21445
21446                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21447
21448
21449             </td> <!-- entry_type -->
21450
21451             <td class="entry_description">
21452               <p>The number of input samples for each dimension of
21453 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21454             </td>
21455
21456             <td class="entry_units">
21457             </td>
21458
21459             <td class="entry_range">
21460               <p>Hue &gt;= 1,<wbr/>
21461 Saturation &gt;= 2,<wbr/>
21462 Value &gt;= 1</p>
21463             </td>
21464
21465             <td class="entry_hal_version">
21466               <p>3.<wbr/>2</p>
21467             </td>
21468
21469             <td class="entry_tags">
21470               <ul class="entry_tags">
21471                   <li><a href="#tag_RAW">RAW</a></li>
21472               </ul>
21473             </td>
21474
21475           </tr>
21476           <tr class="entries_header">
21477             <th class="th_details" colspan="6">Details</th>
21478           </tr>
21479           <tr class="entry_cont">
21480             <td class="entry_details" colspan="6">
21481               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21482 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
21483 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21484 element.<wbr/></p>
21485             </td>
21486           </tr>
21487
21488
21489           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21490            <!-- end of entry -->
21491         
21492                 
21493           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21494             <td class="entry_name
21495              " rowspan="5">
21496               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21497             </td>
21498             <td class="entry_type">
21499                 <span class="entry_type_name">int32</span>
21500                 <span class="entry_type_container">x</span>
21501
21502                 <span class="entry_type_array">
21503                   n
21504                 </span>
21505               <span class="entry_type_visibility"> [public]</span>
21506
21507
21508
21509
21510                 <div class="entry_type_notes">list of enums</div>
21511
21512
21513             </td> <!-- entry_type -->
21514
21515             <td class="entry_description">
21516               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21517 supported by this camera device.<wbr/></p>
21518             </td>
21519
21520             <td class="entry_units">
21521             </td>
21522
21523             <td class="entry_range">
21524               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21525             </td>
21526
21527             <td class="entry_hal_version">
21528               <p>3.<wbr/>2</p>
21529             </td>
21530
21531             <td class="entry_tags">
21532             </td>
21533
21534           </tr>
21535           <tr class="entries_header">
21536             <th class="th_details" colspan="6">Details</th>
21537           </tr>
21538           <tr class="entry_cont">
21539             <td class="entry_details" colspan="6">
21540               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21541             </td>
21542           </tr>
21543
21544           <tr class="entries_header">
21545             <th class="th_details" colspan="6">HAL Implementation Details</th>
21546           </tr>
21547           <tr class="entry_cont">
21548             <td class="entry_details" colspan="6">
21549               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
21550             </td>
21551           </tr>
21552
21553           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21554            <!-- end of entry -->
21555         
21556                 
21557           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21558             <td class="entry_name
21559              " rowspan="5">
21560               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21561             </td>
21562             <td class="entry_type">
21563                 <span class="entry_type_name">int32</span>
21564                 <span class="entry_type_container">x</span>
21565
21566                 <span class="entry_type_array">
21567                   4 x num_regions
21568                 </span>
21569               <span class="entry_type_visibility"> [public as rectangle]</span>
21570
21571
21572
21573
21574
21575
21576             </td> <!-- entry_type -->
21577
21578             <td class="entry_description">
21579               <p>List of disjoint rectangles indicating the sensor
21580 optically shielded black pixel regions.<wbr/></p>
21581             </td>
21582
21583             <td class="entry_units">
21584             </td>
21585
21586             <td class="entry_range">
21587             </td>
21588
21589             <td class="entry_hal_version">
21590               <p>3.<wbr/>2</p>
21591             </td>
21592
21593             <td class="entry_tags">
21594             </td>
21595
21596           </tr>
21597           <tr class="entries_header">
21598             <th class="th_details" colspan="6">Details</th>
21599           </tr>
21600           <tr class="entry_cont">
21601             <td class="entry_details" colspan="6">
21602               <p>In most camera sensors,<wbr/> the active array is surrounded by some
21603 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21604 provides a reliable black reference for black level compensation
21605 in active array region.<wbr/></p>
21606 <p>This key provides a list of disjoint rectangles specifying the
21607 regions of optically shielded (with metal shield) black pixel
21608 regions if the camera device is capable of reading out these black
21609 pixels in the output raw images.<wbr/> In comparison to the fixed black
21610 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21611 may provide a more accurate way for the application to calculate
21612 black level of each captured raw images.<wbr/></p>
21613 <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
21614 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21615             </td>
21616           </tr>
21617
21618           <tr class="entries_header">
21619             <th class="th_details" colspan="6">HAL Implementation Details</th>
21620           </tr>
21621           <tr class="entry_cont">
21622             <td class="entry_details" colspan="6">
21623               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21624 must be &gt;= (0,<wbr/>0) and &lt;=
21625 <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
21626 &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
21627 outside the region reported by
21628 <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>
21629 <p>The HAL must report minimal number of disjoint regions for the
21630 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21631 be covered by one rectangle,<wbr/> the HAL must not split this region into
21632 multiple rectangles.<wbr/></p>
21633             </td>
21634           </tr>
21635
21636           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21637            <!-- end of entry -->
21638         
21639                 
21640           <tr class="entry" id="static_android.sensor.opaqueRawSize">
21641             <td class="entry_name
21642              " rowspan="5">
21643               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21644             </td>
21645             <td class="entry_type">
21646                 <span class="entry_type_name">int32</span>
21647                 <span class="entry_type_container">x</span>
21648
21649                 <span class="entry_type_array">
21650                   n x 3
21651                 </span>
21652               <span class="entry_type_visibility"> [system]</span>
21653
21654
21655
21656
21657
21658
21659             </td> <!-- entry_type -->
21660
21661             <td class="entry_description">
21662               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21663             </td>
21664
21665             <td class="entry_units">
21666             </td>
21667
21668             <td class="entry_range">
21669               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21670 the camera</p>
21671             </td>
21672
21673             <td class="entry_hal_version">
21674               <p>3.<wbr/>2</p>
21675             </td>
21676
21677             <td class="entry_tags">
21678             </td>
21679
21680           </tr>
21681           <tr class="entries_header">
21682             <th class="th_details" colspan="6">Details</th>
21683           </tr>
21684           <tr class="entry_cont">
21685             <td class="entry_details" colspan="6">
21686               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21687 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21688 All RAW_<wbr/>OPAQUE output stream configuration listed in
21689 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21690 this key.<wbr/></p>
21691             </td>
21692           </tr>
21693
21694           <tr class="entries_header">
21695             <th class="th_details" colspan="6">HAL Implementation Details</th>
21696           </tr>
21697           <tr class="entry_cont">
21698             <td class="entry_details" colspan="6">
21699               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21700 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21701 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21702 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21703 between rows.<wbr/></p>
21704             </td>
21705           </tr>
21706
21707           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21708            <!-- end of entry -->
21709         
21710         
21711
21712       <!-- end of kind -->
21713       </tbody>
21714       <tr><td colspan="7" class="kind">dynamic</td></tr>
21715
21716       <thead class="entries_header">
21717         <tr>
21718           <th class="th_name">Property Name</th>
21719           <th class="th_type">Type</th>
21720           <th class="th_description">Description</th>
21721           <th class="th_units">Units</th>
21722           <th class="th_range">Range</th>
21723           <th class="th_hal_version">Initial HIDL HAL version</th>
21724           <th class="th_tags">Tags</th>
21725         </tr>
21726       </thead>
21727
21728       <tbody>
21729
21730         
21731
21732         
21733
21734         
21735
21736         
21737
21738                 
21739           <tr class="entry" id="dynamic_android.sensor.exposureTime">
21740             <td class="entry_name
21741              " rowspan="3">
21742               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
21743             </td>
21744             <td class="entry_type">
21745                 <span class="entry_type_name">int64</span>
21746
21747               <span class="entry_type_visibility"> [public]</span>
21748
21749
21750               <span class="entry_type_hwlevel">[full] </span>
21751
21752
21753
21754
21755             </td> <!-- entry_type -->
21756
21757             <td class="entry_description">
21758               <p>Duration each pixel is exposed to
21759 light.<wbr/></p>
21760             </td>
21761
21762             <td class="entry_units">
21763               Nanoseconds
21764             </td>
21765
21766             <td class="entry_range">
21767               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
21768             </td>
21769
21770             <td class="entry_hal_version">
21771               <p>3.<wbr/>2</p>
21772             </td>
21773
21774             <td class="entry_tags">
21775               <ul class="entry_tags">
21776                   <li><a href="#tag_V1">V1</a></li>
21777               </ul>
21778             </td>
21779
21780           </tr>
21781           <tr class="entries_header">
21782             <th class="th_details" colspan="6">Details</th>
21783           </tr>
21784           <tr class="entry_cont">
21785             <td class="entry_details" colspan="6">
21786               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
21787 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
21788 The final exposure time used will be available in the output capture result.<wbr/></p>
21789 <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
21790 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21791             </td>
21792           </tr>
21793
21794
21795           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21796            <!-- end of entry -->
21797         
21798                 
21799           <tr class="entry" id="dynamic_android.sensor.frameDuration">
21800             <td class="entry_name
21801              " rowspan="5">
21802               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
21803             </td>
21804             <td class="entry_type">
21805                 <span class="entry_type_name">int64</span>
21806
21807               <span class="entry_type_visibility"> [public]</span>
21808
21809
21810               <span class="entry_type_hwlevel">[full] </span>
21811
21812
21813
21814
21815             </td> <!-- entry_type -->
21816
21817             <td class="entry_description">
21818               <p>Duration from start of frame exposure to
21819 start of next frame exposure.<wbr/></p>
21820             </td>
21821
21822             <td class="entry_units">
21823               Nanoseconds
21824             </td>
21825
21826             <td class="entry_range">
21827               <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/>
21828 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
21829             </td>
21830
21831             <td class="entry_hal_version">
21832               <p>3.<wbr/>2</p>
21833             </td>
21834
21835             <td class="entry_tags">
21836               <ul class="entry_tags">
21837                   <li><a href="#tag_V1">V1</a></li>
21838               </ul>
21839             </td>
21840
21841           </tr>
21842           <tr class="entries_header">
21843             <th class="th_details" colspan="6">Details</th>
21844           </tr>
21845           <tr class="entry_cont">
21846             <td class="entry_details" colspan="6">
21847               <p>The maximum frame rate that can be supported by a camera subsystem is
21848 a function of many factors:</p>
21849 <ul>
21850 <li>Requested resolutions of output image streams</li>
21851 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
21852 <li>The bandwidth of the imager interface</li>
21853 <li>The bandwidth of the various ISP processing blocks</li>
21854 </ul>
21855 <p>Since these factors can vary greatly between different ISPs and
21856 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
21857 restrictions with as simple a model as possible.<wbr/></p>
21858 <p>The model presented has the following characteristics:</p>
21859 <ul>
21860 <li>The image sensor is always configured to output the smallest
21861 resolution possible given the application's requested output stream
21862 sizes.<wbr/>  The smallest resolution is defined as being at least as large
21863 as the largest requested output stream size; the camera pipeline must
21864 never digitally upsample sensor data when the crop region covers the
21865 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
21866 resolutions are configured,<wbr/> the sensor can provide a higher frame
21867 rate.<wbr/></li>
21868 <li>Since any request may use any or all the currently configured
21869 output streams,<wbr/> the sensor and ISP must be configured to support
21870 scaling a single capture to all the streams at the same time.<wbr/>  This
21871 means the camera pipeline must be ready to produce the largest
21872 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
21873 frame rate of a given configured stream set is governed only by the
21874 largest requested stream resolution.<wbr/></li>
21875 <li>Using more than one output stream in a request does not affect the
21876 frame duration.<wbr/></li>
21877 <li>Certain format-streams may need to do additional background processing
21878 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
21879 can run concurrently to the rest of the camera pipeline,<wbr/> but
21880 cannot process more than 1 capture at a time.<wbr/></li>
21881 </ul>
21882 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
21883 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
21884 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
21885 possible for a given stream configuration.<wbr/></p>
21886 <p>Specifically,<wbr/> the application can use the following rules to
21887 determine the minimum frame duration it can request from the camera
21888 device:</p>
21889 <ol>
21890 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
21891 <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>
21892 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
21893 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
21894 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>
21895 </ol>
21896 <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>
21897 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
21898 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
21899 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
21900 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
21901 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
21902 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
21903 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
21904 <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>
21905 <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
21906 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21907             </td>
21908           </tr>
21909
21910           <tr class="entries_header">
21911             <th class="th_details" colspan="6">HAL Implementation Details</th>
21912           </tr>
21913           <tr class="entry_cont">
21914             <td class="entry_details" colspan="6">
21915               <p>For more details about stalling,<wbr/> see
21916 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
21917             </td>
21918           </tr>
21919
21920           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21921            <!-- end of entry -->
21922         
21923                 
21924           <tr class="entry" id="dynamic_android.sensor.sensitivity">
21925             <td class="entry_name
21926              " rowspan="5">
21927               android.<wbr/>sensor.<wbr/>sensitivity
21928             </td>
21929             <td class="entry_type">
21930                 <span class="entry_type_name">int32</span>
21931
21932               <span class="entry_type_visibility"> [public]</span>
21933
21934
21935               <span class="entry_type_hwlevel">[full] </span>
21936
21937
21938
21939
21940             </td> <!-- entry_type -->
21941
21942             <td class="entry_description">
21943               <p>The amount of gain applied to sensor data
21944 before processing.<wbr/></p>
21945             </td>
21946
21947             <td class="entry_units">
21948               ISO arithmetic units
21949             </td>
21950
21951             <td class="entry_range">
21952               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
21953             </td>
21954
21955             <td class="entry_hal_version">
21956               <p>3.<wbr/>2</p>
21957             </td>
21958
21959             <td class="entry_tags">
21960               <ul class="entry_tags">
21961                   <li><a href="#tag_V1">V1</a></li>
21962               </ul>
21963             </td>
21964
21965           </tr>
21966           <tr class="entries_header">
21967             <th class="th_details" colspan="6">Details</th>
21968           </tr>
21969           <tr class="entry_cont">
21970             <td class="entry_details" colspan="6">
21971               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
21972 as defined in ISO 12232:2006.<wbr/></p>
21973 <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
21974 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
21975 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
21976 <p>If the camera device cannot apply the exact sensitivity
21977 requested,<wbr/> it will reduce the gain to the nearest supported
21978 value.<wbr/> The final sensitivity used will be available in the
21979 output capture result.<wbr/></p>
21980 <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
21981 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21982             </td>
21983           </tr>
21984
21985           <tr class="entries_header">
21986             <th class="th_details" colspan="6">HAL Implementation Details</th>
21987           </tr>
21988           <tr class="entry_cont">
21989             <td class="entry_details" colspan="6">
21990               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
21991             </td>
21992           </tr>
21993
21994           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21995            <!-- end of entry -->
21996         
21997                 
21998           <tr class="entry" id="dynamic_android.sensor.timestamp">
21999             <td class="entry_name
22000              " rowspan="5">
22001               android.<wbr/>sensor.<wbr/>timestamp
22002             </td>
22003             <td class="entry_type">
22004                 <span class="entry_type_name">int64</span>
22005
22006               <span class="entry_type_visibility"> [public]</span>
22007
22008
22009               <span class="entry_type_hwlevel">[legacy] </span>
22010
22011
22012
22013
22014             </td> <!-- entry_type -->
22015
22016             <td class="entry_description">
22017               <p>Time at start of exposure of first
22018 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22019             </td>
22020
22021             <td class="entry_units">
22022               Nanoseconds
22023             </td>
22024
22025             <td class="entry_range">
22026               <p>&gt; 0</p>
22027             </td>
22028
22029             <td class="entry_hal_version">
22030               <p>3.<wbr/>2</p>
22031             </td>
22032
22033             <td class="entry_tags">
22034               <ul class="entry_tags">
22035                   <li><a href="#tag_BC">BC</a></li>
22036               </ul>
22037             </td>
22038
22039           </tr>
22040           <tr class="entries_header">
22041             <th class="th_details" colspan="6">Details</th>
22042           </tr>
22043           <tr class="entry_cont">
22044             <td class="entry_details" colspan="6">
22045               <p>The timestamps are also included in all image
22046 buffers produced for the same capture,<wbr/> and will be identical
22047 on all the outputs.<wbr/></p>
22048 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22049 the timestamps measure time since an unspecified starting point,<wbr/>
22050 and are monotonically increasing.<wbr/> They can be compared with the
22051 timestamps for other captures from the same camera device,<wbr/> but are
22052 not guaranteed to be comparable to any other time source.<wbr/></p>
22053 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22054 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
22055 be compared to other timestamps from other subsystems that
22056 are using that base.<wbr/></p>
22057 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22058 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22059 timestamp</a> in the TotalCaptureResult that was used to create the
22060 reprocess capture request.<wbr/></p>
22061             </td>
22062           </tr>
22063
22064           <tr class="entries_header">
22065             <th class="th_details" colspan="6">HAL Implementation Details</th>
22066           </tr>
22067           <tr class="entry_cont">
22068             <td class="entry_details" colspan="6">
22069               <p>All timestamps must be in reference to the kernel's
22070 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22071 time spent asleep.<wbr/> This allows for synchronization with
22072 sensors that continue to operate while the system is
22073 otherwise asleep.<wbr/></p>
22074 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22075 The timestamp must be synchronized with the timestamps from other
22076 sensor subsystems that are using the same timebase.<wbr/></p>
22077 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22078 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22079 capture request.<wbr/></p>
22080             </td>
22081           </tr>
22082
22083           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22084            <!-- end of entry -->
22085         
22086                 
22087           <tr class="entry" id="dynamic_android.sensor.temperature">
22088             <td class="entry_name
22089              " rowspan="1">
22090               android.<wbr/>sensor.<wbr/>temperature
22091             </td>
22092             <td class="entry_type">
22093                 <span class="entry_type_name">float</span>
22094
22095               <span class="entry_type_visibility"> [system]</span>
22096
22097
22098
22099
22100
22101
22102             </td> <!-- entry_type -->
22103
22104             <td class="entry_description">
22105               <p>The temperature of the sensor,<wbr/> sampled at the time
22106 exposure began for this frame.<wbr/></p>
22107 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22108 somewhere close to it.<wbr/></p>
22109             </td>
22110
22111             <td class="entry_units">
22112               Celsius
22113             </td>
22114
22115             <td class="entry_range">
22116               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22117             </td>
22118
22119             <td class="entry_hal_version">
22120               <p>3.<wbr/>2</p>
22121             </td>
22122
22123             <td class="entry_tags">
22124               <ul class="entry_tags">
22125                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22126               </ul>
22127             </td>
22128
22129           </tr>
22130
22131
22132           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22133            <!-- end of entry -->
22134         
22135                 
22136           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22137             <td class="entry_name
22138              " rowspan="3">
22139               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22140             </td>
22141             <td class="entry_type">
22142                 <span class="entry_type_name">rational</span>
22143                 <span class="entry_type_container">x</span>
22144
22145                 <span class="entry_type_array">
22146                   3
22147                 </span>
22148               <span class="entry_type_visibility"> [public]</span>
22149
22150
22151
22152
22153
22154
22155             </td> <!-- entry_type -->
22156
22157             <td class="entry_description">
22158               <p>The estimated camera neutral color in the native sensor colorspace at
22159 the time of capture.<wbr/></p>
22160             </td>
22161
22162             <td class="entry_units">
22163             </td>
22164
22165             <td class="entry_range">
22166             </td>
22167
22168             <td class="entry_hal_version">
22169               <p>3.<wbr/>2</p>
22170             </td>
22171
22172             <td class="entry_tags">
22173               <ul class="entry_tags">
22174                   <li><a href="#tag_RAW">RAW</a></li>
22175               </ul>
22176             </td>
22177
22178           </tr>
22179           <tr class="entries_header">
22180             <th class="th_details" colspan="6">Details</th>
22181           </tr>
22182           <tr class="entry_cont">
22183             <td class="entry_details" colspan="6">
22184               <p>This value gives the neutral color point encoded as an RGB value in the
22185 native sensor color space.<wbr/>  The neutral color point indicates the
22186 currently estimated white point of the scene illumination.<wbr/>  It can be
22187 used to interpolate between the provided color transforms when
22188 processing raw sensor data.<wbr/></p>
22189 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22190             </td>
22191           </tr>
22192
22193
22194           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22195            <!-- end of entry -->
22196         
22197                 
22198           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22199             <td class="entry_name
22200              " rowspan="5">
22201               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22202             </td>
22203             <td class="entry_type">
22204                 <span class="entry_type_name">double</span>
22205                 <span class="entry_type_container">x</span>
22206
22207                 <span class="entry_type_array">
22208                   2 x CFA Channels
22209                 </span>
22210               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22211
22212
22213
22214
22215                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22216
22217
22218             </td> <!-- entry_type -->
22219
22220             <td class="entry_description">
22221               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22222             </td>
22223
22224             <td class="entry_units">
22225             </td>
22226
22227             <td class="entry_range">
22228             </td>
22229
22230             <td class="entry_hal_version">
22231               <p>3.<wbr/>2</p>
22232             </td>
22233
22234             <td class="entry_tags">
22235               <ul class="entry_tags">
22236                   <li><a href="#tag_RAW">RAW</a></li>
22237               </ul>
22238             </td>
22239
22240           </tr>
22241           <tr class="entries_header">
22242             <th class="th_details" colspan="6">Details</th>
22243           </tr>
22244           <tr class="entry_cont">
22245             <td class="entry_details" colspan="6">
22246               <p>This key contains two noise model coefficients for each CFA channel
22247 corresponding to the sensor amplification (S) and sensor readout
22248 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22249 in the same order as channels listed for the CFA layout key
22250 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22251 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22252 the first member of the Pair at index n is the S coefficient and the
22253 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22254 <p>These coefficients are used in a two parameter noise model to describe
22255 the amount of noise present in the image for each CFA channel.<wbr/>  The
22256 noise model used here is:</p>
22257 <p>N(x) = sqrt(Sx + O)</p>
22258 <p>Where x represents the recorded signal of a CFA channel normalized to
22259 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22260 that channel.<wbr/></p>
22261 <p>A more detailed description of the noise model can be found in the
22262 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22263             </td>
22264           </tr>
22265
22266           <tr class="entries_header">
22267             <th class="th_details" colspan="6">HAL Implementation Details</th>
22268           </tr>
22269           <tr class="entry_cont">
22270             <td class="entry_details" colspan="6">
22271               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22272 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22273 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22274 channel,<wbr/> etc.<wbr/></p>
22275             </td>
22276           </tr>
22277
22278           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22279            <!-- end of entry -->
22280         
22281                 
22282           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22283             <td class="entry_name
22284              " rowspan="3">
22285               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22286             </td>
22287             <td class="entry_type">
22288                 <span class="entry_type_name">float</span>
22289                 <span class="entry_type_container">x</span>
22290
22291                 <span class="entry_type_array">
22292                   hue_samples x saturation_samples x value_samples x 3
22293                 </span>
22294               <span class="entry_type_visibility"> [system]</span>
22295
22296
22297
22298
22299                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22300
22301
22302             </td> <!-- entry_type -->
22303
22304             <td class="entry_description">
22305               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22306 for each pixel.<wbr/></p>
22307             </td>
22308
22309             <td class="entry_units">
22310               
22311           The hue shift is given in degrees; saturation and value scale factors are
22312           unitless and are between 0 and 1 inclusive
22313           
22314             </td>
22315
22316             <td class="entry_range">
22317             </td>
22318
22319             <td class="entry_hal_version">
22320               <p>3.<wbr/>2</p>
22321             </td>
22322
22323             <td class="entry_tags">
22324               <ul class="entry_tags">
22325                   <li><a href="#tag_RAW">RAW</a></li>
22326               </ul>
22327             </td>
22328
22329           </tr>
22330           <tr class="entries_header">
22331             <th class="th_details" colspan="6">Details</th>
22332           </tr>
22333           <tr class="entry_cont">
22334             <td class="entry_details" colspan="6">
22335               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22336 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22337 <p>Each entry of this map contains three floats corresponding to the
22338 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22339 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22340 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22341 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22342 inner loop.<wbr/> All zero input saturation entries are required to have a
22343 value scale factor of 1.<wbr/>0.<wbr/></p>
22344             </td>
22345           </tr>
22346
22347
22348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22349            <!-- end of entry -->
22350         
22351                 
22352           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22353             <td class="entry_name
22354              " rowspan="3">
22355               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22356             </td>
22357             <td class="entry_type">
22358                 <span class="entry_type_name">float</span>
22359                 <span class="entry_type_container">x</span>
22360
22361                 <span class="entry_type_array">
22362                   samples x 2
22363                 </span>
22364               <span class="entry_type_visibility"> [system]</span>
22365
22366
22367
22368
22369                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22370
22371
22372             </td> <!-- entry_type -->
22373
22374             <td class="entry_description">
22375               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22376             </td>
22377
22378             <td class="entry_units">
22379             </td>
22380
22381             <td class="entry_range">
22382               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22383 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22384 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22385             </td>
22386
22387             <td class="entry_hal_version">
22388               <p>3.<wbr/>2</p>
22389             </td>
22390
22391             <td class="entry_tags">
22392               <ul class="entry_tags">
22393                   <li><a href="#tag_RAW">RAW</a></li>
22394               </ul>
22395             </td>
22396
22397           </tr>
22398           <tr class="entries_header">
22399             <th class="th_details" colspan="6">Details</th>
22400           </tr>
22401           <tr class="entry_cont">
22402             <td class="entry_details" colspan="6">
22403               <p>This key contains a default tone curve that can be applied while
22404 processing the image as a starting point for user adjustments.<wbr/>
22405 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22406 The curve is interpolated using a cubic spline.<wbr/></p>
22407             </td>
22408           </tr>
22409
22410
22411           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22412            <!-- end of entry -->
22413         
22414                 
22415           <tr class="entry" id="dynamic_android.sensor.greenSplit">
22416             <td class="entry_name
22417              " rowspan="5">
22418               android.<wbr/>sensor.<wbr/>green<wbr/>Split
22419             </td>
22420             <td class="entry_type">
22421                 <span class="entry_type_name">float</span>
22422
22423               <span class="entry_type_visibility"> [public]</span>
22424
22425
22426
22427
22428
22429
22430             </td> <!-- entry_type -->
22431
22432             <td class="entry_description">
22433               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22434             </td>
22435
22436             <td class="entry_units">
22437             </td>
22438
22439             <td class="entry_range">
22440               <p>&gt;= 0</p>
22441             </td>
22442
22443             <td class="entry_hal_version">
22444               <p>3.<wbr/>2</p>
22445             </td>
22446
22447             <td class="entry_tags">
22448               <ul class="entry_tags">
22449                   <li><a href="#tag_RAW">RAW</a></li>
22450               </ul>
22451             </td>
22452
22453           </tr>
22454           <tr class="entries_header">
22455             <th class="th_details" colspan="6">Details</th>
22456           </tr>
22457           <tr class="entry_cont">
22458             <td class="entry_details" colspan="6">
22459               <p>This value is an estimate of the worst case split between the
22460 Bayer green channels in the red and blue rows in the sensor color
22461 filter array.<wbr/></p>
22462 <p>The green split is calculated as follows:</p>
22463 <ol>
22464 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22465 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22466 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
22467 chosen is implementation defined,<wbr/> and should be chosen to provide a
22468 green split estimate that is both representative of the entire image
22469 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22470 <li>The arithmetic mean of the green channels from the red
22471 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22472 <li>The arithmetic mean of the green channels from the blue
22473 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22474 <li>The maximum ratio R of the two means is computed as follows:
22475 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22476 </ol>
22477 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22478 which represents how much the green channels differ in the mosaic
22479 pattern.<wbr/>  This value is typically used to determine the treatment of
22480 the green mosaic channels when demosaicing.<wbr/></p>
22481 <p>The green split value can be roughly interpreted as follows:</p>
22482 <ul>
22483 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
22484 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
22485 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22486 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
22487 a usuable image (&gt;20% divergence).<wbr/></li>
22488 </ul>
22489             </td>
22490           </tr>
22491
22492           <tr class="entries_header">
22493             <th class="th_details" colspan="6">HAL Implementation Details</th>
22494           </tr>
22495           <tr class="entry_cont">
22496             <td class="entry_details" colspan="6">
22497               <p>The green split given may be a static value based on prior
22498 characterization of the camera sensor using the green split
22499 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22500 set of images.<wbr/>  Other methods of calculation that produce equivalent
22501 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22502             </td>
22503           </tr>
22504
22505           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22506            <!-- end of entry -->
22507         
22508                 
22509           <tr class="entry" id="dynamic_android.sensor.testPatternData">
22510             <td class="entry_name
22511              " rowspan="5">
22512               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22513             </td>
22514             <td class="entry_type">
22515                 <span class="entry_type_name">int32</span>
22516                 <span class="entry_type_container">x</span>
22517
22518                 <span class="entry_type_array">
22519                   4
22520                 </span>
22521               <span class="entry_type_visibility"> [public]</span>
22522
22523
22524
22525
22526
22527
22528             </td> <!-- entry_type -->
22529
22530             <td class="entry_description">
22531               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22532 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22533             </td>
22534
22535             <td class="entry_units">
22536             </td>
22537
22538             <td class="entry_range">
22539             </td>
22540
22541             <td class="entry_hal_version">
22542               <p>3.<wbr/>2</p>
22543             </td>
22544
22545             <td class="entry_tags">
22546             </td>
22547
22548           </tr>
22549           <tr class="entries_header">
22550             <th class="th_details" colspan="6">Details</th>
22551           </tr>
22552           <tr class="entry_cont">
22553             <td class="entry_details" colspan="6">
22554               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22555 The camera device then uses the most significant X bits
22556 that correspond to how many bits are in its Bayer raw sensor
22557 output.<wbr/></p>
22558 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22559 10 most significant bits from each color channel.<wbr/></p>
22560             </td>
22561           </tr>
22562
22563           <tr class="entries_header">
22564             <th class="th_details" colspan="6">HAL Implementation Details</th>
22565           </tr>
22566           <tr class="entry_cont">
22567             <td class="entry_details" colspan="6">
22568               
22569             </td>
22570           </tr>
22571
22572           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22573            <!-- end of entry -->
22574         
22575                 
22576           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22577             <td class="entry_name
22578              " rowspan="5">
22579               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22580             </td>
22581             <td class="entry_type">
22582                 <span class="entry_type_name entry_type_name_enum">int32</span>
22583
22584               <span class="entry_type_visibility"> [public]</span>
22585
22586
22587
22588
22589
22590                 <ul class="entry_type_enum">
22591                   <li>
22592                     <span class="entry_type_enum_name">OFF</span>
22593                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22594 device returns captures from the image sensor.<wbr/></p>
22595 <p>This is the default if the key is not set.<wbr/></p></span>
22596                   </li>
22597                   <li>
22598                     <span class="entry_type_enum_name">SOLID_COLOR</span>
22599                     <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
22600 respective color channel provided in
22601 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22602 <p>For example:</p>
22603 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22604 </code></pre>
22605 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22606 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22607 </code></pre>
22608 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22609 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22610                   </li>
22611                   <li>
22612                     <span class="entry_type_enum_name">COLOR_BARS</span>
22613                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22614 <p>The vertical bars (left-to-right) are as follows:</p>
22615 <ul>
22616 <li>100% white</li>
22617 <li>yellow</li>
22618 <li>cyan</li>
22619 <li>green</li>
22620 <li>magenta</li>
22621 <li>red</li>
22622 <li>blue</li>
22623 <li>black</li>
22624 </ul>
22625 <p>In general the image would look like the following:</p>
22626 <pre><code>W Y C G M R B K
22627 W Y C G M R B K
22628 W Y C G M R B K
22629 W Y C G M R B K
22630 W Y C G M R B K
22631 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22632 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22633 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22634
22635 (B = Blue,<wbr/> K = Black)
22636 </code></pre>
22637 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22638 When this is not possible,<wbr/> the bar size should be rounded
22639 down to the nearest integer and the pattern can repeat
22640 on the right side.<wbr/></p>
22641 <p>Each bar's height must always take up the full sensor
22642 pixel array height.<wbr/></p>
22643 <p>Each pixel in this test pattern must be set to either
22644 0% intensity or 100% intensity.<wbr/></p></span>
22645                   </li>
22646                   <li>
22647                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
22648                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22649 each bar should start at its specified color at the top,<wbr/>
22650 and fade to gray at the bottom.<wbr/></p>
22651 <p>Furthermore each bar is further subdivided into a left and
22652 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22653 and the right half should have a quantized gradient.<wbr/></p>
22654 <p>In particular,<wbr/> the right half's should consist of blocks of the
22655 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22656 <p>The least significant bits in the quantized gradient should
22657 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22658 <p>The height of each bar should always be a multiple of 128.<wbr/>
22659 When this is not the case,<wbr/> the pattern should repeat at the bottom
22660 of the image.<wbr/></p></span>
22661                   </li>
22662                   <li>
22663                     <span class="entry_type_enum_name">PN9</span>
22664                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22665 generated from a PN9 512-bit sequence (typically implemented
22666 in hardware with a linear feedback shift register).<wbr/></p>
22667 <p>The generator should be reset at the beginning of each frame,<wbr/>
22668 and thus each subsequent raw frame with this test pattern should
22669 be exactly the same as the last.<wbr/></p></span>
22670                   </li>
22671                   <li>
22672                     <span class="entry_type_enum_name">CUSTOM1</span>
22673                     <span class="entry_type_enum_value">256</span>
22674                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22675 available only on this camera device are at least this numeric
22676 value.<wbr/></p>
22677 <p>All of the custom test patterns will be static
22678 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22679                   </li>
22680                 </ul>
22681
22682             </td> <!-- entry_type -->
22683
22684             <td class="entry_description">
22685               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22686 doing a real exposure from the camera.<wbr/></p>
22687             </td>
22688
22689             <td class="entry_units">
22690             </td>
22691
22692             <td class="entry_range">
22693               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22694             </td>
22695
22696             <td class="entry_hal_version">
22697               <p>3.<wbr/>2</p>
22698             </td>
22699
22700             <td class="entry_tags">
22701             </td>
22702
22703           </tr>
22704           <tr class="entries_header">
22705             <th class="th_details" colspan="6">Details</th>
22706           </tr>
22707           <tr class="entry_cont">
22708             <td class="entry_details" colspan="6">
22709               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22710 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22711 work as normal.<wbr/></p>
22712 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22713 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22714 would not actually affect it).<wbr/></p>
22715 <p>Defaults to OFF.<wbr/></p>
22716             </td>
22717           </tr>
22718
22719           <tr class="entries_header">
22720             <th class="th_details" colspan="6">HAL Implementation Details</th>
22721           </tr>
22722           <tr class="entry_cont">
22723             <td class="entry_details" colspan="6">
22724               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22725 <p>The HAL may choose to substitute test patterns from the sensor
22726 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22727 indistinguishable to the ISP whether the data came from the
22728 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
22729             </td>
22730           </tr>
22731
22732           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22733            <!-- end of entry -->
22734         
22735                 
22736           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
22737             <td class="entry_name
22738              " rowspan="5">
22739               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
22740             </td>
22741             <td class="entry_type">
22742                 <span class="entry_type_name">int64</span>
22743
22744               <span class="entry_type_visibility"> [public]</span>
22745
22746
22747               <span class="entry_type_hwlevel">[limited] </span>
22748
22749
22750
22751
22752             </td> <!-- entry_type -->
22753
22754             <td class="entry_description">
22755               <p>Duration between the start of first row exposure
22756 and the start of last row exposure.<wbr/></p>
22757             </td>
22758
22759             <td class="entry_units">
22760               Nanoseconds
22761             </td>
22762
22763             <td class="entry_range">
22764               <p>&gt;= 0 and &lt;
22765 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
22766             </td>
22767
22768             <td class="entry_hal_version">
22769               <p>3.<wbr/>2</p>
22770             </td>
22771
22772             <td class="entry_tags">
22773               <ul class="entry_tags">
22774                   <li><a href="#tag_V1">V1</a></li>
22775               </ul>
22776             </td>
22777
22778           </tr>
22779           <tr class="entries_header">
22780             <th class="th_details" colspan="6">Details</th>
22781           </tr>
22782           <tr class="entry_cont">
22783             <td class="entry_details" colspan="6">
22784               <p>This is the exposure time skew between the first and last
22785 row exposure start times.<wbr/> The first row and the last row are
22786 the first and last rows inside of the
22787 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22788 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
22789 to the frame readout time.<wbr/></p>
22790             </td>
22791           </tr>
22792
22793           <tr class="entries_header">
22794             <th class="th_details" colspan="6">HAL Implementation Details</th>
22795           </tr>
22796           <tr class="entry_cont">
22797             <td class="entry_details" colspan="6">
22798               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
22799 exposure at the same time.<wbr/></p>
22800             </td>
22801           </tr>
22802
22803           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22804            <!-- end of entry -->
22805         
22806                 
22807           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
22808             <td class="entry_name
22809              " rowspan="5">
22810               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
22811             </td>
22812             <td class="entry_type">
22813                 <span class="entry_type_name">float</span>
22814                 <span class="entry_type_container">x</span>
22815
22816                 <span class="entry_type_array">
22817                   4
22818                 </span>
22819               <span class="entry_type_visibility"> [public]</span>
22820
22821
22822
22823
22824                 <div class="entry_type_notes">2x2 raw count block</div>
22825
22826
22827             </td> <!-- entry_type -->
22828
22829             <td class="entry_description">
22830               <p>A per-frame dynamic black level offset for each of the color filter
22831 arrangement (CFA) mosaic channels.<wbr/></p>
22832             </td>
22833
22834             <td class="entry_units">
22835             </td>
22836
22837             <td class="entry_range">
22838               <p>&gt;= 0 for each.<wbr/></p>
22839             </td>
22840
22841             <td class="entry_hal_version">
22842               <p>3.<wbr/>2</p>
22843             </td>
22844
22845             <td class="entry_tags">
22846               <ul class="entry_tags">
22847                   <li><a href="#tag_RAW">RAW</a></li>
22848               </ul>
22849             </td>
22850
22851           </tr>
22852           <tr class="entries_header">
22853             <th class="th_details" colspan="6">Details</th>
22854           </tr>
22855           <tr class="entry_cont">
22856             <td class="entry_details" colspan="6">
22857               <p>Camera sensor black levels may vary dramatically for different
22858 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
22859 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
22860 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
22861 camera device internal pipeline relies on reliable black level values
22862 to process the raw images appropriately.<wbr/> To get the best image
22863 quality,<wbr/> the camera device may choose to estimate the per frame black
22864 level values either based on optically shielded black regions
22865 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
22866 <p>This key reports the camera device estimated per-frame zero light
22867 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
22868 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
22869 approximation of the actual black level values.<wbr/> This value is the
22870 black level used in camera device internal image processing pipeline
22871 and generally more accurate than the fixed black level values.<wbr/>
22872 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
22873 may not be as accurate as the black level values calculated from the
22874 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
22875 <p>The values are given in the same order as channels listed for the CFA
22876 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
22877 nth value given corresponds to the black level offset for the nth
22878 color channel listed in the CFA.<wbr/></p>
22879 <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
22880 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
22881             </td>
22882           </tr>
22883
22884           <tr class="entries_header">
22885             <th class="th_details" colspan="6">HAL Implementation Details</th>
22886           </tr>
22887           <tr class="entry_cont">
22888             <td class="entry_details" colspan="6">
22889               <p>The values are given in row-column scan order,<wbr/> with the first value
22890 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
22891             </td>
22892           </tr>
22893
22894           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22895            <!-- end of entry -->
22896         
22897                 
22898           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
22899             <td class="entry_name
22900              " rowspan="5">
22901               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
22902             </td>
22903             <td class="entry_type">
22904                 <span class="entry_type_name">int32</span>
22905
22906               <span class="entry_type_visibility"> [public]</span>
22907
22908
22909
22910
22911
22912
22913             </td> <!-- entry_type -->
22914
22915             <td class="entry_description">
22916               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
22917             </td>
22918
22919             <td class="entry_units">
22920             </td>
22921
22922             <td class="entry_range">
22923               <p>&gt;= 0</p>
22924             </td>
22925
22926             <td class="entry_hal_version">
22927               <p>3.<wbr/>2</p>
22928             </td>
22929
22930             <td class="entry_tags">
22931               <ul class="entry_tags">
22932                   <li><a href="#tag_RAW">RAW</a></li>
22933               </ul>
22934             </td>
22935
22936           </tr>
22937           <tr class="entries_header">
22938             <th class="th_details" colspan="6">Details</th>
22939           </tr>
22940           <tr class="entry_cont">
22941             <td class="entry_details" colspan="6">
22942               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
22943 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
22944 level will change accordingly.<wbr/> This key is similar to
22945 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
22946 estimated white level for each frame.<wbr/></p>
22947 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
22948 available or the camera device advertises this key via
22949 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
22950             </td>
22951           </tr>
22952
22953           <tr class="entries_header">
22954             <th class="th_details" colspan="6">HAL Implementation Details</th>
22955           </tr>
22956           <tr class="entry_cont">
22957             <td class="entry_details" colspan="6">
22958               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
22959 so the value for linear sensors should not be significantly lower
22960 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
22961             </td>
22962           </tr>
22963
22964           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22965            <!-- end of entry -->
22966         
22967         
22968
22969       <!-- end of kind -->
22970       </tbody>
22971
22972   <!-- end of section -->
22973   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
22974
22975
22976       <tr><td colspan="7" class="kind">controls</td></tr>
22977
22978       <thead class="entries_header">
22979         <tr>
22980           <th class="th_name">Property Name</th>
22981           <th class="th_type">Type</th>
22982           <th class="th_description">Description</th>
22983           <th class="th_units">Units</th>
22984           <th class="th_range">Range</th>
22985           <th class="th_hal_version">Initial HIDL HAL version</th>
22986           <th class="th_tags">Tags</th>
22987         </tr>
22988       </thead>
22989
22990       <tbody>
22991
22992         
22993
22994         
22995
22996         
22997
22998         
22999
23000                 
23001           <tr class="entry" id="controls_android.shading.mode">
23002             <td class="entry_name
23003              " rowspan="3">
23004               android.<wbr/>shading.<wbr/>mode
23005             </td>
23006             <td class="entry_type">
23007                 <span class="entry_type_name entry_type_name_enum">byte</span>
23008
23009               <span class="entry_type_visibility"> [public]</span>
23010
23011
23012               <span class="entry_type_hwlevel">[full] </span>
23013
23014
23015
23016                 <ul class="entry_type_enum">
23017                   <li>
23018                     <span class="entry_type_enum_name">OFF</span>
23019                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23020                   </li>
23021                   <li>
23022                     <span class="entry_type_enum_name">FAST</span>
23023                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23024 frame rate relative to sensor raw output</p></span>
23025                   </li>
23026                   <li>
23027                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
23028                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23029 cost of possibly reduced frame rate.<wbr/></p></span>
23030                   </li>
23031                 </ul>
23032
23033             </td> <!-- entry_type -->
23034
23035             <td class="entry_description">
23036               <p>Quality of lens shading correction applied
23037 to the image data.<wbr/></p>
23038             </td>
23039
23040             <td class="entry_units">
23041             </td>
23042
23043             <td class="entry_range">
23044               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23045             </td>
23046
23047             <td class="entry_hal_version">
23048               <p>3.<wbr/>2</p>
23049             </td>
23050
23051             <td class="entry_tags">
23052             </td>
23053
23054           </tr>
23055           <tr class="entries_header">
23056             <th class="th_details" colspan="6">Details</th>
23057           </tr>
23058           <tr class="entry_cont">
23059             <td class="entry_details" colspan="6">
23060               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23061 camera device,<wbr/> and an identity lens shading map data will be provided
23062 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
23063 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23064 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
23065 map shown below:</p>
23066 <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/>
23067  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/>
23068  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/>
23069  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/>
23070  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/>
23071  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 ]
23072 </code></pre>
23073 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23074 device.<wbr/> Applications can request lens shading map data by setting
23075 <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
23076 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
23077 data will be the one applied by the camera device for this capture request.<wbr/></p>
23078 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23079 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23080 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>
23081 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23082 to be converged before using the returned shading map data.<wbr/></p>
23083             </td>
23084           </tr>
23085
23086
23087           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23088            <!-- end of entry -->
23089         
23090                 
23091           <tr class="entry" id="controls_android.shading.strength">
23092             <td class="entry_name
23093              " rowspan="1">
23094               android.<wbr/>shading.<wbr/>strength
23095             </td>
23096             <td class="entry_type">
23097                 <span class="entry_type_name">byte</span>
23098
23099               <span class="entry_type_visibility"> [system]</span>
23100
23101
23102
23103
23104
23105
23106             </td> <!-- entry_type -->
23107
23108             <td class="entry_description">
23109               <p>Control the amount of shading correction
23110 applied to the images</p>
23111             </td>
23112
23113             <td class="entry_units">
23114               unitless: 1-10; 10 is full shading
23115           compensation
23116             </td>
23117
23118             <td class="entry_range">
23119             </td>
23120
23121             <td class="entry_hal_version">
23122               <p>3.<wbr/>2</p>
23123             </td>
23124
23125             <td class="entry_tags">
23126               <ul class="entry_tags">
23127                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23128               </ul>
23129             </td>
23130
23131           </tr>
23132
23133
23134           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23135            <!-- end of entry -->
23136         
23137         
23138
23139       <!-- end of kind -->
23140       </tbody>
23141       <tr><td colspan="7" class="kind">dynamic</td></tr>
23142
23143       <thead class="entries_header">
23144         <tr>
23145           <th class="th_name">Property Name</th>
23146           <th class="th_type">Type</th>
23147           <th class="th_description">Description</th>
23148           <th class="th_units">Units</th>
23149           <th class="th_range">Range</th>
23150           <th class="th_hal_version">Initial HIDL HAL version</th>
23151           <th class="th_tags">Tags</th>
23152         </tr>
23153       </thead>
23154
23155       <tbody>
23156
23157         
23158
23159         
23160
23161         
23162
23163         
23164
23165                 
23166           <tr class="entry" id="dynamic_android.shading.mode">
23167             <td class="entry_name
23168              " rowspan="3">
23169               android.<wbr/>shading.<wbr/>mode
23170             </td>
23171             <td class="entry_type">
23172                 <span class="entry_type_name entry_type_name_enum">byte</span>
23173
23174               <span class="entry_type_visibility"> [public]</span>
23175
23176
23177               <span class="entry_type_hwlevel">[full] </span>
23178
23179
23180
23181                 <ul class="entry_type_enum">
23182                   <li>
23183                     <span class="entry_type_enum_name">OFF</span>
23184                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23185                   </li>
23186                   <li>
23187                     <span class="entry_type_enum_name">FAST</span>
23188                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23189 frame rate relative to sensor raw output</p></span>
23190                   </li>
23191                   <li>
23192                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
23193                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23194 cost of possibly reduced frame rate.<wbr/></p></span>
23195                   </li>
23196                 </ul>
23197
23198             </td> <!-- entry_type -->
23199
23200             <td class="entry_description">
23201               <p>Quality of lens shading correction applied
23202 to the image data.<wbr/></p>
23203             </td>
23204
23205             <td class="entry_units">
23206             </td>
23207
23208             <td class="entry_range">
23209               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23210             </td>
23211
23212             <td class="entry_hal_version">
23213               <p>3.<wbr/>2</p>
23214             </td>
23215
23216             <td class="entry_tags">
23217             </td>
23218
23219           </tr>
23220           <tr class="entries_header">
23221             <th class="th_details" colspan="6">Details</th>
23222           </tr>
23223           <tr class="entry_cont">
23224             <td class="entry_details" colspan="6">
23225               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23226 camera device,<wbr/> and an identity lens shading map data will be provided
23227 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
23228 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23229 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
23230 map shown below:</p>
23231 <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/>
23232  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/>
23233  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/>
23234  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/>
23235  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/>
23236  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 ]
23237 </code></pre>
23238 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23239 device.<wbr/> Applications can request lens shading map data by setting
23240 <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
23241 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
23242 data will be the one applied by the camera device for this capture request.<wbr/></p>
23243 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23244 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23245 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>
23246 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23247 to be converged before using the returned shading map data.<wbr/></p>
23248             </td>
23249           </tr>
23250
23251
23252           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23253            <!-- end of entry -->
23254         
23255         
23256
23257       <!-- end of kind -->
23258       </tbody>
23259       <tr><td colspan="7" class="kind">static</td></tr>
23260
23261       <thead class="entries_header">
23262         <tr>
23263           <th class="th_name">Property Name</th>
23264           <th class="th_type">Type</th>
23265           <th class="th_description">Description</th>
23266           <th class="th_units">Units</th>
23267           <th class="th_range">Range</th>
23268           <th class="th_hal_version">Initial HIDL HAL version</th>
23269           <th class="th_tags">Tags</th>
23270         </tr>
23271       </thead>
23272
23273       <tbody>
23274
23275         
23276
23277         
23278
23279         
23280
23281         
23282
23283                 
23284           <tr class="entry" id="static_android.shading.availableModes">
23285             <td class="entry_name
23286              " rowspan="5">
23287               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23288             </td>
23289             <td class="entry_type">
23290                 <span class="entry_type_name">byte</span>
23291                 <span class="entry_type_container">x</span>
23292
23293                 <span class="entry_type_array">
23294                   n
23295                 </span>
23296               <span class="entry_type_visibility"> [public as enumList]</span>
23297
23298
23299               <span class="entry_type_hwlevel">[legacy] </span>
23300
23301
23302                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23303
23304
23305             </td> <!-- entry_type -->
23306
23307             <td class="entry_description">
23308               <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>
23309             </td>
23310
23311             <td class="entry_units">
23312             </td>
23313
23314             <td class="entry_range">
23315               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23316             </td>
23317
23318             <td class="entry_hal_version">
23319               <p>3.<wbr/>2</p>
23320             </td>
23321
23322             <td class="entry_tags">
23323             </td>
23324
23325           </tr>
23326           <tr class="entries_header">
23327             <th class="th_details" colspan="6">Details</th>
23328           </tr>
23329           <tr class="entry_cont">
23330             <td class="entry_details" colspan="6">
23331               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23332 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23333 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23334 LEGACY devices will always only support FAST mode.<wbr/></p>
23335             </td>
23336           </tr>
23337
23338           <tr class="entries_header">
23339             <th class="th_details" colspan="6">HAL Implementation Details</th>
23340           </tr>
23341           <tr class="entry_cont">
23342             <td class="entry_details" colspan="6">
23343               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23344 available on the camera device,<wbr/> but the underlying implementation can be the same for
23345 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23346 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23347             </td>
23348           </tr>
23349
23350           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23351            <!-- end of entry -->
23352         
23353         
23354
23355       <!-- end of kind -->
23356       </tbody>
23357
23358   <!-- end of section -->
23359   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23360
23361
23362       <tr><td colspan="7" class="kind">controls</td></tr>
23363
23364       <thead class="entries_header">
23365         <tr>
23366           <th class="th_name">Property Name</th>
23367           <th class="th_type">Type</th>
23368           <th class="th_description">Description</th>
23369           <th class="th_units">Units</th>
23370           <th class="th_range">Range</th>
23371           <th class="th_hal_version">Initial HIDL HAL version</th>
23372           <th class="th_tags">Tags</th>
23373         </tr>
23374       </thead>
23375
23376       <tbody>
23377
23378         
23379
23380         
23381
23382         
23383
23384         
23385
23386                 
23387           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23388             <td class="entry_name
23389              " rowspan="5">
23390               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23391             </td>
23392             <td class="entry_type">
23393                 <span class="entry_type_name entry_type_name_enum">byte</span>
23394
23395               <span class="entry_type_visibility"> [public]</span>
23396
23397
23398               <span class="entry_type_hwlevel">[legacy] </span>
23399
23400
23401
23402                 <ul class="entry_type_enum">
23403                   <li>
23404                     <span class="entry_type_enum_name">OFF</span>
23405                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23406 results.<wbr/></p></span>
23407                   </li>
23408                   <li>
23409                     <span class="entry_type_enum_name">SIMPLE</span>
23410                     <span class="entry_type_enum_optional">[optional]</span>
23411                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23412                   </li>
23413                   <li>
23414                     <span class="entry_type_enum_name">FULL</span>
23415                     <span class="entry_type_enum_optional">[optional]</span>
23416                     <span class="entry_type_enum_notes"><p>Return all face
23417 metadata.<wbr/></p>
23418 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23419                   </li>
23420                 </ul>
23421
23422             </td> <!-- entry_type -->
23423
23424             <td class="entry_description">
23425               <p>Operating mode for the face detector
23426 unit.<wbr/></p>
23427             </td>
23428
23429             <td class="entry_units">
23430             </td>
23431
23432             <td class="entry_range">
23433               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23434             </td>
23435
23436             <td class="entry_hal_version">
23437               <p>3.<wbr/>2</p>
23438             </td>
23439
23440             <td class="entry_tags">
23441               <ul class="entry_tags">
23442                   <li><a href="#tag_BC">BC</a></li>
23443               </ul>
23444             </td>
23445
23446           </tr>
23447           <tr class="entries_header">
23448             <th class="th_details" colspan="6">Details</th>
23449           </tr>
23450           <tr class="entry_cont">
23451             <td class="entry_details" colspan="6">
23452               <p>Whether face detection is enabled,<wbr/> and whether it
23453 should output just the basic fields or the full set of
23454 fields.<wbr/></p>
23455             </td>
23456           </tr>
23457
23458           <tr class="entries_header">
23459             <th class="th_details" colspan="6">HAL Implementation Details</th>
23460           </tr>
23461           <tr class="entry_cont">
23462             <td class="entry_details" colspan="6">
23463               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23464 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23465 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23466 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23467             </td>
23468           </tr>
23469
23470           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23471            <!-- end of entry -->
23472         
23473                 
23474           <tr class="entry" id="controls_android.statistics.histogramMode">
23475             <td class="entry_name
23476              " rowspan="1">
23477               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23478             </td>
23479             <td class="entry_type">
23480                 <span class="entry_type_name entry_type_name_enum">byte</span>
23481
23482               <span class="entry_type_visibility"> [system as boolean]</span>
23483
23484
23485
23486
23487
23488                 <ul class="entry_type_enum">
23489                   <li>
23490                     <span class="entry_type_enum_name">OFF</span>
23491                   </li>
23492                   <li>
23493                     <span class="entry_type_enum_name">ON</span>
23494                   </li>
23495                 </ul>
23496
23497             </td> <!-- entry_type -->
23498
23499             <td class="entry_description">
23500               <p>Operating mode for histogram
23501 generation</p>
23502             </td>
23503
23504             <td class="entry_units">
23505             </td>
23506
23507             <td class="entry_range">
23508             </td>
23509
23510             <td class="entry_hal_version">
23511               <p>3.<wbr/>2</p>
23512             </td>
23513
23514             <td class="entry_tags">
23515               <ul class="entry_tags">
23516                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23517               </ul>
23518             </td>
23519
23520           </tr>
23521
23522
23523           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23524            <!-- end of entry -->
23525         
23526                 
23527           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23528             <td class="entry_name
23529              " rowspan="1">
23530               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23531             </td>
23532             <td class="entry_type">
23533                 <span class="entry_type_name entry_type_name_enum">byte</span>
23534
23535               <span class="entry_type_visibility"> [system as boolean]</span>
23536
23537
23538
23539
23540
23541                 <ul class="entry_type_enum">
23542                   <li>
23543                     <span class="entry_type_enum_name">OFF</span>
23544                   </li>
23545                   <li>
23546                     <span class="entry_type_enum_name">ON</span>
23547                   </li>
23548                 </ul>
23549
23550             </td> <!-- entry_type -->
23551
23552             <td class="entry_description">
23553               <p>Operating mode for sharpness map
23554 generation</p>
23555             </td>
23556
23557             <td class="entry_units">
23558             </td>
23559
23560             <td class="entry_range">
23561             </td>
23562
23563             <td class="entry_hal_version">
23564               <p>3.<wbr/>2</p>
23565             </td>
23566
23567             <td class="entry_tags">
23568               <ul class="entry_tags">
23569                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23570               </ul>
23571             </td>
23572
23573           </tr>
23574
23575
23576           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23577            <!-- end of entry -->
23578         
23579                 
23580           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23581             <td class="entry_name
23582              " rowspan="3">
23583               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23584             </td>
23585             <td class="entry_type">
23586                 <span class="entry_type_name entry_type_name_enum">byte</span>
23587
23588               <span class="entry_type_visibility"> [public as boolean]</span>
23589
23590
23591
23592
23593
23594                 <ul class="entry_type_enum">
23595                   <li>
23596                     <span class="entry_type_enum_name">OFF</span>
23597                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23598                   </li>
23599                   <li>
23600                     <span class="entry_type_enum_name">ON</span>
23601                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23602                   </li>
23603                 </ul>
23604
23605             </td> <!-- entry_type -->
23606
23607             <td class="entry_description">
23608               <p>Operating mode for hot pixel map generation.<wbr/></p>
23609             </td>
23610
23611             <td class="entry_units">
23612             </td>
23613
23614             <td class="entry_range">
23615               <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>
23616             </td>
23617
23618             <td class="entry_hal_version">
23619               <p>3.<wbr/>2</p>
23620             </td>
23621
23622             <td class="entry_tags">
23623               <ul class="entry_tags">
23624                   <li><a href="#tag_V1">V1</a></li>
23625                   <li><a href="#tag_RAW">RAW</a></li>
23626               </ul>
23627             </td>
23628
23629           </tr>
23630           <tr class="entries_header">
23631             <th class="th_details" colspan="6">Details</th>
23632           </tr>
23633           <tr class="entry_cont">
23634             <td class="entry_details" colspan="6">
23635               <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/>
23636 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23637             </td>
23638           </tr>
23639
23640
23641           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23642            <!-- end of entry -->
23643         
23644                 
23645           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23646             <td class="entry_name
23647              " rowspan="3">
23648               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23649             </td>
23650             <td class="entry_type">
23651                 <span class="entry_type_name entry_type_name_enum">byte</span>
23652
23653               <span class="entry_type_visibility"> [public]</span>
23654
23655
23656               <span class="entry_type_hwlevel">[full] </span>
23657
23658
23659
23660                 <ul class="entry_type_enum">
23661                   <li>
23662                     <span class="entry_type_enum_name">OFF</span>
23663                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23664                   </li>
23665                   <li>
23666                     <span class="entry_type_enum_name">ON</span>
23667                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23668                   </li>
23669                 </ul>
23670
23671             </td> <!-- entry_type -->
23672
23673             <td class="entry_description">
23674               <p>Whether the camera device will output the lens
23675 shading map in output result metadata.<wbr/></p>
23676             </td>
23677
23678             <td class="entry_units">
23679             </td>
23680
23681             <td class="entry_range">
23682               <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>
23683             </td>
23684
23685             <td class="entry_hal_version">
23686               <p>3.<wbr/>2</p>
23687             </td>
23688
23689             <td class="entry_tags">
23690               <ul class="entry_tags">
23691                   <li><a href="#tag_RAW">RAW</a></li>
23692               </ul>
23693             </td>
23694
23695           </tr>
23696           <tr class="entries_header">
23697             <th class="th_details" colspan="6">Details</th>
23698           </tr>
23699           <tr class="entry_cont">
23700             <td class="entry_details" colspan="6">
23701               <p>When set to ON,<wbr/>
23702 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23703 the output result metadata.<wbr/></p>
23704 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23705             </td>
23706           </tr>
23707
23708
23709           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23710            <!-- end of entry -->
23711         
23712         
23713
23714       <!-- end of kind -->
23715       </tbody>
23716       <tr><td colspan="7" class="kind">static</td></tr>
23717
23718       <thead class="entries_header">
23719         <tr>
23720           <th class="th_name">Property Name</th>
23721           <th class="th_type">Type</th>
23722           <th class="th_description">Description</th>
23723           <th class="th_units">Units</th>
23724           <th class="th_range">Range</th>
23725           <th class="th_hal_version">Initial HIDL HAL version</th>
23726           <th class="th_tags">Tags</th>
23727         </tr>
23728       </thead>
23729
23730       <tbody>
23731
23732         
23733
23734         
23735
23736         
23737
23738         
23739                 
23740             
23741
23742                 
23743           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
23744             <td class="entry_name
23745              " rowspan="3">
23746               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
23747             </td>
23748             <td class="entry_type">
23749                 <span class="entry_type_name">byte</span>
23750                 <span class="entry_type_container">x</span>
23751
23752                 <span class="entry_type_array">
23753                   n
23754                 </span>
23755               <span class="entry_type_visibility"> [public as enumList]</span>
23756
23757
23758               <span class="entry_type_hwlevel">[legacy] </span>
23759
23760
23761                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
23762
23763
23764             </td> <!-- entry_type -->
23765
23766             <td class="entry_description">
23767               <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
23768 supported by this camera device.<wbr/></p>
23769             </td>
23770
23771             <td class="entry_units">
23772             </td>
23773
23774             <td class="entry_range">
23775               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
23776             </td>
23777
23778             <td class="entry_hal_version">
23779               <p>3.<wbr/>2</p>
23780             </td>
23781
23782             <td class="entry_tags">
23783             </td>
23784
23785           </tr>
23786           <tr class="entries_header">
23787             <th class="th_details" colspan="6">Details</th>
23788           </tr>
23789           <tr class="entry_cont">
23790             <td class="entry_details" colspan="6">
23791               <p>OFF is always supported.<wbr/></p>
23792             </td>
23793           </tr>
23794
23795
23796           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23797            <!-- end of entry -->
23798         
23799                 
23800           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
23801             <td class="entry_name
23802              " rowspan="1">
23803               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
23804             </td>
23805             <td class="entry_type">
23806                 <span class="entry_type_name">int32</span>
23807
23808               <span class="entry_type_visibility"> [system]</span>
23809
23810
23811
23812
23813
23814
23815             </td> <!-- entry_type -->
23816
23817             <td class="entry_description">
23818               <p>Number of histogram buckets
23819 supported</p>
23820             </td>
23821
23822             <td class="entry_units">
23823             </td>
23824
23825             <td class="entry_range">
23826               <p>&gt;= 64</p>
23827             </td>
23828
23829             <td class="entry_hal_version">
23830               <p>3.<wbr/>2</p>
23831             </td>
23832
23833             <td class="entry_tags">
23834               <ul class="entry_tags">
23835                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23836               </ul>
23837             </td>
23838
23839           </tr>
23840
23841
23842           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23843            <!-- end of entry -->
23844         
23845                 
23846           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
23847             <td class="entry_name
23848              " rowspan="1">
23849               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
23850             </td>
23851             <td class="entry_type">
23852                 <span class="entry_type_name">int32</span>
23853
23854               <span class="entry_type_visibility"> [public]</span>
23855
23856
23857               <span class="entry_type_hwlevel">[legacy] </span>
23858
23859
23860
23861
23862             </td> <!-- entry_type -->
23863
23864             <td class="entry_description">
23865               <p>The maximum number of simultaneously detectable
23866 faces.<wbr/></p>
23867             </td>
23868
23869             <td class="entry_units">
23870             </td>
23871
23872             <td class="entry_range">
23873               <p>0 for cameras without available face detection; otherwise:
23874 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
23875 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
23876             </td>
23877
23878             <td class="entry_hal_version">
23879               <p>3.<wbr/>2</p>
23880             </td>
23881
23882             <td class="entry_tags">
23883               <ul class="entry_tags">
23884                   <li><a href="#tag_BC">BC</a></li>
23885               </ul>
23886             </td>
23887
23888           </tr>
23889
23890
23891           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23892            <!-- end of entry -->
23893         
23894                 
23895           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
23896             <td class="entry_name
23897              " rowspan="1">
23898               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
23899             </td>
23900             <td class="entry_type">
23901                 <span class="entry_type_name">int32</span>
23902
23903               <span class="entry_type_visibility"> [system]</span>
23904
23905
23906
23907
23908
23909
23910             </td> <!-- entry_type -->
23911
23912             <td class="entry_description">
23913               <p>Maximum value possible for a histogram
23914 bucket</p>
23915             </td>
23916
23917             <td class="entry_units">
23918             </td>
23919
23920             <td class="entry_range">
23921             </td>
23922
23923             <td class="entry_hal_version">
23924               <p>3.<wbr/>2</p>
23925             </td>
23926
23927             <td class="entry_tags">
23928               <ul class="entry_tags">
23929                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23930               </ul>
23931             </td>
23932
23933           </tr>
23934
23935
23936           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23937            <!-- end of entry -->
23938         
23939                 
23940           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
23941             <td class="entry_name
23942              " rowspan="1">
23943               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
23944             </td>
23945             <td class="entry_type">
23946                 <span class="entry_type_name">int32</span>
23947
23948               <span class="entry_type_visibility"> [system]</span>
23949
23950
23951
23952
23953
23954
23955             </td> <!-- entry_type -->
23956
23957             <td class="entry_description">
23958               <p>Maximum value possible for a sharpness map
23959 region.<wbr/></p>
23960             </td>
23961
23962             <td class="entry_units">
23963             </td>
23964
23965             <td class="entry_range">
23966             </td>
23967
23968             <td class="entry_hal_version">
23969               <p>3.<wbr/>2</p>
23970             </td>
23971
23972             <td class="entry_tags">
23973               <ul class="entry_tags">
23974                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23975               </ul>
23976             </td>
23977
23978           </tr>
23979
23980
23981           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23982            <!-- end of entry -->
23983         
23984                 
23985           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
23986             <td class="entry_name
23987              " rowspan="1">
23988               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
23989             </td>
23990             <td class="entry_type">
23991                 <span class="entry_type_name">int32</span>
23992                 <span class="entry_type_container">x</span>
23993
23994                 <span class="entry_type_array">
23995                   2
23996                 </span>
23997               <span class="entry_type_visibility"> [system as size]</span>
23998
23999
24000
24001
24002                 <div class="entry_type_notes">width x height</div>
24003
24004
24005             </td> <!-- entry_type -->
24006
24007             <td class="entry_description">
24008               <p>Dimensions of the sharpness
24009 map</p>
24010             </td>
24011
24012             <td class="entry_units">
24013             </td>
24014
24015             <td class="entry_range">
24016               <p>Must be at least 32 x 32</p>
24017             </td>
24018
24019             <td class="entry_hal_version">
24020               <p>3.<wbr/>2</p>
24021             </td>
24022
24023             <td class="entry_tags">
24024               <ul class="entry_tags">
24025                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24026               </ul>
24027             </td>
24028
24029           </tr>
24030
24031
24032           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24033            <!-- end of entry -->
24034         
24035                 
24036           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24037             <td class="entry_name
24038              " rowspan="3">
24039               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24040             </td>
24041             <td class="entry_type">
24042                 <span class="entry_type_name">byte</span>
24043                 <span class="entry_type_container">x</span>
24044
24045                 <span class="entry_type_array">
24046                   n
24047                 </span>
24048               <span class="entry_type_visibility"> [public as boolean]</span>
24049
24050
24051
24052
24053                 <div class="entry_type_notes">list of enums</div>
24054
24055
24056             </td> <!-- entry_type -->
24057
24058             <td class="entry_description">
24059               <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
24060 supported by this camera device.<wbr/></p>
24061             </td>
24062
24063             <td class="entry_units">
24064             </td>
24065
24066             <td class="entry_range">
24067               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24068             </td>
24069
24070             <td class="entry_hal_version">
24071               <p>3.<wbr/>2</p>
24072             </td>
24073
24074             <td class="entry_tags">
24075               <ul class="entry_tags">
24076                   <li><a href="#tag_V1">V1</a></li>
24077                   <li><a href="#tag_RAW">RAW</a></li>
24078               </ul>
24079             </td>
24080
24081           </tr>
24082           <tr class="entries_header">
24083             <th class="th_details" colspan="6">Details</th>
24084           </tr>
24085           <tr class="entry_cont">
24086             <td class="entry_details" colspan="6">
24087               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24088 <code>false</code>.<wbr/></p>
24089 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24090             </td>
24091           </tr>
24092
24093
24094           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24095            <!-- end of entry -->
24096         
24097                 
24098           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24099             <td class="entry_name
24100              " rowspan="3">
24101               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24102             </td>
24103             <td class="entry_type">
24104                 <span class="entry_type_name">byte</span>
24105                 <span class="entry_type_container">x</span>
24106
24107                 <span class="entry_type_array">
24108                   n
24109                 </span>
24110               <span class="entry_type_visibility"> [public as enumList]</span>
24111
24112
24113
24114
24115                 <div class="entry_type_notes">list of enums</div>
24116
24117
24118             </td> <!-- entry_type -->
24119
24120             <td class="entry_description">
24121               <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
24122 are supported by this camera device.<wbr/></p>
24123             </td>
24124
24125             <td class="entry_units">
24126             </td>
24127
24128             <td class="entry_range">
24129               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24130             </td>
24131
24132             <td class="entry_hal_version">
24133               <p>3.<wbr/>2</p>
24134             </td>
24135
24136             <td class="entry_tags">
24137             </td>
24138
24139           </tr>
24140           <tr class="entries_header">
24141             <th class="th_details" colspan="6">Details</th>
24142           </tr>
24143           <tr class="entry_cont">
24144             <td class="entry_details" colspan="6">
24145               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24146 contain only OFF.<wbr/></p>
24147 <p>ON is always supported on devices with the RAW capability.<wbr/>
24148 LEGACY mode devices will always only support OFF.<wbr/></p>
24149             </td>
24150           </tr>
24151
24152
24153           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24154            <!-- end of entry -->
24155         
24156         
24157         
24158
24159         
24160
24161       <!-- end of kind -->
24162       </tbody>
24163       <tr><td colspan="7" class="kind">dynamic</td></tr>
24164
24165       <thead class="entries_header">
24166         <tr>
24167           <th class="th_name">Property Name</th>
24168           <th class="th_type">Type</th>
24169           <th class="th_description">Description</th>
24170           <th class="th_units">Units</th>
24171           <th class="th_range">Range</th>
24172           <th class="th_hal_version">Initial HIDL HAL version</th>
24173           <th class="th_tags">Tags</th>
24174         </tr>
24175       </thead>
24176
24177       <tbody>
24178
24179         
24180
24181         
24182
24183         
24184
24185         
24186
24187                 
24188           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24189             <td class="entry_name
24190              " rowspan="5">
24191               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24192             </td>
24193             <td class="entry_type">
24194                 <span class="entry_type_name entry_type_name_enum">byte</span>
24195
24196               <span class="entry_type_visibility"> [public]</span>
24197
24198
24199               <span class="entry_type_hwlevel">[legacy] </span>
24200
24201
24202
24203                 <ul class="entry_type_enum">
24204                   <li>
24205                     <span class="entry_type_enum_name">OFF</span>
24206                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24207 results.<wbr/></p></span>
24208                   </li>
24209                   <li>
24210                     <span class="entry_type_enum_name">SIMPLE</span>
24211                     <span class="entry_type_enum_optional">[optional]</span>
24212                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24213                   </li>
24214                   <li>
24215                     <span class="entry_type_enum_name">FULL</span>
24216                     <span class="entry_type_enum_optional">[optional]</span>
24217                     <span class="entry_type_enum_notes"><p>Return all face
24218 metadata.<wbr/></p>
24219 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24220                   </li>
24221                 </ul>
24222
24223             </td> <!-- entry_type -->
24224
24225             <td class="entry_description">
24226               <p>Operating mode for the face detector
24227 unit.<wbr/></p>
24228             </td>
24229
24230             <td class="entry_units">
24231             </td>
24232
24233             <td class="entry_range">
24234               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24235             </td>
24236
24237             <td class="entry_hal_version">
24238               <p>3.<wbr/>2</p>
24239             </td>
24240
24241             <td class="entry_tags">
24242               <ul class="entry_tags">
24243                   <li><a href="#tag_BC">BC</a></li>
24244               </ul>
24245             </td>
24246
24247           </tr>
24248           <tr class="entries_header">
24249             <th class="th_details" colspan="6">Details</th>
24250           </tr>
24251           <tr class="entry_cont">
24252             <td class="entry_details" colspan="6">
24253               <p>Whether face detection is enabled,<wbr/> and whether it
24254 should output just the basic fields or the full set of
24255 fields.<wbr/></p>
24256             </td>
24257           </tr>
24258
24259           <tr class="entries_header">
24260             <th class="th_details" colspan="6">HAL Implementation Details</th>
24261           </tr>
24262           <tr class="entry_cont">
24263             <td class="entry_details" colspan="6">
24264               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24265 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24266 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24267 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24268             </td>
24269           </tr>
24270
24271           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24272            <!-- end of entry -->
24273         
24274                 
24275           <tr class="entry" id="dynamic_android.statistics.faceIds">
24276             <td class="entry_name
24277              " rowspan="3">
24278               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24279             </td>
24280             <td class="entry_type">
24281                 <span class="entry_type_name">int32</span>
24282                 <span class="entry_type_container">x</span>
24283
24284                 <span class="entry_type_array">
24285                   n
24286                 </span>
24287               <span class="entry_type_visibility"> [ndk_public]</span>
24288
24289
24290               <span class="entry_type_hwlevel">[legacy] </span>
24291
24292
24293
24294
24295             </td> <!-- entry_type -->
24296
24297             <td class="entry_description">
24298               <p>List of unique IDs for detected faces.<wbr/></p>
24299             </td>
24300
24301             <td class="entry_units">
24302             </td>
24303
24304             <td class="entry_range">
24305             </td>
24306
24307             <td class="entry_hal_version">
24308               <p>3.<wbr/>2</p>
24309             </td>
24310
24311             <td class="entry_tags">
24312               <ul class="entry_tags">
24313                   <li><a href="#tag_BC">BC</a></li>
24314               </ul>
24315             </td>
24316
24317           </tr>
24318           <tr class="entries_header">
24319             <th class="th_details" colspan="6">Details</th>
24320           </tr>
24321           <tr class="entry_cont">
24322             <td class="entry_details" colspan="6">
24323               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24324 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
24325 assigned a new ID.<wbr/></p>
24326 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24327             </td>
24328           </tr>
24329
24330
24331           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24332            <!-- end of entry -->
24333         
24334                 
24335           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24336             <td class="entry_name
24337              " rowspan="3">
24338               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24339             </td>
24340             <td class="entry_type">
24341                 <span class="entry_type_name">int32</span>
24342                 <span class="entry_type_container">x</span>
24343
24344                 <span class="entry_type_array">
24345                   n x 6
24346                 </span>
24347               <span class="entry_type_visibility"> [ndk_public]</span>
24348
24349
24350               <span class="entry_type_hwlevel">[legacy] </span>
24351
24352
24353                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24354
24355
24356             </td> <!-- entry_type -->
24357
24358             <td class="entry_description">
24359               <p>List of landmarks for detected
24360 faces.<wbr/></p>
24361             </td>
24362
24363             <td class="entry_units">
24364             </td>
24365
24366             <td class="entry_range">
24367             </td>
24368
24369             <td class="entry_hal_version">
24370               <p>3.<wbr/>2</p>
24371             </td>
24372
24373             <td class="entry_tags">
24374               <ul class="entry_tags">
24375                   <li><a href="#tag_BC">BC</a></li>
24376               </ul>
24377             </td>
24378
24379           </tr>
24380           <tr class="entries_header">
24381             <th class="th_details" colspan="6">Details</th>
24382           </tr>
24383           <tr class="entry_cont">
24384             <td class="entry_details" colspan="6">
24385               <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
24386 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24387 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24388             </td>
24389           </tr>
24390
24391
24392           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24393            <!-- end of entry -->
24394         
24395                 
24396           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24397             <td class="entry_name
24398              " rowspan="3">
24399               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24400             </td>
24401             <td class="entry_type">
24402                 <span class="entry_type_name">int32</span>
24403                 <span class="entry_type_container">x</span>
24404
24405                 <span class="entry_type_array">
24406                   n x 4
24407                 </span>
24408               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24409
24410
24411               <span class="entry_type_hwlevel">[legacy] </span>
24412
24413
24414                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24415
24416
24417             </td> <!-- entry_type -->
24418
24419             <td class="entry_description">
24420               <p>List of the bounding rectangles for detected
24421 faces.<wbr/></p>
24422             </td>
24423
24424             <td class="entry_units">
24425             </td>
24426
24427             <td class="entry_range">
24428             </td>
24429
24430             <td class="entry_hal_version">
24431               <p>3.<wbr/>2</p>
24432             </td>
24433
24434             <td class="entry_tags">
24435               <ul class="entry_tags">
24436                   <li><a href="#tag_BC">BC</a></li>
24437               </ul>
24438             </td>
24439
24440           </tr>
24441           <tr class="entries_header">
24442             <th class="th_details" colspan="6">Details</th>
24443           </tr>
24444           <tr class="entry_cont">
24445             <td class="entry_details" colspan="6">
24446               <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
24447 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24448 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24449             </td>
24450           </tr>
24451
24452
24453           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24454            <!-- end of entry -->
24455         
24456                 
24457           <tr class="entry" id="dynamic_android.statistics.faceScores">
24458             <td class="entry_name
24459              " rowspan="5">
24460               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24461             </td>
24462             <td class="entry_type">
24463                 <span class="entry_type_name">byte</span>
24464                 <span class="entry_type_container">x</span>
24465
24466                 <span class="entry_type_array">
24467                   n
24468                 </span>
24469               <span class="entry_type_visibility"> [ndk_public]</span>
24470
24471
24472               <span class="entry_type_hwlevel">[legacy] </span>
24473
24474
24475
24476
24477             </td> <!-- entry_type -->
24478
24479             <td class="entry_description">
24480               <p>List of the face confidence scores for
24481 detected faces</p>
24482             </td>
24483
24484             <td class="entry_units">
24485             </td>
24486
24487             <td class="entry_range">
24488               <p>1-100</p>
24489             </td>
24490
24491             <td class="entry_hal_version">
24492               <p>3.<wbr/>2</p>
24493             </td>
24494
24495             <td class="entry_tags">
24496               <ul class="entry_tags">
24497                   <li><a href="#tag_BC">BC</a></li>
24498               </ul>
24499             </td>
24500
24501           </tr>
24502           <tr class="entries_header">
24503             <th class="th_details" colspan="6">Details</th>
24504           </tr>
24505           <tr class="entry_cont">
24506             <td class="entry_details" colspan="6">
24507               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24508             </td>
24509           </tr>
24510
24511           <tr class="entries_header">
24512             <th class="th_details" colspan="6">HAL Implementation Details</th>
24513           </tr>
24514           <tr class="entry_cont">
24515             <td class="entry_details" colspan="6">
24516               <p>The value should be meaningful (for example,<wbr/> setting 100 at
24517 all times is illegal).<wbr/></p>
24518             </td>
24519           </tr>
24520
24521           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24522            <!-- end of entry -->
24523         
24524                 
24525           <tr class="entry" id="dynamic_android.statistics.faces">
24526             <td class="entry_name
24527              " rowspan="3">
24528               android.<wbr/>statistics.<wbr/>faces
24529             </td>
24530             <td class="entry_type">
24531                 <span class="entry_type_name">int32</span>
24532                 <span class="entry_type_container">x</span>
24533
24534                 <span class="entry_type_array">
24535                   n
24536                 </span>
24537               <span class="entry_type_visibility"> [java_public as face]</span>
24538
24539               <span class="entry_type_synthetic">[synthetic] </span>
24540
24541               <span class="entry_type_hwlevel">[legacy] </span>
24542
24543
24544
24545
24546             </td> <!-- entry_type -->
24547
24548             <td class="entry_description">
24549               <p>List of the faces detected through camera face detection
24550 in this capture.<wbr/></p>
24551             </td>
24552
24553             <td class="entry_units">
24554             </td>
24555
24556             <td class="entry_range">
24557             </td>
24558
24559             <td class="entry_hal_version">
24560               <p>3.<wbr/>2</p>
24561             </td>
24562
24563             <td class="entry_tags">
24564             </td>
24565
24566           </tr>
24567           <tr class="entries_header">
24568             <th class="th_details" colspan="6">Details</th>
24569           </tr>
24570           <tr class="entry_cont">
24571             <td class="entry_details" colspan="6">
24572               <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>
24573             </td>
24574           </tr>
24575
24576
24577           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24578            <!-- end of entry -->
24579         
24580                 
24581           <tr class="entry" id="dynamic_android.statistics.histogram">
24582             <td class="entry_name
24583              " rowspan="3">
24584               android.<wbr/>statistics.<wbr/>histogram
24585             </td>
24586             <td class="entry_type">
24587                 <span class="entry_type_name">int32</span>
24588                 <span class="entry_type_container">x</span>
24589
24590                 <span class="entry_type_array">
24591                   n x 3
24592                 </span>
24593               <span class="entry_type_visibility"> [system]</span>
24594
24595
24596
24597
24598                 <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>
24599
24600
24601             </td> <!-- entry_type -->
24602
24603             <td class="entry_description">
24604               <p>A 3-channel histogram based on the raw
24605 sensor data</p>
24606             </td>
24607
24608             <td class="entry_units">
24609             </td>
24610
24611             <td class="entry_range">
24612             </td>
24613
24614             <td class="entry_hal_version">
24615               <p>3.<wbr/>2</p>
24616             </td>
24617
24618             <td class="entry_tags">
24619               <ul class="entry_tags">
24620                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24621               </ul>
24622             </td>
24623
24624           </tr>
24625           <tr class="entries_header">
24626             <th class="th_details" colspan="6">Details</th>
24627           </tr>
24628           <tr class="entry_cont">
24629             <td class="entry_details" colspan="6">
24630               <p>The k'th bucket (0-based) covers the input range
24631 (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/>
24632 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
24633 supported,<wbr/> all channels should have the same data</p>
24634             </td>
24635           </tr>
24636
24637
24638           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24639            <!-- end of entry -->
24640         
24641                 
24642           <tr class="entry" id="dynamic_android.statistics.histogramMode">
24643             <td class="entry_name
24644              " rowspan="1">
24645               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24646             </td>
24647             <td class="entry_type">
24648                 <span class="entry_type_name entry_type_name_enum">byte</span>
24649
24650               <span class="entry_type_visibility"> [system as boolean]</span>
24651
24652
24653
24654
24655
24656                 <ul class="entry_type_enum">
24657                   <li>
24658                     <span class="entry_type_enum_name">OFF</span>
24659                   </li>
24660                   <li>
24661                     <span class="entry_type_enum_name">ON</span>
24662                   </li>
24663                 </ul>
24664
24665             </td> <!-- entry_type -->
24666
24667             <td class="entry_description">
24668               <p>Operating mode for histogram
24669 generation</p>
24670             </td>
24671
24672             <td class="entry_units">
24673             </td>
24674
24675             <td class="entry_range">
24676             </td>
24677
24678             <td class="entry_hal_version">
24679               <p>3.<wbr/>2</p>
24680             </td>
24681
24682             <td class="entry_tags">
24683               <ul class="entry_tags">
24684                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24685               </ul>
24686             </td>
24687
24688           </tr>
24689
24690
24691           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24692            <!-- end of entry -->
24693         
24694                 
24695           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
24696             <td class="entry_name
24697              " rowspan="3">
24698               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
24699             </td>
24700             <td class="entry_type">
24701                 <span class="entry_type_name">int32</span>
24702                 <span class="entry_type_container">x</span>
24703
24704                 <span class="entry_type_array">
24705                   n x m x 3
24706                 </span>
24707               <span class="entry_type_visibility"> [system]</span>
24708
24709
24710
24711
24712                 <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>
24713
24714
24715             </td> <!-- entry_type -->
24716
24717             <td class="entry_description">
24718               <p>A 3-channel sharpness map,<wbr/> based on the raw
24719 sensor data</p>
24720             </td>
24721
24722             <td class="entry_units">
24723             </td>
24724
24725             <td class="entry_range">
24726             </td>
24727
24728             <td class="entry_hal_version">
24729               <p>3.<wbr/>2</p>
24730             </td>
24731
24732             <td class="entry_tags">
24733               <ul class="entry_tags">
24734                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24735               </ul>
24736             </td>
24737
24738           </tr>
24739           <tr class="entries_header">
24740             <th class="th_details" colspan="6">Details</th>
24741           </tr>
24742           <tr class="entry_cont">
24743             <td class="entry_details" colspan="6">
24744               <p>If only a monochrome sharpness map is supported,<wbr/>
24745 all channels should have the same data</p>
24746             </td>
24747           </tr>
24748
24749
24750           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24751            <!-- end of entry -->
24752         
24753                 
24754           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
24755             <td class="entry_name
24756              " rowspan="1">
24757               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24758             </td>
24759             <td class="entry_type">
24760                 <span class="entry_type_name entry_type_name_enum">byte</span>
24761
24762               <span class="entry_type_visibility"> [system as boolean]</span>
24763
24764
24765
24766
24767
24768                 <ul class="entry_type_enum">
24769                   <li>
24770                     <span class="entry_type_enum_name">OFF</span>
24771                   </li>
24772                   <li>
24773                     <span class="entry_type_enum_name">ON</span>
24774                   </li>
24775                 </ul>
24776
24777             </td> <!-- entry_type -->
24778
24779             <td class="entry_description">
24780               <p>Operating mode for sharpness map
24781 generation</p>
24782             </td>
24783
24784             <td class="entry_units">
24785             </td>
24786
24787             <td class="entry_range">
24788             </td>
24789
24790             <td class="entry_hal_version">
24791               <p>3.<wbr/>2</p>
24792             </td>
24793
24794             <td class="entry_tags">
24795               <ul class="entry_tags">
24796                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24797               </ul>
24798             </td>
24799
24800           </tr>
24801
24802
24803           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24804            <!-- end of entry -->
24805         
24806                 
24807           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
24808             <td class="entry_name
24809              " rowspan="3">
24810               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
24811             </td>
24812             <td class="entry_type">
24813                 <span class="entry_type_name">byte</span>
24814
24815               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
24816
24817
24818               <span class="entry_type_hwlevel">[full] </span>
24819
24820
24821
24822
24823             </td> <!-- entry_type -->
24824
24825             <td class="entry_description">
24826               <p>The shading map is a low-resolution floating-point map
24827 that lists the coefficients used to correct for vignetting,<wbr/> for each
24828 Bayer color channel.<wbr/></p>
24829             </td>
24830
24831             <td class="entry_units">
24832             </td>
24833
24834             <td class="entry_range">
24835               <p>Each gain factor is &gt;= 1</p>
24836             </td>
24837
24838             <td class="entry_hal_version">
24839               <p>3.<wbr/>2</p>
24840             </td>
24841
24842             <td class="entry_tags">
24843             </td>
24844
24845           </tr>
24846           <tr class="entries_header">
24847             <th class="th_details" colspan="6">Details</th>
24848           </tr>
24849           <tr class="entry_cont">
24850             <td class="entry_details" colspan="6">
24851               <p>The map provided here is the same map that is used by the camera device to
24852 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24853 <p>When there is no lens shading correction applied to RAW
24854 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24855 false),<wbr/> this map is the complete lens shading correction
24856 map; when there is some lens shading correction applied to
24857 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
24858 correction map that needs to be applied to get shading
24859 corrected images that match the camera device's output for
24860 non-RAW formats.<wbr/></p>
24861 <p>For a complete shading correction map,<wbr/> the least shaded
24862 section of the image will have a gain factor of 1; all
24863 other sections will have gains above 1.<wbr/></p>
24864 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24865 will take into account the colorCorrection settings.<wbr/></p>
24866 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24867 affected by the crop region specified in the request.<wbr/> Each shading map
24868 entry is the value of the shading compensation map over a specific
24869 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
24870 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24871 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24872 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24873 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24874 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24875 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24876 The shading map is stored in a fully interleaved format.<wbr/></p>
24877 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24878 and will be smaller than 64x64.<wbr/></p>
24879 <p>As an example,<wbr/> given a very small map defined as:</p>
24880 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
24881 values =
24882 [ 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/>
24883     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/>
24884   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/>
24885     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/>
24886   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/>
24887     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 ]
24888 </code></pre>
24889 <p>The low-resolution scaling map images for each channel are
24890 (displayed using nearest-neighbor interpolation):</p>
24891 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
24892 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
24893 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
24894 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
24895 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
24896 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
24897 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
24898             </td>
24899           </tr>
24900
24901
24902           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24903            <!-- end of entry -->
24904         
24905                 
24906           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
24907             <td class="entry_name
24908              " rowspan="5">
24909               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
24910             </td>
24911             <td class="entry_type">
24912                 <span class="entry_type_name">float</span>
24913                 <span class="entry_type_container">x</span>
24914
24915                 <span class="entry_type_array">
24916                   4 x n x m
24917                 </span>
24918               <span class="entry_type_visibility"> [ndk_public]</span>
24919
24920
24921               <span class="entry_type_hwlevel">[full] </span>
24922
24923
24924                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
24925
24926
24927             </td> <!-- entry_type -->
24928
24929             <td class="entry_description">
24930               <p>The shading map is a low-resolution floating-point map
24931 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
24932 for each Bayer color channel of RAW image data.<wbr/></p>
24933             </td>
24934
24935             <td class="entry_units">
24936             </td>
24937
24938             <td class="entry_range">
24939               <p>Each gain factor is &gt;= 1</p>
24940             </td>
24941
24942             <td class="entry_hal_version">
24943               <p>3.<wbr/>2</p>
24944             </td>
24945
24946             <td class="entry_tags">
24947             </td>
24948
24949           </tr>
24950           <tr class="entries_header">
24951             <th class="th_details" colspan="6">Details</th>
24952           </tr>
24953           <tr class="entry_cont">
24954             <td class="entry_details" colspan="6">
24955               <p>The map provided here is the same map that is used by the camera device to
24956 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24957 <p>When there is no lens shading correction applied to RAW
24958 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24959 false),<wbr/> this map is the complete lens shading correction
24960 map; when there is some lens shading correction applied to
24961 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
24962 correction map that needs to be applied to get shading
24963 corrected images that match the camera device's output for
24964 non-RAW formats.<wbr/></p>
24965 <p>For a complete shading correction map,<wbr/> the least shaded
24966 section of the image will have a gain factor of 1; all
24967 other sections will have gains above 1.<wbr/></p>
24968 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24969 will take into account the colorCorrection settings.<wbr/></p>
24970 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24971 affected by the crop region specified in the request.<wbr/> Each shading map
24972 entry is the value of the shading compensation map over a specific
24973 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
24974 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24975 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24976 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24977 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24978 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24979 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24980 The shading map is stored in a fully interleaved format,<wbr/> and its size
24981 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>
24982 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24983 and will be smaller than 64x64.<wbr/></p>
24984 <p>As an example,<wbr/> given a very small map defined as:</p>
24985 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
24986 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
24987 [ 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/>
24988     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/>
24989   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/>
24990     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/>
24991   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/>
24992     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 ]
24993 </code></pre>
24994 <p>The low-resolution scaling map images for each channel are
24995 (displayed using nearest-neighbor interpolation):</p>
24996 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
24997 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
24998 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
24999 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25000 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25001 image of a gray wall (using bicubic interpolation for visual quality)
25002 as captured by the sensor gives:</p>
25003 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25004 <p>Note that the RAW image data might be subject to lens shading
25005 correction not reported on this map.<wbr/> Query
25006 <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
25007 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>
25008 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25009 correction.<wbr/> In the case full lens shading correction is applied to RAW
25010 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25011 In other words,<wbr/> the map reported in this key is the remaining lens shading
25012 that needs to be applied on the RAW image to get images without lens shading
25013 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
25014 formats.<wbr/></p>
25015             </td>
25016           </tr>
25017
25018           <tr class="entries_header">
25019             <th class="th_details" colspan="6">HAL Implementation Details</th>
25020           </tr>
25021           <tr class="entry_cont">
25022             <td class="entry_details" colspan="6">
25023               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25024 When AE and AWB are in AUTO modes
25025 (<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
25026 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25027 AE or AWB are in manual mode
25028 (<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
25029 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25030 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25031 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25032             </td>
25033           </tr>
25034
25035           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25036            <!-- end of entry -->
25037         
25038                 
25039           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25040             <td class="entry_name
25041                 entry_name_deprecated
25042              " rowspan="3">
25043               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25044             </td>
25045             <td class="entry_type">
25046                 <span class="entry_type_name">float</span>
25047                 <span class="entry_type_container">x</span>
25048
25049                 <span class="entry_type_array">
25050                   4
25051                 </span>
25052               <span class="entry_type_visibility"> [hidden]</span>
25053
25054
25055
25056               <span class="entry_type_deprecated">[deprecated] </span>
25057
25058                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25059
25060
25061             </td> <!-- entry_type -->
25062
25063             <td class="entry_description">
25064               <p>The best-fit color channel gains calculated
25065 by the camera device's statistics units for the current output frame.<wbr/></p>
25066             </td>
25067
25068             <td class="entry_units">
25069             </td>
25070
25071             <td class="entry_range">
25072               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25073             </td>
25074
25075             <td class="entry_hal_version">
25076               <p>3.<wbr/>2</p>
25077             </td>
25078
25079             <td class="entry_tags">
25080             </td>
25081
25082           </tr>
25083           <tr class="entries_header">
25084             <th class="th_details" colspan="6">Details</th>
25085           </tr>
25086           <tr class="entry_cont">
25087             <td class="entry_details" colspan="6">
25088               <p>This may be different than the gains used for this frame,<wbr/>
25089 since statistics processing on data from a new frame
25090 typically completes after the transform has already been
25091 applied to that frame.<wbr/></p>
25092 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25093 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25094 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25095 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25096             </td>
25097           </tr>
25098
25099
25100           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25101            <!-- end of entry -->
25102         
25103                 
25104           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25105             <td class="entry_name
25106                 entry_name_deprecated
25107              " rowspan="3">
25108               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25109             </td>
25110             <td class="entry_type">
25111                 <span class="entry_type_name">rational</span>
25112                 <span class="entry_type_container">x</span>
25113
25114                 <span class="entry_type_array">
25115                   3 x 3
25116                 </span>
25117               <span class="entry_type_visibility"> [hidden]</span>
25118
25119
25120
25121               <span class="entry_type_deprecated">[deprecated] </span>
25122
25123                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25124
25125
25126             </td> <!-- entry_type -->
25127
25128             <td class="entry_description">
25129               <p>The best-fit color transform matrix estimate
25130 calculated by the camera device's statistics units for the current
25131 output frame.<wbr/></p>
25132             </td>
25133
25134             <td class="entry_units">
25135             </td>
25136
25137             <td class="entry_range">
25138               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25139             </td>
25140
25141             <td class="entry_hal_version">
25142               <p>3.<wbr/>2</p>
25143             </td>
25144
25145             <td class="entry_tags">
25146             </td>
25147
25148           </tr>
25149           <tr class="entries_header">
25150             <th class="th_details" colspan="6">Details</th>
25151           </tr>
25152           <tr class="entry_cont">
25153             <td class="entry_details" colspan="6">
25154               <p>The camera device will provide the estimate from its
25155 statistics unit on the white balance transforms to use
25156 for the next frame.<wbr/> These are the values the camera device believes
25157 are the best fit for the current output frame.<wbr/> This may
25158 be different than the transform used for this frame,<wbr/> since
25159 statistics processing on data from a new frame typically
25160 completes after the transform has already been applied to
25161 that frame.<wbr/></p>
25162 <p>These estimates must be provided for all frames,<wbr/> even if
25163 capture settings and color transforms are set by the application.<wbr/></p>
25164 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25165 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25166             </td>
25167           </tr>
25168
25169
25170           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25171            <!-- end of entry -->
25172         
25173                 
25174           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25175             <td class="entry_name
25176              " rowspan="3">
25177               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25178             </td>
25179             <td class="entry_type">
25180                 <span class="entry_type_name entry_type_name_enum">byte</span>
25181
25182               <span class="entry_type_visibility"> [public]</span>
25183
25184
25185               <span class="entry_type_hwlevel">[full] </span>
25186
25187
25188
25189                 <ul class="entry_type_enum">
25190                   <li>
25191                     <span class="entry_type_enum_name">NONE</span>
25192                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25193 in the current scene.<wbr/></p></span>
25194                   </li>
25195                   <li>
25196                     <span class="entry_type_enum_name">50HZ</span>
25197                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25198 in the current scene.<wbr/></p></span>
25199                   </li>
25200                   <li>
25201                     <span class="entry_type_enum_name">60HZ</span>
25202                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25203 in the current scene.<wbr/></p></span>
25204                   </li>
25205                 </ul>
25206
25207             </td> <!-- entry_type -->
25208
25209             <td class="entry_description">
25210               <p>The camera device estimated scene illumination lighting
25211 frequency.<wbr/></p>
25212             </td>
25213
25214             <td class="entry_units">
25215             </td>
25216
25217             <td class="entry_range">
25218             </td>
25219
25220             <td class="entry_hal_version">
25221               <p>3.<wbr/>2</p>
25222             </td>
25223
25224             <td class="entry_tags">
25225             </td>
25226
25227           </tr>
25228           <tr class="entries_header">
25229             <th class="th_details" colspan="6">Details</th>
25230           </tr>
25231           <tr class="entry_cont">
25232             <td class="entry_details" colspan="6">
25233               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25234 that depends on the local utility power standards.<wbr/> This flicker must be
25235 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25236 The camera device uses this entry to tell the application what the scene
25237 illuminant frequency is.<wbr/></p>
25238 <p>When manual exposure control is enabled
25239 (<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> ==
25240 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25241 antibanding,<wbr/> and the application can ensure it selects
25242 exposure times that do not cause banding issues by looking
25243 into this metadata field.<wbr/> See
25244 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25245 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25246             </td>
25247           </tr>
25248
25249
25250           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25251            <!-- end of entry -->
25252         
25253                 
25254           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25255             <td class="entry_name
25256              " rowspan="3">
25257               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25258             </td>
25259             <td class="entry_type">
25260                 <span class="entry_type_name entry_type_name_enum">byte</span>
25261
25262               <span class="entry_type_visibility"> [public as boolean]</span>
25263
25264
25265
25266
25267
25268                 <ul class="entry_type_enum">
25269                   <li>
25270                     <span class="entry_type_enum_name">OFF</span>
25271                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25272                   </li>
25273                   <li>
25274                     <span class="entry_type_enum_name">ON</span>
25275                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25276                   </li>
25277                 </ul>
25278
25279             </td> <!-- entry_type -->
25280
25281             <td class="entry_description">
25282               <p>Operating mode for hot pixel map generation.<wbr/></p>
25283             </td>
25284
25285             <td class="entry_units">
25286             </td>
25287
25288             <td class="entry_range">
25289               <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>
25290             </td>
25291
25292             <td class="entry_hal_version">
25293               <p>3.<wbr/>2</p>
25294             </td>
25295
25296             <td class="entry_tags">
25297               <ul class="entry_tags">
25298                   <li><a href="#tag_V1">V1</a></li>
25299                   <li><a href="#tag_RAW">RAW</a></li>
25300               </ul>
25301             </td>
25302
25303           </tr>
25304           <tr class="entries_header">
25305             <th class="th_details" colspan="6">Details</th>
25306           </tr>
25307           <tr class="entry_cont">
25308             <td class="entry_details" colspan="6">
25309               <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/>
25310 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25311             </td>
25312           </tr>
25313
25314
25315           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25316            <!-- end of entry -->
25317         
25318                 
25319           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25320             <td class="entry_name
25321              " rowspan="5">
25322               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25323             </td>
25324             <td class="entry_type">
25325                 <span class="entry_type_name">int32</span>
25326                 <span class="entry_type_container">x</span>
25327
25328                 <span class="entry_type_array">
25329                   2 x n
25330                 </span>
25331               <span class="entry_type_visibility"> [public as point]</span>
25332
25333
25334
25335
25336                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25337
25338
25339             </td> <!-- entry_type -->
25340
25341             <td class="entry_description">
25342               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25343             </td>
25344
25345             <td class="entry_units">
25346             </td>
25347
25348             <td class="entry_range">
25349               <p>n &lt;= number of pixels on the sensor.<wbr/>
25350 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25351 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25352             </td>
25353
25354             <td class="entry_hal_version">
25355               <p>3.<wbr/>2</p>
25356             </td>
25357
25358             <td class="entry_tags">
25359               <ul class="entry_tags">
25360                   <li><a href="#tag_V1">V1</a></li>
25361                   <li><a href="#tag_RAW">RAW</a></li>
25362               </ul>
25363             </td>
25364
25365           </tr>
25366           <tr class="entries_header">
25367             <th class="th_details" colspan="6">Details</th>
25368           </tr>
25369           <tr class="entry_cont">
25370             <td class="entry_details" colspan="6">
25371               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25372 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25373 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25374 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/>
25375 This may include hot pixels that lie outside of the active array
25376 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25377             </td>
25378           </tr>
25379
25380           <tr class="entries_header">
25381             <th class="th_details" colspan="6">HAL Implementation Details</th>
25382           </tr>
25383           <tr class="entry_cont">
25384             <td class="entry_details" colspan="6">
25385               <p>A hotpixel map contains the coordinates of pixels on the camera
25386 sensor that do report valid values (usually due to defects in
25387 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25388 values,<wbr/> or have a response that does not accuractly encode the
25389 incoming light from the scene.<wbr/></p>
25390 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25391 pixels than actual pixels on the camera sensor.<wbr/></p>
25392             </td>
25393           </tr>
25394
25395           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25396            <!-- end of entry -->
25397         
25398                 
25399           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25400             <td class="entry_name
25401              " rowspan="3">
25402               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25403             </td>
25404             <td class="entry_type">
25405                 <span class="entry_type_name entry_type_name_enum">byte</span>
25406
25407               <span class="entry_type_visibility"> [public]</span>
25408
25409
25410               <span class="entry_type_hwlevel">[full] </span>
25411
25412
25413
25414                 <ul class="entry_type_enum">
25415                   <li>
25416                     <span class="entry_type_enum_name">OFF</span>
25417                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25418                   </li>
25419                   <li>
25420                     <span class="entry_type_enum_name">ON</span>
25421                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25422                   </li>
25423                 </ul>
25424
25425             </td> <!-- entry_type -->
25426
25427             <td class="entry_description">
25428               <p>Whether the camera device will output the lens
25429 shading map in output result metadata.<wbr/></p>
25430             </td>
25431
25432             <td class="entry_units">
25433             </td>
25434
25435             <td class="entry_range">
25436               <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>
25437             </td>
25438
25439             <td class="entry_hal_version">
25440               <p>3.<wbr/>2</p>
25441             </td>
25442
25443             <td class="entry_tags">
25444               <ul class="entry_tags">
25445                   <li><a href="#tag_RAW">RAW</a></li>
25446               </ul>
25447             </td>
25448
25449           </tr>
25450           <tr class="entries_header">
25451             <th class="th_details" colspan="6">Details</th>
25452           </tr>
25453           <tr class="entry_cont">
25454             <td class="entry_details" colspan="6">
25455               <p>When set to ON,<wbr/>
25456 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25457 the output result metadata.<wbr/></p>
25458 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25459             </td>
25460           </tr>
25461
25462
25463           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25464            <!-- end of entry -->
25465         
25466         
25467
25468       <!-- end of kind -->
25469       </tbody>
25470
25471   <!-- end of section -->
25472   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
25473
25474
25475       <tr><td colspan="7" class="kind">controls</td></tr>
25476
25477       <thead class="entries_header">
25478         <tr>
25479           <th class="th_name">Property Name</th>
25480           <th class="th_type">Type</th>
25481           <th class="th_description">Description</th>
25482           <th class="th_units">Units</th>
25483           <th class="th_range">Range</th>
25484           <th class="th_hal_version">Initial HIDL HAL version</th>
25485           <th class="th_tags">Tags</th>
25486         </tr>
25487       </thead>
25488
25489       <tbody>
25490
25491         
25492
25493         
25494
25495         
25496
25497         
25498
25499                 
25500           <tr class="entry" id="controls_android.tonemap.curveBlue">
25501             <td class="entry_name
25502              " rowspan="3">
25503               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25504             </td>
25505             <td class="entry_type">
25506                 <span class="entry_type_name">float</span>
25507                 <span class="entry_type_container">x</span>
25508
25509                 <span class="entry_type_array">
25510                   n x 2
25511                 </span>
25512               <span class="entry_type_visibility"> [ndk_public]</span>
25513
25514
25515               <span class="entry_type_hwlevel">[full] </span>
25516
25517
25518                 <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>
25519
25520
25521             </td> <!-- entry_type -->
25522
25523             <td class="entry_description">
25524               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25525 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25526 CONTRAST_<wbr/>CURVE.<wbr/></p>
25527             </td>
25528
25529             <td class="entry_units">
25530             </td>
25531
25532             <td class="entry_range">
25533             </td>
25534
25535             <td class="entry_hal_version">
25536               <p>3.<wbr/>2</p>
25537             </td>
25538
25539             <td class="entry_tags">
25540             </td>
25541
25542           </tr>
25543           <tr class="entries_header">
25544             <th class="th_details" colspan="6">Details</th>
25545           </tr>
25546           <tr class="entry_cont">
25547             <td class="entry_details" colspan="6">
25548               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25549             </td>
25550           </tr>
25551
25552
25553           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25554            <!-- end of entry -->
25555         
25556                 
25557           <tr class="entry" id="controls_android.tonemap.curveGreen">
25558             <td class="entry_name
25559              " rowspan="3">
25560               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25561             </td>
25562             <td class="entry_type">
25563                 <span class="entry_type_name">float</span>
25564                 <span class="entry_type_container">x</span>
25565
25566                 <span class="entry_type_array">
25567                   n x 2
25568                 </span>
25569               <span class="entry_type_visibility"> [ndk_public]</span>
25570
25571
25572               <span class="entry_type_hwlevel">[full] </span>
25573
25574
25575                 <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>
25576
25577
25578             </td> <!-- entry_type -->
25579
25580             <td class="entry_description">
25581               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25582 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25583 CONTRAST_<wbr/>CURVE.<wbr/></p>
25584             </td>
25585
25586             <td class="entry_units">
25587             </td>
25588
25589             <td class="entry_range">
25590             </td>
25591
25592             <td class="entry_hal_version">
25593               <p>3.<wbr/>2</p>
25594             </td>
25595
25596             <td class="entry_tags">
25597             </td>
25598
25599           </tr>
25600           <tr class="entries_header">
25601             <th class="th_details" colspan="6">Details</th>
25602           </tr>
25603           <tr class="entry_cont">
25604             <td class="entry_details" colspan="6">
25605               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25606             </td>
25607           </tr>
25608
25609
25610           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25611            <!-- end of entry -->
25612         
25613                 
25614           <tr class="entry" id="controls_android.tonemap.curveRed">
25615             <td class="entry_name
25616              " rowspan="5">
25617               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25618             </td>
25619             <td class="entry_type">
25620                 <span class="entry_type_name">float</span>
25621                 <span class="entry_type_container">x</span>
25622
25623                 <span class="entry_type_array">
25624                   n x 2
25625                 </span>
25626               <span class="entry_type_visibility"> [ndk_public]</span>
25627
25628
25629               <span class="entry_type_hwlevel">[full] </span>
25630
25631
25632                 <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>
25633
25634
25635             </td> <!-- entry_type -->
25636
25637             <td class="entry_description">
25638               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25639 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25640 CONTRAST_<wbr/>CURVE.<wbr/></p>
25641             </td>
25642
25643             <td class="entry_units">
25644             </td>
25645
25646             <td class="entry_range">
25647               <p>0-1 on both input and output coordinates,<wbr/> normalized
25648 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25649             </td>
25650
25651             <td class="entry_hal_version">
25652               <p>3.<wbr/>2</p>
25653             </td>
25654
25655             <td class="entry_tags">
25656             </td>
25657
25658           </tr>
25659           <tr class="entries_header">
25660             <th class="th_details" colspan="6">Details</th>
25661           </tr>
25662           <tr class="entry_cont">
25663             <td class="entry_details" colspan="6">
25664               <p>Each channel's curve is defined by an array of control points:</p>
25665 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25666   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25667 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25668 <p>These are sorted in order of increasing <code>Pin</code>; it is
25669 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25670 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25671 the camera device must linearly interpolate between the control
25672 points.<wbr/></p>
25673 <p>Each curve can have an independent number of points,<wbr/> and the number
25674 of points can be less than max (that is,<wbr/> the request doesn't have to
25675 always provide a curve with number of points equivalent to
25676 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25677 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25678 only specify the red channel and the precision is limited to 4
25679 digits,<wbr/> for conciseness.<wbr/></p>
25680 <p>Linear mapping:</p>
25681 <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 ]
25682 </code></pre>
25683 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25684 <p>Invert mapping:</p>
25685 <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 ]
25686 </code></pre>
25687 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25688 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25689 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25690   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/>
25691   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/>
25692   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/>
25693   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 ]
25694 </code></pre>
25695 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25696 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25697 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25698   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/>
25699   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/>
25700   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/>
25701   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 ]
25702 </code></pre>
25703 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25704             </td>
25705           </tr>
25706
25707           <tr class="entries_header">
25708             <th class="th_details" colspan="6">HAL Implementation Details</th>
25709           </tr>
25710           <tr class="entry_cont">
25711             <td class="entry_details" colspan="6">
25712               <p>For good quality of mapping,<wbr/> at least 128 control points are
25713 preferred.<wbr/></p>
25714 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25715 control points used as are available.<wbr/></p>
25716             </td>
25717           </tr>
25718
25719           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25720            <!-- end of entry -->
25721         
25722                 
25723           <tr class="entry" id="controls_android.tonemap.curve">
25724             <td class="entry_name
25725              " rowspan="5">
25726               android.<wbr/>tonemap.<wbr/>curve
25727             </td>
25728             <td class="entry_type">
25729                 <span class="entry_type_name">float</span>
25730
25731               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25732
25733               <span class="entry_type_synthetic">[synthetic] </span>
25734
25735               <span class="entry_type_hwlevel">[full] </span>
25736
25737
25738
25739
25740             </td> <!-- entry_type -->
25741
25742             <td class="entry_description">
25743               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25744 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25745             </td>
25746
25747             <td class="entry_units">
25748             </td>
25749
25750             <td class="entry_range">
25751             </td>
25752
25753             <td class="entry_hal_version">
25754               <p>3.<wbr/>2</p>
25755             </td>
25756
25757             <td class="entry_tags">
25758             </td>
25759
25760           </tr>
25761           <tr class="entries_header">
25762             <th class="th_details" colspan="6">Details</th>
25763           </tr>
25764           <tr class="entry_cont">
25765             <td class="entry_details" colspan="6">
25766               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25767 channels respectively.<wbr/> The following example uses the red channel as an
25768 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25769 Each channel's curve is defined by an array of control points:</p>
25770 <pre><code>curveRed =
25771   [ 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) ]
25772 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25773 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25774 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25775 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25776 the camera device must linearly interpolate between the control
25777 points.<wbr/></p>
25778 <p>Each curve can have an independent number of points,<wbr/> and the number
25779 of points can be less than max (that is,<wbr/> the request doesn't have to
25780 always provide a curve with number of points equivalent to
25781 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25782 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25783 only specify the red channel and the precision is limited to 4
25784 digits,<wbr/> for conciseness.<wbr/></p>
25785 <p>Linear mapping:</p>
25786 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25787 </code></pre>
25788 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25789 <p>Invert mapping:</p>
25790 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25791 </code></pre>
25792 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25793 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25794 <pre><code>curveRed = [
25795   (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/>
25796   (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/>
25797   (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/>
25798   (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) ]
25799 </code></pre>
25800 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25801 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25802 <pre><code>curveRed = [
25803   (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/>
25804   (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/>
25805   (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/>
25806   (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) ]
25807 </code></pre>
25808 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25809             </td>
25810           </tr>
25811
25812           <tr class="entries_header">
25813             <th class="th_details" colspan="6">HAL Implementation Details</th>
25814           </tr>
25815           <tr class="entry_cont">
25816             <td class="entry_details" colspan="6">
25817               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25818 curveBlue entries.<wbr/></p>
25819             </td>
25820           </tr>
25821
25822           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25823            <!-- end of entry -->
25824         
25825                 
25826           <tr class="entry" id="controls_android.tonemap.mode">
25827             <td class="entry_name
25828              " rowspan="3">
25829               android.<wbr/>tonemap.<wbr/>mode
25830             </td>
25831             <td class="entry_type">
25832                 <span class="entry_type_name entry_type_name_enum">byte</span>
25833
25834               <span class="entry_type_visibility"> [public]</span>
25835
25836
25837               <span class="entry_type_hwlevel">[full] </span>
25838
25839
25840
25841                 <ul class="entry_type_enum">
25842                   <li>
25843                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25844                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25845 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25846 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25847 for applying the tonemapping curve specified by
25848 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25849 <p>Must not slow down frame rate relative to raw
25850 sensor output.<wbr/></p></span>
25851                   </li>
25852                   <li>
25853                     <span class="entry_type_enum_name">FAST</span>
25854                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25855 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25856                   </li>
25857                   <li>
25858                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
25859                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25860 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25861                   </li>
25862                   <li>
25863                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
25864                     <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
25865 tonemapping.<wbr/></p>
25866 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25867 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25868 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25869                   </li>
25870                   <li>
25871                     <span class="entry_type_enum_name">PRESET_CURVE</span>
25872                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25873 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25874 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25875 for applying the tonemapping curve specified by
25876 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25877 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25878                   </li>
25879                 </ul>
25880
25881             </td> <!-- entry_type -->
25882
25883             <td class="entry_description">
25884               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25885             </td>
25886
25887             <td class="entry_units">
25888             </td>
25889
25890             <td class="entry_range">
25891               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25892             </td>
25893
25894             <td class="entry_hal_version">
25895               <p>3.<wbr/>2</p>
25896             </td>
25897
25898             <td class="entry_tags">
25899             </td>
25900
25901           </tr>
25902           <tr class="entries_header">
25903             <th class="th_details" colspan="6">Details</th>
25904           </tr>
25905           <tr class="entry_cont">
25906             <td class="entry_details" colspan="6">
25907               <p>When switching to an application-defined contrast curve by setting
25908 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25909 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25910 mapping from input high-bit-depth pixel value to the output
25911 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
25912 and output may change depending on the camera pipeline,<wbr/> the values
25913 are specified by normalized floating-point numbers.<wbr/></p>
25914 <p>More-complex color mapping operations such as 3D color look-up
25915 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25916 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25917 CONTRAST_<wbr/>CURVE.<wbr/></p>
25918 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25919 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25920 These values are always available,<wbr/> and as close as possible to the
25921 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25922 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25923 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25924 roughly the same.<wbr/></p>
25925             </td>
25926           </tr>
25927
25928
25929           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25930            <!-- end of entry -->
25931         
25932                 
25933           <tr class="entry" id="controls_android.tonemap.gamma">
25934             <td class="entry_name
25935              " rowspan="3">
25936               android.<wbr/>tonemap.<wbr/>gamma
25937             </td>
25938             <td class="entry_type">
25939                 <span class="entry_type_name">float</span>
25940
25941               <span class="entry_type_visibility"> [public]</span>
25942
25943
25944
25945
25946
25947
25948             </td> <!-- entry_type -->
25949
25950             <td class="entry_description">
25951               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25952 GAMMA_<wbr/>VALUE</p>
25953             </td>
25954
25955             <td class="entry_units">
25956             </td>
25957
25958             <td class="entry_range">
25959             </td>
25960
25961             <td class="entry_hal_version">
25962               <p>3.<wbr/>2</p>
25963             </td>
25964
25965             <td class="entry_tags">
25966             </td>
25967
25968           </tr>
25969           <tr class="entries_header">
25970             <th class="th_details" colspan="6">Details</th>
25971           </tr>
25972           <tr class="entry_cont">
25973             <td class="entry_details" colspan="6">
25974               <p>The tonemap curve will be defined the following formula:
25975 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25976 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25977 pow is the power function and gamma is the gamma value specified by this
25978 key.<wbr/></p>
25979 <p>The same curve will be applied to all color channels.<wbr/> The camera device
25980 may clip the input gamma value to its supported range.<wbr/> The actual applied
25981 value will be returned in capture result.<wbr/></p>
25982 <p>The valid range of gamma value varies on different devices,<wbr/> but values
25983 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25984             </td>
25985           </tr>
25986
25987
25988           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25989            <!-- end of entry -->
25990         
25991                 
25992           <tr class="entry" id="controls_android.tonemap.presetCurve">
25993             <td class="entry_name
25994              " rowspan="3">
25995               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25996             </td>
25997             <td class="entry_type">
25998                 <span class="entry_type_name entry_type_name_enum">byte</span>
25999
26000               <span class="entry_type_visibility"> [public]</span>
26001
26002
26003
26004
26005
26006                 <ul class="entry_type_enum">
26007                   <li>
26008                     <span class="entry_type_enum_name">SRGB</span>
26009                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26010                   </li>
26011                   <li>
26012                     <span class="entry_type_enum_name">REC709</span>
26013                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26014                   </li>
26015                 </ul>
26016
26017             </td> <!-- entry_type -->
26018
26019             <td class="entry_description">
26020               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26021 PRESET_<wbr/>CURVE</p>
26022             </td>
26023
26024             <td class="entry_units">
26025             </td>
26026
26027             <td class="entry_range">
26028             </td>
26029
26030             <td class="entry_hal_version">
26031               <p>3.<wbr/>2</p>
26032             </td>
26033
26034             <td class="entry_tags">
26035             </td>
26036
26037           </tr>
26038           <tr class="entries_header">
26039             <th class="th_details" colspan="6">Details</th>
26040           </tr>
26041           <tr class="entry_cont">
26042             <td class="entry_details" colspan="6">
26043               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26044 <p>sRGB (approximated by 16 control points):</p>
26045 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26046 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26047 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26048 <p>Note that above figures show a 16 control points approximation of preset
26049 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26050             </td>
26051           </tr>
26052
26053
26054           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26055            <!-- end of entry -->
26056         
26057         
26058
26059       <!-- end of kind -->
26060       </tbody>
26061       <tr><td colspan="7" class="kind">static</td></tr>
26062
26063       <thead class="entries_header">
26064         <tr>
26065           <th class="th_name">Property Name</th>
26066           <th class="th_type">Type</th>
26067           <th class="th_description">Description</th>
26068           <th class="th_units">Units</th>
26069           <th class="th_range">Range</th>
26070           <th class="th_hal_version">Initial HIDL HAL version</th>
26071           <th class="th_tags">Tags</th>
26072         </tr>
26073       </thead>
26074
26075       <tbody>
26076
26077         
26078
26079         
26080
26081         
26082
26083         
26084
26085                 
26086           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26087             <td class="entry_name
26088              " rowspan="5">
26089               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26090             </td>
26091             <td class="entry_type">
26092                 <span class="entry_type_name">int32</span>
26093
26094               <span class="entry_type_visibility"> [public]</span>
26095
26096
26097               <span class="entry_type_hwlevel">[full] </span>
26098
26099
26100
26101
26102             </td> <!-- entry_type -->
26103
26104             <td class="entry_description">
26105               <p>Maximum number of supported points in the
26106 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26107             </td>
26108
26109             <td class="entry_units">
26110             </td>
26111
26112             <td class="entry_range">
26113             </td>
26114
26115             <td class="entry_hal_version">
26116               <p>3.<wbr/>2</p>
26117             </td>
26118
26119             <td class="entry_tags">
26120             </td>
26121
26122           </tr>
26123           <tr class="entries_header">
26124             <th class="th_details" colspan="6">Details</th>
26125           </tr>
26126           <tr class="entry_cont">
26127             <td class="entry_details" colspan="6">
26128               <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
26129 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26130 representation,<wbr/> using linear interpolation.<wbr/></p>
26131 <p>The output curves in the result metadata may have a different number
26132 of points than the input curves,<wbr/> and will represent the actual
26133 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26134             </td>
26135           </tr>
26136
26137           <tr class="entries_header">
26138             <th class="th_details" colspan="6">HAL Implementation Details</th>
26139           </tr>
26140           <tr class="entry_cont">
26141             <td class="entry_details" colspan="6">
26142               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26143             </td>
26144           </tr>
26145
26146           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26147            <!-- end of entry -->
26148         
26149                 
26150           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26151             <td class="entry_name
26152              " rowspan="5">
26153               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26154             </td>
26155             <td class="entry_type">
26156                 <span class="entry_type_name">byte</span>
26157                 <span class="entry_type_container">x</span>
26158
26159                 <span class="entry_type_array">
26160                   n
26161                 </span>
26162               <span class="entry_type_visibility"> [public as enumList]</span>
26163
26164
26165               <span class="entry_type_hwlevel">[full] </span>
26166
26167
26168                 <div class="entry_type_notes">list of enums</div>
26169
26170
26171             </td> <!-- entry_type -->
26172
26173             <td class="entry_description">
26174               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26175 device.<wbr/></p>
26176             </td>
26177
26178             <td class="entry_units">
26179             </td>
26180
26181             <td class="entry_range">
26182               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26183             </td>
26184
26185             <td class="entry_hal_version">
26186               <p>3.<wbr/>2</p>
26187             </td>
26188
26189             <td class="entry_tags">
26190             </td>
26191
26192           </tr>
26193           <tr class="entries_header">
26194             <th class="th_details" colspan="6">Details</th>
26195           </tr>
26196           <tr class="entry_cont">
26197             <td class="entry_details" colspan="6">
26198               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26199 at least one of below mode combinations:</p>
26200 <ul>
26201 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26202 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26203 </ul>
26204 <p>This includes all FULL level devices.<wbr/></p>
26205             </td>
26206           </tr>
26207
26208           <tr class="entries_header">
26209             <th class="th_details" colspan="6">HAL Implementation Details</th>
26210           </tr>
26211           <tr class="entry_cont">
26212             <td class="entry_details" colspan="6">
26213               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26214 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26215 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26216 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26217             </td>
26218           </tr>
26219
26220           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26221            <!-- end of entry -->
26222         
26223         
26224
26225       <!-- end of kind -->
26226       </tbody>
26227       <tr><td colspan="7" class="kind">dynamic</td></tr>
26228
26229       <thead class="entries_header">
26230         <tr>
26231           <th class="th_name">Property Name</th>
26232           <th class="th_type">Type</th>
26233           <th class="th_description">Description</th>
26234           <th class="th_units">Units</th>
26235           <th class="th_range">Range</th>
26236           <th class="th_hal_version">Initial HIDL HAL version</th>
26237           <th class="th_tags">Tags</th>
26238         </tr>
26239       </thead>
26240
26241       <tbody>
26242
26243         
26244
26245         
26246
26247         
26248
26249         
26250
26251                 
26252           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26253             <td class="entry_name
26254              " rowspan="3">
26255               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26256             </td>
26257             <td class="entry_type">
26258                 <span class="entry_type_name">float</span>
26259                 <span class="entry_type_container">x</span>
26260
26261                 <span class="entry_type_array">
26262                   n x 2
26263                 </span>
26264               <span class="entry_type_visibility"> [ndk_public]</span>
26265
26266
26267               <span class="entry_type_hwlevel">[full] </span>
26268
26269
26270                 <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>
26271
26272
26273             </td> <!-- entry_type -->
26274
26275             <td class="entry_description">
26276               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26277 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26278 CONTRAST_<wbr/>CURVE.<wbr/></p>
26279             </td>
26280
26281             <td class="entry_units">
26282             </td>
26283
26284             <td class="entry_range">
26285             </td>
26286
26287             <td class="entry_hal_version">
26288               <p>3.<wbr/>2</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>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26301             </td>
26302           </tr>
26303
26304
26305           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26306            <!-- end of entry -->
26307         
26308                 
26309           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26310             <td class="entry_name
26311              " rowspan="3">
26312               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26313             </td>
26314             <td class="entry_type">
26315                 <span class="entry_type_name">float</span>
26316                 <span class="entry_type_container">x</span>
26317
26318                 <span class="entry_type_array">
26319                   n x 2
26320                 </span>
26321               <span class="entry_type_visibility"> [ndk_public]</span>
26322
26323
26324               <span class="entry_type_hwlevel">[full] </span>
26325
26326
26327                 <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>
26328
26329
26330             </td> <!-- entry_type -->
26331
26332             <td class="entry_description">
26333               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26334 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26335 CONTRAST_<wbr/>CURVE.<wbr/></p>
26336             </td>
26337
26338             <td class="entry_units">
26339             </td>
26340
26341             <td class="entry_range">
26342             </td>
26343
26344             <td class="entry_hal_version">
26345               <p>3.<wbr/>2</p>
26346             </td>
26347
26348             <td class="entry_tags">
26349             </td>
26350
26351           </tr>
26352           <tr class="entries_header">
26353             <th class="th_details" colspan="6">Details</th>
26354           </tr>
26355           <tr class="entry_cont">
26356             <td class="entry_details" colspan="6">
26357               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26358             </td>
26359           </tr>
26360
26361
26362           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26363            <!-- end of entry -->
26364         
26365                 
26366           <tr class="entry" id="dynamic_android.tonemap.curveRed">
26367             <td class="entry_name
26368              " rowspan="5">
26369               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26370             </td>
26371             <td class="entry_type">
26372                 <span class="entry_type_name">float</span>
26373                 <span class="entry_type_container">x</span>
26374
26375                 <span class="entry_type_array">
26376                   n x 2
26377                 </span>
26378               <span class="entry_type_visibility"> [ndk_public]</span>
26379
26380
26381               <span class="entry_type_hwlevel">[full] </span>
26382
26383
26384                 <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>
26385
26386
26387             </td> <!-- entry_type -->
26388
26389             <td class="entry_description">
26390               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26391 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26392 CONTRAST_<wbr/>CURVE.<wbr/></p>
26393             </td>
26394
26395             <td class="entry_units">
26396             </td>
26397
26398             <td class="entry_range">
26399               <p>0-1 on both input and output coordinates,<wbr/> normalized
26400 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26401             </td>
26402
26403             <td class="entry_hal_version">
26404               <p>3.<wbr/>2</p>
26405             </td>
26406
26407             <td class="entry_tags">
26408             </td>
26409
26410           </tr>
26411           <tr class="entries_header">
26412             <th class="th_details" colspan="6">Details</th>
26413           </tr>
26414           <tr class="entry_cont">
26415             <td class="entry_details" colspan="6">
26416               <p>Each channel's curve is defined by an array of control points:</p>
26417 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26418   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26419 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26420 <p>These are sorted in order of increasing <code>Pin</code>; it is
26421 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26422 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26423 the camera device must linearly interpolate between the control
26424 points.<wbr/></p>
26425 <p>Each curve can have an independent number of points,<wbr/> and the number
26426 of points can be less than max (that is,<wbr/> the request doesn't have to
26427 always provide a curve with number of points equivalent to
26428 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26429 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26430 only specify the red channel and the precision is limited to 4
26431 digits,<wbr/> for conciseness.<wbr/></p>
26432 <p>Linear mapping:</p>
26433 <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 ]
26434 </code></pre>
26435 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26436 <p>Invert mapping:</p>
26437 <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 ]
26438 </code></pre>
26439 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26440 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26441 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26442   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/>
26443   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/>
26444   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/>
26445   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 ]
26446 </code></pre>
26447 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26448 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26449 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26450   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/>
26451   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/>
26452   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/>
26453   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 ]
26454 </code></pre>
26455 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26456             </td>
26457           </tr>
26458
26459           <tr class="entries_header">
26460             <th class="th_details" colspan="6">HAL Implementation Details</th>
26461           </tr>
26462           <tr class="entry_cont">
26463             <td class="entry_details" colspan="6">
26464               <p>For good quality of mapping,<wbr/> at least 128 control points are
26465 preferred.<wbr/></p>
26466 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26467 control points used as are available.<wbr/></p>
26468             </td>
26469           </tr>
26470
26471           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26472            <!-- end of entry -->
26473         
26474                 
26475           <tr class="entry" id="dynamic_android.tonemap.curve">
26476             <td class="entry_name
26477              " rowspan="5">
26478               android.<wbr/>tonemap.<wbr/>curve
26479             </td>
26480             <td class="entry_type">
26481                 <span class="entry_type_name">float</span>
26482
26483               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26484
26485               <span class="entry_type_synthetic">[synthetic] </span>
26486
26487               <span class="entry_type_hwlevel">[full] </span>
26488
26489
26490
26491
26492             </td> <!-- entry_type -->
26493
26494             <td class="entry_description">
26495               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26496 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26497             </td>
26498
26499             <td class="entry_units">
26500             </td>
26501
26502             <td class="entry_range">
26503             </td>
26504
26505             <td class="entry_hal_version">
26506               <p>3.<wbr/>2</p>
26507             </td>
26508
26509             <td class="entry_tags">
26510             </td>
26511
26512           </tr>
26513           <tr class="entries_header">
26514             <th class="th_details" colspan="6">Details</th>
26515           </tr>
26516           <tr class="entry_cont">
26517             <td class="entry_details" colspan="6">
26518               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26519 channels respectively.<wbr/> The following example uses the red channel as an
26520 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26521 Each channel's curve is defined by an array of control points:</p>
26522 <pre><code>curveRed =
26523   [ 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) ]
26524 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26525 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26526 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26527 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26528 the camera device must linearly interpolate between the control
26529 points.<wbr/></p>
26530 <p>Each curve can have an independent number of points,<wbr/> and the number
26531 of points can be less than max (that is,<wbr/> the request doesn't have to
26532 always provide a curve with number of points equivalent to
26533 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26534 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26535 only specify the red channel and the precision is limited to 4
26536 digits,<wbr/> for conciseness.<wbr/></p>
26537 <p>Linear mapping:</p>
26538 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26539 </code></pre>
26540 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26541 <p>Invert mapping:</p>
26542 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26543 </code></pre>
26544 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26545 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26546 <pre><code>curveRed = [
26547   (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/>
26548   (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/>
26549   (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/>
26550   (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) ]
26551 </code></pre>
26552 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26553 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26554 <pre><code>curveRed = [
26555   (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/>
26556   (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/>
26557   (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/>
26558   (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) ]
26559 </code></pre>
26560 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26561             </td>
26562           </tr>
26563
26564           <tr class="entries_header">
26565             <th class="th_details" colspan="6">HAL Implementation Details</th>
26566           </tr>
26567           <tr class="entry_cont">
26568             <td class="entry_details" colspan="6">
26569               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26570 curveBlue entries.<wbr/></p>
26571             </td>
26572           </tr>
26573
26574           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26575            <!-- end of entry -->
26576         
26577                 
26578           <tr class="entry" id="dynamic_android.tonemap.mode">
26579             <td class="entry_name
26580              " rowspan="3">
26581               android.<wbr/>tonemap.<wbr/>mode
26582             </td>
26583             <td class="entry_type">
26584                 <span class="entry_type_name entry_type_name_enum">byte</span>
26585
26586               <span class="entry_type_visibility"> [public]</span>
26587
26588
26589               <span class="entry_type_hwlevel">[full] </span>
26590
26591
26592
26593                 <ul class="entry_type_enum">
26594                   <li>
26595                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
26596                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26597 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26598 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26599 for applying the tonemapping curve specified by
26600 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26601 <p>Must not slow down frame rate relative to raw
26602 sensor output.<wbr/></p></span>
26603                   </li>
26604                   <li>
26605                     <span class="entry_type_enum_name">FAST</span>
26606                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26607 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26608                   </li>
26609                   <li>
26610                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
26611                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26612 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26613                   </li>
26614                   <li>
26615                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
26616                     <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
26617 tonemapping.<wbr/></p>
26618 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26619 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26620 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26621                   </li>
26622                   <li>
26623                     <span class="entry_type_enum_name">PRESET_CURVE</span>
26624                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26625 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26626 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26627 for applying the tonemapping curve specified by
26628 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26629 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26630                   </li>
26631                 </ul>
26632
26633             </td> <!-- entry_type -->
26634
26635             <td class="entry_description">
26636               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26637             </td>
26638
26639             <td class="entry_units">
26640             </td>
26641
26642             <td class="entry_range">
26643               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26644             </td>
26645
26646             <td class="entry_hal_version">
26647               <p>3.<wbr/>2</p>
26648             </td>
26649
26650             <td class="entry_tags">
26651             </td>
26652
26653           </tr>
26654           <tr class="entries_header">
26655             <th class="th_details" colspan="6">Details</th>
26656           </tr>
26657           <tr class="entry_cont">
26658             <td class="entry_details" colspan="6">
26659               <p>When switching to an application-defined contrast curve by setting
26660 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26661 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26662 mapping from input high-bit-depth pixel value to the output
26663 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26664 and output may change depending on the camera pipeline,<wbr/> the values
26665 are specified by normalized floating-point numbers.<wbr/></p>
26666 <p>More-complex color mapping operations such as 3D color look-up
26667 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26668 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26669 CONTRAST_<wbr/>CURVE.<wbr/></p>
26670 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26671 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26672 These values are always available,<wbr/> and as close as possible to the
26673 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26674 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26675 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26676 roughly the same.<wbr/></p>
26677             </td>
26678           </tr>
26679
26680
26681           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26682            <!-- end of entry -->
26683         
26684                 
26685           <tr class="entry" id="dynamic_android.tonemap.gamma">
26686             <td class="entry_name
26687              " rowspan="3">
26688               android.<wbr/>tonemap.<wbr/>gamma
26689             </td>
26690             <td class="entry_type">
26691                 <span class="entry_type_name">float</span>
26692
26693               <span class="entry_type_visibility"> [public]</span>
26694
26695
26696
26697
26698
26699
26700             </td> <!-- entry_type -->
26701
26702             <td class="entry_description">
26703               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26704 GAMMA_<wbr/>VALUE</p>
26705             </td>
26706
26707             <td class="entry_units">
26708             </td>
26709
26710             <td class="entry_range">
26711             </td>
26712
26713             <td class="entry_hal_version">
26714               <p>3.<wbr/>2</p>
26715             </td>
26716
26717             <td class="entry_tags">
26718             </td>
26719
26720           </tr>
26721           <tr class="entries_header">
26722             <th class="th_details" colspan="6">Details</th>
26723           </tr>
26724           <tr class="entry_cont">
26725             <td class="entry_details" colspan="6">
26726               <p>The tonemap curve will be defined the following formula:
26727 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26728 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26729 pow is the power function and gamma is the gamma value specified by this
26730 key.<wbr/></p>
26731 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26732 may clip the input gamma value to its supported range.<wbr/> The actual applied
26733 value will be returned in capture result.<wbr/></p>
26734 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26735 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26736             </td>
26737           </tr>
26738
26739
26740           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26741            <!-- end of entry -->
26742         
26743                 
26744           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
26745             <td class="entry_name
26746              " rowspan="3">
26747               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26748             </td>
26749             <td class="entry_type">
26750                 <span class="entry_type_name entry_type_name_enum">byte</span>
26751
26752               <span class="entry_type_visibility"> [public]</span>
26753
26754
26755
26756
26757
26758                 <ul class="entry_type_enum">
26759                   <li>
26760                     <span class="entry_type_enum_name">SRGB</span>
26761                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26762                   </li>
26763                   <li>
26764                     <span class="entry_type_enum_name">REC709</span>
26765                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26766                   </li>
26767                 </ul>
26768
26769             </td> <!-- entry_type -->
26770
26771             <td class="entry_description">
26772               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26773 PRESET_<wbr/>CURVE</p>
26774             </td>
26775
26776             <td class="entry_units">
26777             </td>
26778
26779             <td class="entry_range">
26780             </td>
26781
26782             <td class="entry_hal_version">
26783               <p>3.<wbr/>2</p>
26784             </td>
26785
26786             <td class="entry_tags">
26787             </td>
26788
26789           </tr>
26790           <tr class="entries_header">
26791             <th class="th_details" colspan="6">Details</th>
26792           </tr>
26793           <tr class="entry_cont">
26794             <td class="entry_details" colspan="6">
26795               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26796 <p>sRGB (approximated by 16 control points):</p>
26797 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26798 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26799 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26800 <p>Note that above figures show a 16 control points approximation of preset
26801 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26802             </td>
26803           </tr>
26804
26805
26806           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26807            <!-- end of entry -->
26808         
26809         
26810
26811       <!-- end of kind -->
26812       </tbody>
26813
26814   <!-- end of section -->
26815   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
26816
26817
26818       <tr><td colspan="7" class="kind">controls</td></tr>
26819
26820       <thead class="entries_header">
26821         <tr>
26822           <th class="th_name">Property Name</th>
26823           <th class="th_type">Type</th>
26824           <th class="th_description">Description</th>
26825           <th class="th_units">Units</th>
26826           <th class="th_range">Range</th>
26827           <th class="th_hal_version">Initial HIDL HAL version</th>
26828           <th class="th_tags">Tags</th>
26829         </tr>
26830       </thead>
26831
26832       <tbody>
26833
26834         
26835
26836         
26837
26838         
26839
26840         
26841
26842                 
26843           <tr class="entry" id="controls_android.led.transmit">
26844             <td class="entry_name
26845              " rowspan="1">
26846               android.<wbr/>led.<wbr/>transmit
26847             </td>
26848             <td class="entry_type">
26849                 <span class="entry_type_name entry_type_name_enum">byte</span>
26850
26851               <span class="entry_type_visibility"> [hidden as boolean]</span>
26852
26853
26854
26855
26856
26857                 <ul class="entry_type_enum">
26858                   <li>
26859                     <span class="entry_type_enum_name">OFF</span>
26860                   </li>
26861                   <li>
26862                     <span class="entry_type_enum_name">ON</span>
26863                   </li>
26864                 </ul>
26865
26866             </td> <!-- entry_type -->
26867
26868             <td class="entry_description">
26869               <p>This LED is nominally used to indicate to the user
26870 that the camera is powered on and may be streaming images back to the
26871 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26872 disable this when video is processed locally and not transmitted to
26873 any untrusted applications.<wbr/></p>
26874 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26875 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26876 data is stored locally on the device.<wbr/></p>
26877 <p>The LED <em>may</em> be off if a trusted application is using the data that
26878 doesn't violate the above rules.<wbr/></p>
26879             </td>
26880
26881             <td class="entry_units">
26882             </td>
26883
26884             <td class="entry_range">
26885             </td>
26886
26887             <td class="entry_hal_version">
26888               <p>3.<wbr/>2</p>
26889             </td>
26890
26891             <td class="entry_tags">
26892             </td>
26893
26894           </tr>
26895
26896
26897           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26898            <!-- end of entry -->
26899         
26900         
26901
26902       <!-- end of kind -->
26903       </tbody>
26904       <tr><td colspan="7" class="kind">dynamic</td></tr>
26905
26906       <thead class="entries_header">
26907         <tr>
26908           <th class="th_name">Property Name</th>
26909           <th class="th_type">Type</th>
26910           <th class="th_description">Description</th>
26911           <th class="th_units">Units</th>
26912           <th class="th_range">Range</th>
26913           <th class="th_hal_version">Initial HIDL HAL version</th>
26914           <th class="th_tags">Tags</th>
26915         </tr>
26916       </thead>
26917
26918       <tbody>
26919
26920         
26921
26922         
26923
26924         
26925
26926         
26927
26928                 
26929           <tr class="entry" id="dynamic_android.led.transmit">
26930             <td class="entry_name
26931              " rowspan="1">
26932               android.<wbr/>led.<wbr/>transmit
26933             </td>
26934             <td class="entry_type">
26935                 <span class="entry_type_name entry_type_name_enum">byte</span>
26936
26937               <span class="entry_type_visibility"> [hidden as boolean]</span>
26938
26939
26940
26941
26942
26943                 <ul class="entry_type_enum">
26944                   <li>
26945                     <span class="entry_type_enum_name">OFF</span>
26946                   </li>
26947                   <li>
26948                     <span class="entry_type_enum_name">ON</span>
26949                   </li>
26950                 </ul>
26951
26952             </td> <!-- entry_type -->
26953
26954             <td class="entry_description">
26955               <p>This LED is nominally used to indicate to the user
26956 that the camera is powered on and may be streaming images back to the
26957 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26958 disable this when video is processed locally and not transmitted to
26959 any untrusted applications.<wbr/></p>
26960 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26961 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26962 data is stored locally on the device.<wbr/></p>
26963 <p>The LED <em>may</em> be off if a trusted application is using the data that
26964 doesn't violate the above rules.<wbr/></p>
26965             </td>
26966
26967             <td class="entry_units">
26968             </td>
26969
26970             <td class="entry_range">
26971             </td>
26972
26973             <td class="entry_hal_version">
26974               <p>3.<wbr/>2</p>
26975             </td>
26976
26977             <td class="entry_tags">
26978             </td>
26979
26980           </tr>
26981
26982
26983           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26984            <!-- end of entry -->
26985         
26986         
26987
26988       <!-- end of kind -->
26989       </tbody>
26990       <tr><td colspan="7" class="kind">static</td></tr>
26991
26992       <thead class="entries_header">
26993         <tr>
26994           <th class="th_name">Property Name</th>
26995           <th class="th_type">Type</th>
26996           <th class="th_description">Description</th>
26997           <th class="th_units">Units</th>
26998           <th class="th_range">Range</th>
26999           <th class="th_hal_version">Initial HIDL HAL version</th>
27000           <th class="th_tags">Tags</th>
27001         </tr>
27002       </thead>
27003
27004       <tbody>
27005
27006         
27007
27008         
27009
27010         
27011
27012         
27013
27014                 
27015           <tr class="entry" id="static_android.led.availableLeds">
27016             <td class="entry_name
27017              " rowspan="1">
27018               android.<wbr/>led.<wbr/>available<wbr/>Leds
27019             </td>
27020             <td class="entry_type">
27021                 <span class="entry_type_name entry_type_name_enum">byte</span>
27022                 <span class="entry_type_container">x</span>
27023
27024                 <span class="entry_type_array">
27025                   n
27026                 </span>
27027               <span class="entry_type_visibility"> [hidden]</span>
27028
27029
27030
27031
27032
27033                 <ul class="entry_type_enum">
27034                   <li>
27035                     <span class="entry_type_enum_name">TRANSMIT</span>
27036                     <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>
27037                   </li>
27038                 </ul>
27039
27040             </td> <!-- entry_type -->
27041
27042             <td class="entry_description">
27043               <p>A list of camera LEDs that are available on this system.<wbr/></p>
27044             </td>
27045
27046             <td class="entry_units">
27047             </td>
27048
27049             <td class="entry_range">
27050             </td>
27051
27052             <td class="entry_hal_version">
27053               <p>3.<wbr/>2</p>
27054             </td>
27055
27056             <td class="entry_tags">
27057             </td>
27058
27059           </tr>
27060
27061
27062           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27063            <!-- end of entry -->
27064         
27065         
27066
27067       <!-- end of kind -->
27068       </tbody>
27069
27070   <!-- end of section -->
27071   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27072
27073
27074       <tr><td colspan="7" class="kind">static</td></tr>
27075
27076       <thead class="entries_header">
27077         <tr>
27078           <th class="th_name">Property Name</th>
27079           <th class="th_type">Type</th>
27080           <th class="th_description">Description</th>
27081           <th class="th_units">Units</th>
27082           <th class="th_range">Range</th>
27083           <th class="th_hal_version">Initial HIDL HAL version</th>
27084           <th class="th_tags">Tags</th>
27085         </tr>
27086       </thead>
27087
27088       <tbody>
27089
27090         
27091
27092         
27093
27094         
27095
27096         
27097
27098                 
27099           <tr class="entry" id="static_android.info.supportedHardwareLevel">
27100             <td class="entry_name
27101              " rowspan="5">
27102               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27103             </td>
27104             <td class="entry_type">
27105                 <span class="entry_type_name entry_type_name_enum">byte</span>
27106
27107               <span class="entry_type_visibility"> [public]</span>
27108
27109
27110               <span class="entry_type_hwlevel">[legacy] </span>
27111
27112
27113
27114                 <ul class="entry_type_enum">
27115                   <li>
27116                     <span class="entry_type_enum_name">LIMITED</span>
27117                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27118 better.<wbr/></p>
27119 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27120 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27121 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27122 support for color image capture.<wbr/> The only exception is that the device may
27123 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27124 measurements and not color images.<wbr/></p>
27125 <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>
27126 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27127 capturing a high-quality still image.<wbr/></p>
27128 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27129 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27130 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
27131 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27132 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27133 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27134                   </li>
27135                   <li>
27136                     <span class="entry_type_enum_name">FULL</span>
27137                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27138 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27139 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27140 <p>A <code>FULL</code> device will support below capabilities:</p>
27141 <ul>
27142 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27143   <code>BURST_<wbr/>CAPTURE</code>)</li>
27144 <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>
27145 <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>
27146 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27147   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27148 <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>
27149 <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>
27150 </ul>
27151 <p>Note:
27152 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27153 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27154 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27155                   </li>
27156                   <li>
27157                     <span class="entry_type_enum_name">LEGACY</span>
27158                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27159 <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>
27160 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27161 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27162 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27163 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27164 <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>
27165 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27166 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
27167 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27168 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27169 enable the flash.<wbr/></p></span>
27170                   </li>
27171                   <li>
27172                     <span class="entry_type_enum_name">3</span>
27173                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27174 FULL-level capabilities.<wbr/></p>
27175 <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
27176 <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>
27177 <p>The following additional capabilities are guaranteed to be supported:</p>
27178 <ul>
27179 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27180   <code>YUV_<wbr/>REPROCESSING</code>)</li>
27181 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27182   <code>RAW</code>)</li>
27183 </ul></span>
27184                   </li>
27185                 </ul>
27186
27187             </td> <!-- entry_type -->
27188
27189             <td class="entry_description">
27190               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27191             </td>
27192
27193             <td class="entry_units">
27194             </td>
27195
27196             <td class="entry_range">
27197             </td>
27198
27199             <td class="entry_hal_version">
27200               <p>3.<wbr/>2</p>
27201             </td>
27202
27203             <td class="entry_tags">
27204             </td>
27205
27206           </tr>
27207           <tr class="entries_header">
27208             <th class="th_details" colspan="6">Details</th>
27209           </tr>
27210           <tr class="entry_cont">
27211             <td class="entry_details" colspan="6">
27212               <p>The supported hardware level is a high-level description of the camera device's
27213 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
27214 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27215 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
27216 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27217 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27218 the following code snippet can be used:</p>
27219 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27220 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27221     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27222     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27223         return requiredLevel == deviceLevel;
27224     }
27225     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27226     return requiredLevel &lt;= deviceLevel;
27227 }
27228 </code></pre>
27229 <p>At a high level,<wbr/> the levels are:</p>
27230 <ul>
27231 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27232   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27233 <li><code>LIMITED</code> devices represent the
27234   baseline feature set,<wbr/> and may also include additional capabilities that are
27235   subsets of <code>FULL</code>.<wbr/></li>
27236 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27237   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27238 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27239   with additional output stream configurations.<wbr/></li>
27240 </ul>
27241 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
27242 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27243 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27244 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27245 <p>Some features are not part of any particular hardware level or capability and must be
27246 queried separately.<wbr/> These include:</p>
27247 <ul>
27248 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27249 <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>
27250 <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>
27251 <li>Optical or electrical image stabilization
27252   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27253    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27254 </ul>
27255             </td>
27256           </tr>
27257
27258           <tr class="entries_header">
27259             <th class="th_details" colspan="6">HAL Implementation Details</th>
27260           </tr>
27261           <tr class="entry_cont">
27262             <td class="entry_details" colspan="6">
27263               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27264 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27265 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27266 mode has hardware requirements roughly in line with those for a camera HAL device v1
27267 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27268 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27269 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27270 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27271 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27272 implemented by the camera framework code.<wbr/></p>
27273             </td>
27274           </tr>
27275
27276           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27277            <!-- end of entry -->
27278         
27279         
27280
27281       <!-- end of kind -->
27282       </tbody>
27283
27284   <!-- end of section -->
27285   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27286
27287
27288       <tr><td colspan="7" class="kind">controls</td></tr>
27289
27290       <thead class="entries_header">
27291         <tr>
27292           <th class="th_name">Property Name</th>
27293           <th class="th_type">Type</th>
27294           <th class="th_description">Description</th>
27295           <th class="th_units">Units</th>
27296           <th class="th_range">Range</th>
27297           <th class="th_hal_version">Initial HIDL HAL version</th>
27298           <th class="th_tags">Tags</th>
27299         </tr>
27300       </thead>
27301
27302       <tbody>
27303
27304         
27305
27306         
27307
27308         
27309
27310         
27311
27312                 
27313           <tr class="entry" id="controls_android.blackLevel.lock">
27314             <td class="entry_name
27315              " rowspan="5">
27316               android.<wbr/>black<wbr/>Level.<wbr/>lock
27317             </td>
27318             <td class="entry_type">
27319                 <span class="entry_type_name entry_type_name_enum">byte</span>
27320
27321               <span class="entry_type_visibility"> [public as boolean]</span>
27322
27323
27324               <span class="entry_type_hwlevel">[full] </span>
27325
27326
27327
27328                 <ul class="entry_type_enum">
27329                   <li>
27330                     <span class="entry_type_enum_name">OFF</span>
27331                   </li>
27332                   <li>
27333                     <span class="entry_type_enum_name">ON</span>
27334                   </li>
27335                 </ul>
27336
27337             </td> <!-- entry_type -->
27338
27339             <td class="entry_description">
27340               <p>Whether black-level compensation is locked
27341 to its current values,<wbr/> or is free to vary.<wbr/></p>
27342             </td>
27343
27344             <td class="entry_units">
27345             </td>
27346
27347             <td class="entry_range">
27348             </td>
27349
27350             <td class="entry_hal_version">
27351               <p>3.<wbr/>2</p>
27352             </td>
27353
27354             <td class="entry_tags">
27355               <ul class="entry_tags">
27356                   <li><a href="#tag_HAL2">HAL2</a></li>
27357               </ul>
27358             </td>
27359
27360           </tr>
27361           <tr class="entries_header">
27362             <th class="th_details" colspan="6">Details</th>
27363           </tr>
27364           <tr class="entry_cont">
27365             <td class="entry_details" colspan="6">
27366               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
27367 compensation will not change until the lock is set to
27368 <code>false</code> (OFF).<wbr/></p>
27369 <p>Since changes to certain capture parameters (such as
27370 exposure time) may require resetting of black level
27371 compensation,<wbr/> the camera device must report whether setting
27372 the black level lock was successful in the output result
27373 metadata.<wbr/></p>
27374 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
27375 <ul>
27376 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27377 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27378 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27379 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27380 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27381 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27382 </ul>
27383 <p>And the exposure change in Request 4 requires the camera
27384 device to reset the black level offsets,<wbr/> then the output
27385 result metadata is expected to be:</p>
27386 <ul>
27387 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27388 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27389 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27390 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
27391 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27392 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27393 </ul>
27394 <p>This indicates to the application that on frame 4,<wbr/> black
27395 levels were reset due to exposure value changes,<wbr/> and pixel
27396 values may not be consistent across captures.<wbr/></p>
27397 <p>The camera device will maintain the lock to the extent
27398 possible,<wbr/> only overriding the lock to OFF when changes to
27399 other request parameters require a black level recalculation
27400 or reset.<wbr/></p>
27401             </td>
27402           </tr>
27403
27404           <tr class="entries_header">
27405             <th class="th_details" colspan="6">HAL Implementation Details</th>
27406           </tr>
27407           <tr class="entry_cont">
27408             <td class="entry_details" colspan="6">
27409               <p>If for some reason black level locking is no longer possible
27410 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27411 black level offsets to be recalculated),<wbr/> then the HAL must
27412 override this request (and it must report 'OFF' when this
27413 does happen) until the next capture for which locking is
27414 possible again.<wbr/></p>
27415             </td>
27416           </tr>
27417
27418           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27419            <!-- end of entry -->
27420         
27421         
27422
27423       <!-- end of kind -->
27424       </tbody>
27425       <tr><td colspan="7" class="kind">dynamic</td></tr>
27426
27427       <thead class="entries_header">
27428         <tr>
27429           <th class="th_name">Property Name</th>
27430           <th class="th_type">Type</th>
27431           <th class="th_description">Description</th>
27432           <th class="th_units">Units</th>
27433           <th class="th_range">Range</th>
27434           <th class="th_hal_version">Initial HIDL HAL version</th>
27435           <th class="th_tags">Tags</th>
27436         </tr>
27437       </thead>
27438
27439       <tbody>
27440
27441         
27442
27443         
27444
27445         
27446
27447         
27448
27449                 
27450           <tr class="entry" id="dynamic_android.blackLevel.lock">
27451             <td class="entry_name
27452              " rowspan="5">
27453               android.<wbr/>black<wbr/>Level.<wbr/>lock
27454             </td>
27455             <td class="entry_type">
27456                 <span class="entry_type_name entry_type_name_enum">byte</span>
27457
27458               <span class="entry_type_visibility"> [public as boolean]</span>
27459
27460
27461               <span class="entry_type_hwlevel">[full] </span>
27462
27463
27464
27465                 <ul class="entry_type_enum">
27466                   <li>
27467                     <span class="entry_type_enum_name">OFF</span>
27468                   </li>
27469                   <li>
27470                     <span class="entry_type_enum_name">ON</span>
27471                   </li>
27472                 </ul>
27473
27474             </td> <!-- entry_type -->
27475
27476             <td class="entry_description">
27477               <p>Whether black-level compensation is locked
27478 to its current values,<wbr/> or is free to vary.<wbr/></p>
27479             </td>
27480
27481             <td class="entry_units">
27482             </td>
27483
27484             <td class="entry_range">
27485             </td>
27486
27487             <td class="entry_hal_version">
27488               <p>3.<wbr/>2</p>
27489             </td>
27490
27491             <td class="entry_tags">
27492               <ul class="entry_tags">
27493                   <li><a href="#tag_HAL2">HAL2</a></li>
27494               </ul>
27495             </td>
27496
27497           </tr>
27498           <tr class="entries_header">
27499             <th class="th_details" colspan="6">Details</th>
27500           </tr>
27501           <tr class="entry_cont">
27502             <td class="entry_details" colspan="6">
27503               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
27504 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
27505 a change in other capture settings forced the camera device to
27506 perform a black level reset.<wbr/></p>
27507             </td>
27508           </tr>
27509
27510           <tr class="entries_header">
27511             <th class="th_details" colspan="6">HAL Implementation Details</th>
27512           </tr>
27513           <tr class="entry_cont">
27514             <td class="entry_details" colspan="6">
27515               <p>If for some reason black level locking is no longer possible
27516 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27517 black level offsets to be recalculated),<wbr/> then the HAL must
27518 override this request (and it must report 'OFF' when this
27519 does happen) until the next capture for which locking is
27520 possible again.<wbr/></p>
27521             </td>
27522           </tr>
27523
27524           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27525            <!-- end of entry -->
27526         
27527         
27528
27529       <!-- end of kind -->
27530       </tbody>
27531
27532   <!-- end of section -->
27533   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
27534
27535
27536       <tr><td colspan="7" class="kind">dynamic</td></tr>
27537
27538       <thead class="entries_header">
27539         <tr>
27540           <th class="th_name">Property Name</th>
27541           <th class="th_type">Type</th>
27542           <th class="th_description">Description</th>
27543           <th class="th_units">Units</th>
27544           <th class="th_range">Range</th>
27545           <th class="th_hal_version">Initial HIDL HAL version</th>
27546           <th class="th_tags">Tags</th>
27547         </tr>
27548       </thead>
27549
27550       <tbody>
27551
27552         
27553
27554         
27555
27556         
27557
27558         
27559
27560                 
27561           <tr class="entry" id="dynamic_android.sync.frameNumber">
27562             <td class="entry_name
27563              " rowspan="5">
27564               android.<wbr/>sync.<wbr/>frame<wbr/>Number
27565             </td>
27566             <td class="entry_type">
27567                 <span class="entry_type_name entry_type_name_enum">int64</span>
27568
27569               <span class="entry_type_visibility"> [ndk_public]</span>
27570
27571
27572               <span class="entry_type_hwlevel">[legacy] </span>
27573
27574
27575
27576                 <ul class="entry_type_enum">
27577                   <li>
27578                     <span class="entry_type_enum_name">CONVERGING</span>
27579                     <span class="entry_type_enum_value">-1</span>
27580                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
27581 <p>Synchronization is in progress,<wbr/> and reading metadata from this
27582 result may include a mix of data that have taken effect since the
27583 last synchronization time.<wbr/></p>
27584 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
27585 this value will update to the actual frame number frame number
27586 the result is guaranteed to be synchronized to (as long as the
27587 request settings remain constant).<wbr/></p></span>
27588                   </li>
27589                   <li>
27590                     <span class="entry_type_enum_name">UNKNOWN</span>
27591                     <span class="entry_type_enum_value">-2</span>
27592                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
27593 <p>The result may have already converged,<wbr/> or it may be in
27594 progress.<wbr/>  Reading from this result may include some mix
27595 of settings from past requests.<wbr/></p>
27596 <p>After a settings change,<wbr/> the new settings will eventually all
27597 take effect for the output buffers and results.<wbr/> However,<wbr/> this
27598 value will not change when that happens.<wbr/> Altering settings
27599 rapidly may provide outcomes using mixes of settings from recent
27600 requests.<wbr/></p>
27601 <p>This value is intended primarily for backwards compatibility with
27602 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
27603                   </li>
27604                 </ul>
27605
27606             </td> <!-- entry_type -->
27607
27608             <td class="entry_description">
27609               <p>The frame number corresponding to the last request
27610 with which the output result (metadata + buffers) has been fully
27611 synchronized.<wbr/></p>
27612             </td>
27613
27614             <td class="entry_units">
27615             </td>
27616
27617             <td class="entry_range">
27618               <p>Either a non-negative value corresponding to a
27619 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
27620             </td>
27621
27622             <td class="entry_hal_version">
27623               <p>3.<wbr/>2</p>
27624             </td>
27625
27626             <td class="entry_tags">
27627               <ul class="entry_tags">
27628                   <li><a href="#tag_V1">V1</a></li>
27629               </ul>
27630             </td>
27631
27632           </tr>
27633           <tr class="entries_header">
27634             <th class="th_details" colspan="6">Details</th>
27635           </tr>
27636           <tr class="entry_cont">
27637             <td class="entry_details" colspan="6">
27638               <p>When a request is submitted to the camera device,<wbr/> there is usually a
27639 delay of several frames before the controls get applied.<wbr/> A camera
27640 device may either choose to account for this delay by implementing a
27641 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
27642 it may start streaming control changes that span over several frame
27643 boundaries.<wbr/></p>
27644 <p>In the latter case,<wbr/> whenever a request's settings change relative to
27645 the previous submitted request,<wbr/> the full set of changes may take
27646 multiple frame durations to fully take effect.<wbr/> Some settings may
27647 take effect sooner (in less frame durations) than others.<wbr/></p>
27648 <p>While a set of control changes are being propagated,<wbr/> this value
27649 will be CONVERGING.<wbr/></p>
27650 <p>Once it is fully known that a set of control changes have been
27651 finished propagating,<wbr/> and the resulting updated control settings
27652 have been read back by the camera device,<wbr/> this value will be set
27653 to a non-negative frame number (corresponding to the request to
27654 which the results have synchronized to).<wbr/></p>
27655 <p>Older camera device implementations may not have a way to detect
27656 when all camera controls have been applied,<wbr/> and will always set this
27657 value to UNKNOWN.<wbr/></p>
27658 <p>FULL capability devices will always have this value set to the
27659 frame number of the request corresponding to this result.<wbr/></p>
27660 <p><em>Further details</em>:</p>
27661 <ul>
27662 <li>Whenever a request differs from the last request,<wbr/> any future
27663 results not yet returned may have this value set to CONVERGING (this
27664 could include any in-progress captures not yet returned by the camera
27665 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
27666 <li>Submitting a series of multiple requests that differ from the
27667 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
27668 moves the new synchronization frame to the last non-repeating
27669 request (using the smallest frame number from the contiguous list of
27670 repeating requests).<wbr/></li>
27671 <li>Submitting the same request repeatedly will not change this value
27672 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
27673 <li>When this value changes to non-negative,<wbr/> that means that all of the
27674 metadata controls from the request have been applied,<wbr/> all of the
27675 metadata controls from the camera device have been read to the
27676 updated values (into the result),<wbr/> and all of the graphics buffers
27677 corresponding to this result are also synchronized to the request.<wbr/></li>
27678 </ul>
27679 <p><em>Pipeline considerations</em>:</p>
27680 <p>Submitting a request with updated controls relative to the previously
27681 submitted requests may also invalidate the synchronization state
27682 of all the results corresponding to currently in-flight requests.<wbr/></p>
27683 <p>In other words,<wbr/> results for this current request and up to
27684 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
27685 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
27686             </td>
27687           </tr>
27688
27689           <tr class="entries_header">
27690             <th class="th_details" colspan="6">HAL Implementation Details</th>
27691           </tr>
27692           <tr class="entry_cont">
27693             <td class="entry_details" colspan="6">
27694               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
27695 is also UNKNOWN.<wbr/></p>
27696 <p>FULL capability devices should simply set this value to the
27697 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
27698             </td>
27699           </tr>
27700
27701           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27702            <!-- end of entry -->
27703         
27704         
27705
27706       <!-- end of kind -->
27707       </tbody>
27708       <tr><td colspan="7" class="kind">static</td></tr>
27709
27710       <thead class="entries_header">
27711         <tr>
27712           <th class="th_name">Property Name</th>
27713           <th class="th_type">Type</th>
27714           <th class="th_description">Description</th>
27715           <th class="th_units">Units</th>
27716           <th class="th_range">Range</th>
27717           <th class="th_hal_version">Initial HIDL HAL version</th>
27718           <th class="th_tags">Tags</th>
27719         </tr>
27720       </thead>
27721
27722       <tbody>
27723
27724         
27725
27726         
27727
27728         
27729
27730         
27731
27732                 
27733           <tr class="entry" id="static_android.sync.maxLatency">
27734             <td class="entry_name
27735              " rowspan="5">
27736               android.<wbr/>sync.<wbr/>max<wbr/>Latency
27737             </td>
27738             <td class="entry_type">
27739                 <span class="entry_type_name entry_type_name_enum">int32</span>
27740
27741               <span class="entry_type_visibility"> [public]</span>
27742
27743
27744               <span class="entry_type_hwlevel">[legacy] </span>
27745
27746
27747
27748                 <ul class="entry_type_enum">
27749                   <li>
27750                     <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
27751                     <span class="entry_type_enum_value">0</span>
27752                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
27753 <p>Changing controls over multiple requests one after another will
27754 produce results that have those controls applied atomically
27755 each frame.<wbr/></p>
27756 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
27757                   </li>
27758                   <li>
27759                     <span class="entry_type_enum_name">UNKNOWN</span>
27760                     <span class="entry_type_enum_value">-1</span>
27761                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
27762 of the past requests applied to the camera settings.<wbr/></p>
27763 <p>By submitting a series of identical requests,<wbr/> the camera device
27764 will eventually have the camera settings applied,<wbr/> but it is
27765 unknown when that exact point will be.<wbr/></p>
27766 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
27767                   </li>
27768                 </ul>
27769
27770             </td> <!-- entry_type -->
27771
27772             <td class="entry_description">
27773               <p>The maximum number of frames that can occur after a request
27774 (different than the previous) has been submitted,<wbr/> and before the
27775 result's state becomes synchronized.<wbr/></p>
27776             </td>
27777
27778             <td class="entry_units">
27779               Frame counts
27780             </td>
27781
27782             <td class="entry_range">
27783               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
27784             </td>
27785
27786             <td class="entry_hal_version">
27787               <p>3.<wbr/>2</p>
27788             </td>
27789
27790             <td class="entry_tags">
27791               <ul class="entry_tags">
27792                   <li><a href="#tag_V1">V1</a></li>
27793               </ul>
27794             </td>
27795
27796           </tr>
27797           <tr class="entries_header">
27798             <th class="th_details" colspan="6">Details</th>
27799           </tr>
27800           <tr class="entry_cont">
27801             <td class="entry_details" colspan="6">
27802               <p>This defines the maximum distance (in number of metadata results),<wbr/>
27803 between the frame number of the request that has new controls to apply
27804 and the frame number of the result that has all the controls applied.<wbr/></p>
27805 <p>In other words this acts as an upper boundary for how many frames
27806 must occur before the camera device knows for a fact that the new
27807 submitted camera settings have been applied in outgoing frames.<wbr/></p>
27808             </td>
27809           </tr>
27810
27811           <tr class="entries_header">
27812             <th class="th_details" colspan="6">HAL Implementation Details</th>
27813           </tr>
27814           <tr class="entry_cont">
27815             <td class="entry_details" colspan="6">
27816               <p>For example if maxLatency was 2,<wbr/></p>
27817 <pre><code>initial request = X (repeating)
27818 request1 = X
27819 request2 = Y
27820 request3 = Y
27821 request4 = Y
27822
27823 where requestN has frameNumber N,<wbr/> and the first of the repeating
27824 initial request's has frameNumber F (and F &lt; 1).<wbr/>
27825
27826 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
27827 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
27828 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
27829 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
27830 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
27831
27832 where resultN has frameNumber N.<wbr/>
27833 </code></pre>
27834 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
27835 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
27836 <code>4 - 2 = 2</code>.<wbr/></p>
27837 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
27838 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
27839 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
27840 <p>LIMITED devices are strongly encouraged to use a non-negative
27841 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
27842 to know when sensor settings have been applied.<wbr/></p>
27843             </td>
27844           </tr>
27845
27846           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27847            <!-- end of entry -->
27848         
27849         
27850
27851       <!-- end of kind -->
27852       </tbody>
27853
27854   <!-- end of section -->
27855   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
27856
27857
27858       <tr><td colspan="7" class="kind">controls</td></tr>
27859
27860       <thead class="entries_header">
27861         <tr>
27862           <th class="th_name">Property Name</th>
27863           <th class="th_type">Type</th>
27864           <th class="th_description">Description</th>
27865           <th class="th_units">Units</th>
27866           <th class="th_range">Range</th>
27867           <th class="th_hal_version">Initial HIDL HAL version</th>
27868           <th class="th_tags">Tags</th>
27869         </tr>
27870       </thead>
27871
27872       <tbody>
27873
27874         
27875
27876         
27877
27878         
27879
27880         
27881
27882                 
27883           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
27884             <td class="entry_name
27885              " rowspan="3">
27886               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
27887             </td>
27888             <td class="entry_type">
27889                 <span class="entry_type_name">float</span>
27890
27891               <span class="entry_type_visibility"> [java_public]</span>
27892
27893
27894               <span class="entry_type_hwlevel">[limited] </span>
27895
27896
27897
27898
27899             </td> <!-- entry_type -->
27900
27901             <td class="entry_description">
27902               <p>The amount of exposure time increase factor applied to the original output
27903 frame by the application processing before sending for reprocessing.<wbr/></p>
27904             </td>
27905
27906             <td class="entry_units">
27907               Relative exposure time increase factor.<wbr/>
27908             </td>
27909
27910             <td class="entry_range">
27911               <p>&gt;= 1.<wbr/>0</p>
27912             </td>
27913
27914             <td class="entry_hal_version">
27915               <p>3.<wbr/>2</p>
27916             </td>
27917
27918             <td class="entry_tags">
27919               <ul class="entry_tags">
27920                   <li><a href="#tag_REPROC">REPROC</a></li>
27921               </ul>
27922             </td>
27923
27924           </tr>
27925           <tr class="entries_header">
27926             <th class="th_details" colspan="6">Details</th>
27927           </tr>
27928           <tr class="entry_cont">
27929             <td class="entry_details" colspan="6">
27930               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
27931 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
27932 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
27933 output frames to effectively reduce the noise to the same level as a frame that was
27934 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
27935 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
27936 the camera device is that the amount of noise in the image would be approximately what
27937 would be expected if the original capture parameters had been a sensitivity of
27938 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
27939 than S and T respectively.<wbr/> If the captured images were processed by the application
27940 before being sent for reprocessing,<wbr/> then the application may have used image processing
27941 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
27942 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
27943 control,<wbr/> the application can communicate to the camera device the actual noise level
27944 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
27945 device can select appropriate noise reduction and edge enhancement parameters to avoid
27946 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
27947 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
27948 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
27949 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
27950 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
27951 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
27952 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
27953 produce the best quality images.<wbr/></p>
27954 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
27955 buffer in a way that affects its effective exposure time.<wbr/></p>
27956 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
27957 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/>
27958 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
27959 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
27960             </td>
27961           </tr>
27962
27963
27964           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27965            <!-- end of entry -->
27966         
27967         
27968
27969       <!-- end of kind -->
27970       </tbody>
27971       <tr><td colspan="7" class="kind">dynamic</td></tr>
27972
27973       <thead class="entries_header">
27974         <tr>
27975           <th class="th_name">Property Name</th>
27976           <th class="th_type">Type</th>
27977           <th class="th_description">Description</th>
27978           <th class="th_units">Units</th>
27979           <th class="th_range">Range</th>
27980           <th class="th_hal_version">Initial HIDL HAL version</th>
27981           <th class="th_tags">Tags</th>
27982         </tr>
27983       </thead>
27984
27985       <tbody>
27986
27987         
27988
27989         
27990
27991         
27992
27993         
27994
27995                 
27996           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
27997             <td class="entry_name
27998              " rowspan="3">
27999               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28000             </td>
28001             <td class="entry_type">
28002                 <span class="entry_type_name">float</span>
28003
28004               <span class="entry_type_visibility"> [java_public]</span>
28005
28006
28007               <span class="entry_type_hwlevel">[limited] </span>
28008
28009
28010
28011
28012             </td> <!-- entry_type -->
28013
28014             <td class="entry_description">
28015               <p>The amount of exposure time increase factor applied to the original output
28016 frame by the application processing before sending for reprocessing.<wbr/></p>
28017             </td>
28018
28019             <td class="entry_units">
28020               Relative exposure time increase factor.<wbr/>
28021             </td>
28022
28023             <td class="entry_range">
28024               <p>&gt;= 1.<wbr/>0</p>
28025             </td>
28026
28027             <td class="entry_hal_version">
28028               <p>3.<wbr/>2</p>
28029             </td>
28030
28031             <td class="entry_tags">
28032               <ul class="entry_tags">
28033                   <li><a href="#tag_REPROC">REPROC</a></li>
28034               </ul>
28035             </td>
28036
28037           </tr>
28038           <tr class="entries_header">
28039             <th class="th_details" colspan="6">Details</th>
28040           </tr>
28041           <tr class="entry_cont">
28042             <td class="entry_details" colspan="6">
28043               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28044 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28045 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28046 output frames to effectively reduce the noise to the same level as a frame that was
28047 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28048 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28049 the camera device is that the amount of noise in the image would be approximately what
28050 would be expected if the original capture parameters had been a sensitivity of
28051 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28052 than S and T respectively.<wbr/> If the captured images were processed by the application
28053 before being sent for reprocessing,<wbr/> then the application may have used image processing
28054 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28055 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28056 control,<wbr/> the application can communicate to the camera device the actual noise level
28057 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28058 device can select appropriate noise reduction and edge enhancement parameters to avoid
28059 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28060 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28061 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28062 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28063 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28064 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28065 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28066 produce the best quality images.<wbr/></p>
28067 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28068 buffer in a way that affects its effective exposure time.<wbr/></p>
28069 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28070 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/>
28071 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28072 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28073             </td>
28074           </tr>
28075
28076
28077           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28078            <!-- end of entry -->
28079         
28080         
28081
28082       <!-- end of kind -->
28083       </tbody>
28084       <tr><td colspan="7" class="kind">static</td></tr>
28085
28086       <thead class="entries_header">
28087         <tr>
28088           <th class="th_name">Property Name</th>
28089           <th class="th_type">Type</th>
28090           <th class="th_description">Description</th>
28091           <th class="th_units">Units</th>
28092           <th class="th_range">Range</th>
28093           <th class="th_hal_version">Initial HIDL HAL version</th>
28094           <th class="th_tags">Tags</th>
28095         </tr>
28096       </thead>
28097
28098       <tbody>
28099
28100         
28101
28102         
28103
28104         
28105
28106         
28107
28108                 
28109           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28110             <td class="entry_name
28111              " rowspan="3">
28112               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28113             </td>
28114             <td class="entry_type">
28115                 <span class="entry_type_name">int32</span>
28116
28117               <span class="entry_type_visibility"> [java_public]</span>
28118
28119
28120               <span class="entry_type_hwlevel">[limited] </span>
28121
28122
28123
28124
28125             </td> <!-- entry_type -->
28126
28127             <td class="entry_description">
28128               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28129 reprocess capture request.<wbr/></p>
28130             </td>
28131
28132             <td class="entry_units">
28133               Number of frames.<wbr/>
28134             </td>
28135
28136             <td class="entry_range">
28137               <p>&lt;= 4</p>
28138             </td>
28139
28140             <td class="entry_hal_version">
28141               <p>3.<wbr/>2</p>
28142             </td>
28143
28144             <td class="entry_tags">
28145               <ul class="entry_tags">
28146                   <li><a href="#tag_REPROC">REPROC</a></li>
28147               </ul>
28148             </td>
28149
28150           </tr>
28151           <tr class="entries_header">
28152             <th class="th_details" colspan="6">Details</th>
28153           </tr>
28154           <tr class="entry_cont">
28155             <td class="entry_details" colspan="6">
28156               <p>The key describes the maximal interference that one reprocess (input) request
28157 can introduce to the camera simultaneous streaming of regular (output) capture
28158 requests,<wbr/> including repeating requests.<wbr/></p>
28159 <p>When a reprocessing capture request is submitted while a camera output repeating request
28160 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28161 pipeline for at least one frame duration so that the camera device is unable to process
28162 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28163 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28164 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28165 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28166 the worst-case number of frame stall introduced by one reprocess request with any kind of
28167 formats/<wbr/>sizes combination.<wbr/></p>
28168 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28169 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28170 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28171 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28172 YUV_<wbr/>REPROCESSING).<wbr/></p>
28173             </td>
28174           </tr>
28175
28176
28177           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28178            <!-- end of entry -->
28179         
28180         
28181
28182       <!-- end of kind -->
28183       </tbody>
28184
28185   <!-- end of section -->
28186   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28187
28188
28189       <tr><td colspan="7" class="kind">static</td></tr>
28190
28191       <thead class="entries_header">
28192         <tr>
28193           <th class="th_name">Property Name</th>
28194           <th class="th_type">Type</th>
28195           <th class="th_description">Description</th>
28196           <th class="th_units">Units</th>
28197           <th class="th_range">Range</th>
28198           <th class="th_hal_version">Initial HIDL HAL version</th>
28199           <th class="th_tags">Tags</th>
28200         </tr>
28201       </thead>
28202
28203       <tbody>
28204
28205         
28206
28207         
28208
28209         
28210
28211         
28212
28213                 
28214           <tr class="entry" id="static_android.depth.maxDepthSamples">
28215             <td class="entry_name
28216              " rowspan="3">
28217               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28218             </td>
28219             <td class="entry_type">
28220                 <span class="entry_type_name">int32</span>
28221
28222               <span class="entry_type_visibility"> [system]</span>
28223
28224
28225               <span class="entry_type_hwlevel">[limited] </span>
28226
28227
28228
28229
28230             </td> <!-- entry_type -->
28231
28232             <td class="entry_description">
28233               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28234             </td>
28235
28236             <td class="entry_units">
28237             </td>
28238
28239             <td class="entry_range">
28240             </td>
28241
28242             <td class="entry_hal_version">
28243               <p>3.<wbr/>2</p>
28244             </td>
28245
28246             <td class="entry_tags">
28247               <ul class="entry_tags">
28248                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28249               </ul>
28250             </td>
28251
28252           </tr>
28253           <tr class="entries_header">
28254             <th class="th_details" colspan="6">Details</th>
28255           </tr>
28256           <tr class="entry_cont">
28257             <td class="entry_details" colspan="6">
28258               <p>If a camera device supports outputting depth range data in the form of a depth point
28259 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
28260 number of points an output buffer may contain.<wbr/></p>
28261 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28262 If output in the depth point cloud format is not supported,<wbr/> this entry will
28263 not be defined.<wbr/></p>
28264             </td>
28265           </tr>
28266
28267
28268           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28269            <!-- end of entry -->
28270         
28271                 
28272           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28273             <td class="entry_name
28274              " rowspan="3">
28275               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28276             </td>
28277             <td class="entry_type">
28278                 <span class="entry_type_name entry_type_name_enum">int32</span>
28279                 <span class="entry_type_container">x</span>
28280
28281                 <span class="entry_type_array">
28282                   n x 4
28283                 </span>
28284               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28285
28286
28287               <span class="entry_type_hwlevel">[limited] </span>
28288
28289
28290
28291                 <ul class="entry_type_enum">
28292                   <li>
28293                     <span class="entry_type_enum_name">OUTPUT</span>
28294                   </li>
28295                   <li>
28296                     <span class="entry_type_enum_name">INPUT</span>
28297                   </li>
28298                 </ul>
28299
28300             </td> <!-- entry_type -->
28301
28302             <td class="entry_description">
28303               <p>The available depth dataspace stream
28304 configurations that this camera device supports
28305 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28306             </td>
28307
28308             <td class="entry_units">
28309             </td>
28310
28311             <td class="entry_range">
28312             </td>
28313
28314             <td class="entry_hal_version">
28315               <p>3.<wbr/>2</p>
28316             </td>
28317
28318             <td class="entry_tags">
28319               <ul class="entry_tags">
28320                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28321               </ul>
28322             </td>
28323
28324           </tr>
28325           <tr class="entries_header">
28326             <th class="th_details" colspan="6">Details</th>
28327           </tr>
28328           <tr class="entry_cont">
28329             <td class="entry_details" colspan="6">
28330               <p>These are output stream configurations for use with
28331 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
28332 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
28333 <p>Only devices that support depth output for at least
28334 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
28335 this entry.<wbr/></p>
28336 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
28337 sparse depth point cloud must report a single entry for
28338 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
28339 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
28340 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
28341             </td>
28342           </tr>
28343
28344
28345           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28346            <!-- end of entry -->
28347         
28348                 
28349           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
28350             <td class="entry_name
28351              " rowspan="3">
28352               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
28353             </td>
28354             <td class="entry_type">
28355                 <span class="entry_type_name">int64</span>
28356                 <span class="entry_type_container">x</span>
28357
28358                 <span class="entry_type_array">
28359                   4 x n
28360                 </span>
28361               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28362
28363
28364               <span class="entry_type_hwlevel">[limited] </span>
28365
28366
28367
28368
28369             </td> <!-- entry_type -->
28370
28371             <td class="entry_description">
28372               <p>This lists the minimum frame duration for each
28373 format/<wbr/>size combination for depth output formats.<wbr/></p>
28374             </td>
28375
28376             <td class="entry_units">
28377               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28378             </td>
28379
28380             <td class="entry_range">
28381             </td>
28382
28383             <td class="entry_hal_version">
28384               <p>3.<wbr/>2</p>
28385             </td>
28386
28387             <td class="entry_tags">
28388               <ul class="entry_tags">
28389                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28390               </ul>
28391             </td>
28392
28393           </tr>
28394           <tr class="entries_header">
28395             <th class="th_details" colspan="6">Details</th>
28396           </tr>
28397           <tr class="entry_cont">
28398             <td class="entry_details" colspan="6">
28399               <p>This should correspond to the frame duration when only that
28400 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
28401 set to either OFF or FAST.<wbr/></p>
28402 <p>When multiple streams are used in a request,<wbr/> the minimum frame
28403 duration will be max(individual stream min durations).<wbr/></p>
28404 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
28405 is the same regardless of whether the stream is input or output.<wbr/></p>
28406 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
28407 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
28408 calculating the max frame rate.<wbr/></p>
28409             </td>
28410           </tr>
28411
28412
28413           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28414            <!-- end of entry -->
28415         
28416                 
28417           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
28418             <td class="entry_name
28419              " rowspan="3">
28420               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
28421             </td>
28422             <td class="entry_type">
28423                 <span class="entry_type_name">int64</span>
28424                 <span class="entry_type_container">x</span>
28425
28426                 <span class="entry_type_array">
28427                   4 x n
28428                 </span>
28429               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28430
28431
28432               <span class="entry_type_hwlevel">[limited] </span>
28433
28434
28435
28436
28437             </td> <!-- entry_type -->
28438
28439             <td class="entry_description">
28440               <p>This lists the maximum stall duration for each
28441 output format/<wbr/>size combination for depth streams.<wbr/></p>
28442             </td>
28443
28444             <td class="entry_units">
28445               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28446             </td>
28447
28448             <td class="entry_range">
28449             </td>
28450
28451             <td class="entry_hal_version">
28452               <p>3.<wbr/>2</p>
28453             </td>
28454
28455             <td class="entry_tags">
28456               <ul class="entry_tags">
28457                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28458               </ul>
28459             </td>
28460
28461           </tr>
28462           <tr class="entries_header">
28463             <th class="th_details" colspan="6">Details</th>
28464           </tr>
28465           <tr class="entry_cont">
28466             <td class="entry_details" colspan="6">
28467               <p>A stall duration is how much extra time would get added
28468 to the normal minimum frame duration for a repeating request
28469 that has streams with non-zero stall.<wbr/></p>
28470 <p>This functions similarly to
28471 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
28472 streams.<wbr/></p>
28473 <p>All depth output stream formats may have a nonzero stall
28474 duration.<wbr/></p>
28475             </td>
28476           </tr>
28477
28478
28479           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28480            <!-- end of entry -->
28481         
28482                 
28483           <tr class="entry" id="static_android.depth.depthIsExclusive">
28484             <td class="entry_name
28485              " rowspan="3">
28486               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
28487             </td>
28488             <td class="entry_type">
28489                 <span class="entry_type_name entry_type_name_enum">byte</span>
28490
28491               <span class="entry_type_visibility"> [public as boolean]</span>
28492
28493
28494               <span class="entry_type_hwlevel">[limited] </span>
28495
28496
28497
28498                 <ul class="entry_type_enum">
28499                   <li>
28500                     <span class="entry_type_enum_name">FALSE</span>
28501                   </li>
28502                   <li>
28503                     <span class="entry_type_enum_name">TRUE</span>
28504                   </li>
28505                 </ul>
28506
28507             </td> <!-- entry_type -->
28508
28509             <td class="entry_description">
28510               <p>Indicates whether a capture request may target both a
28511 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
28512 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
28513             </td>
28514
28515             <td class="entry_units">
28516             </td>
28517
28518             <td class="entry_range">
28519             </td>
28520
28521             <td class="entry_hal_version">
28522               <p>3.<wbr/>2</p>
28523             </td>
28524
28525             <td class="entry_tags">
28526             </td>
28527
28528           </tr>
28529           <tr class="entries_header">
28530             <th class="th_details" colspan="6">Details</th>
28531           </tr>
28532           <tr class="entry_cont">
28533             <td class="entry_details" colspan="6">
28534               <p>If TRUE,<wbr/> including both depth and color outputs in a single
28535 capture request is not supported.<wbr/> An application must interleave color
28536 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
28537 of output.<wbr/></p>
28538 <p>Typically,<wbr/> this restriction exists on camera devices that
28539 need to emit a specific pattern or wavelength of light to
28540 measure depth values,<wbr/> which causes the color image to be
28541 corrupted during depth measurement.<wbr/></p>
28542             </td>
28543           </tr>
28544
28545
28546           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28547            <!-- end of entry -->
28548         
28549         
28550
28551       <!-- end of kind -->
28552       </tbody>
28553
28554   <!-- end of section -->
28555 <!-- </namespace> -->
28556   </table>
28557
28558   <div class="tags" id="tag_index">
28559     <h2>Tags</h2>
28560     <ul>
28561       <li id="tag_BC">BC - 
28562         Needed for backwards compatibility with old Java API
28563     
28564         <ul class="tags_entries">
28565           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
28566           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
28567           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
28568           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
28569           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
28570           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
28571           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
28572           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
28573           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
28574           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
28575           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
28576           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
28577           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
28578           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
28579           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
28580           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
28581           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
28582           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
28583           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
28584           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
28585           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
28586           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
28587           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
28588           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
28589           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
28590           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
28591           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
28592           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
28593           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
28594           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
28595           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
28596           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
28597           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
28598           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
28599           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
28600           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
28601           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
28602           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
28603           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
28604           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
28605           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
28606           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
28607           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28608           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28609           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
28610           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
28611           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
28612           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
28613           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
28614           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
28615           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
28616           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
28617           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
28618           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
28619           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28620           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28621           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28622           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
28623           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
28624           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
28625           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
28626           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
28627           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
28628           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
28629           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
28630           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
28631           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
28632         </ul>
28633       </li> <!-- tag_BC -->
28634       <li id="tag_V1">V1 - 
28635         New features for first camera 2 release (API1)
28636     
28637         <ul class="tags_entries">
28638           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
28639           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
28640           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28641           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28642           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28643           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28644           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
28645           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
28646           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
28647           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28648           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
28649           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
28650           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
28651           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28652           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
28653           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
28654           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
28655           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
28656           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
28657           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28658           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28659           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
28660           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
28661           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
28662           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
28663           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
28664           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
28665           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28666           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
28667           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
28668           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28669           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
28670           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28671           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
28672           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28673           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28674           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28675           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
28676           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
28677           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28678           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28679           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
28680           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
28681           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
28682           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28683         </ul>
28684       </li> <!-- tag_V1 -->
28685       <li id="tag_RAW">RAW - 
28686         Needed for useful RAW image processing and DNG file support
28687     
28688         <ul class="tags_entries">
28689           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28690           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28691           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
28692           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
28693           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28694           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
28695           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
28696           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
28697           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
28698           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
28699           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
28700           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
28701           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
28702           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
28703           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
28704           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
28705           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
28706           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
28707           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
28708           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
28709           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
28710           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
28711           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
28712           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
28713           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28714           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28715           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28716           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
28717           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28718         </ul>
28719       </li> <!-- tag_RAW -->
28720       <li id="tag_HAL2">HAL2 - 
28721         Entry is only used by camera device legacy HAL 2.x
28722     
28723         <ul class="tags_entries">
28724           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
28725           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
28726           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
28727           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
28728           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
28729         </ul>
28730       </li> <!-- tag_HAL2 -->
28731       <li id="tag_FULL">FULL - 
28732         Entry is required for full hardware level devices, and optional for other hardware levels
28733     
28734         <ul class="tags_entries">
28735           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28736         </ul>
28737       </li> <!-- tag_FULL -->
28738       <li id="tag_DEPTH">DEPTH - 
28739         Entry is required for the depth capability.
28740     
28741         <ul class="tags_entries">
28742           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
28743           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
28744           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
28745           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
28746           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
28747           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
28748           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
28749           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
28750         </ul>
28751       </li> <!-- tag_DEPTH -->
28752       <li id="tag_REPROC">REPROC - 
28753         Entry is required for the YUV or PRIVATE reprocessing capability.
28754     
28755         <ul class="tags_entries">
28756           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28757           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28758           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28759           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28760           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
28761           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
28762           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
28763           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
28764           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28765           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28766         </ul>
28767       </li> <!-- tag_REPROC -->
28768       <li id="tag_FUTURE">FUTURE - 
28769         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
28770         do not implement or use it, it may be revised for future.
28771     
28772         <ul class="tags_entries">
28773           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
28774           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
28775           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
28776           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
28777           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
28778           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
28779           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
28780           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
28781           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
28782           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
28783           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
28784           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
28785           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
28786           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
28787           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
28788           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
28789           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
28790           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
28791           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
28792           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
28793           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
28794         </ul>
28795       </li> <!-- tag_FUTURE -->
28796     </ul>
28797   </div>
28798
28799   [ <a href="#">top</a> ]
28800
28801 </body>
28802 </html>