OSDN Git Service

Merge "camera: Clarify ZSL supports" into oc-dev
[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: 20% }
47     .th_description { width: 20% }
48     .th_range { width: 10% }
49     td { font-size: 0.9em; }
50
51     /* hide the first thead, we need it there only to enforce column sizes */
52     .thead_dummy { visibility: hidden; }
53
54     /* Entry flair */
55     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56     .entry_name_deprecated { text-decoration:line-through; }
57
58     /* Entry type flair */
59     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61     .entry_type_visibility { font-weight: bolder; padding-left:1em}
62     .entry_type_synthetic { font-weight: bolder; color: #996600; }
63     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66     .entry_type_enum_notes:before { content:" - " }
67     .entry_type_enum_notes>p:first-child { display:inline; }
68     .entry_type_enum_value:before { content:" = " }
69     .entry_type_enum_value { font-family: monospace; }
70     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72     .entry_range_deprecated { font-weight: bolder; }
73
74     /* Entry tags flair */
75     .entry_tags ul { list-style-type: none; }
76
77     /* Entry details (full docs) flair */
78     .entry_details_header { font-weight: bold; background-color: #dddddd;
79       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81     /* Entry spacer flair */
82     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84     /* TODO: generate abbr element for each tag link? */
85     /* TODO for each x.y.z try to link it to the entry */
86
87   </style>
88
89   <style>
90
91     {
92       /* broken...
93          supposedly there is a bug in chrome that it lays out tables before
94          it knows its being printed, so the page-break-* styles are ignored
95          */
96         tr { page-break-after: always; page-break-inside: avoid; }
97     }
98
99   </style>
100 </head>
101
102
103
104 <body>
105   <h1>Android Camera HAL3.2 Properties</h1>
106
107
108   <h2>Table of Contents</h2>
109   <ul class="toc">
110     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111     <li>
112       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113       <ul class="toc_section">
114         <li>
115           <span class="toc_kind_header">controls</span>
116           <ul class="toc_section">
117             <li
118             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119             <li
120             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121             <li
122             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123             <li
124             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125           </ul>
126         </li>
127         <li>
128           <span class="toc_kind_header">dynamic</span>
129           <ul class="toc_section">
130             <li
131             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132             <li
133             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134             <li
135             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136             <li
137             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138           </ul>
139         </li>
140         <li>
141           <span class="toc_kind_header">static</span>
142           <ul class="toc_section">
143             <li
144             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145           </ul>
146         </li>
147       </ul> <!-- toc_section -->
148     </li>
149     <li>
150       <span class="toc_section_header"><a href="#section_control">control</a></span>
151       <ul class="toc_section">
152         <li>
153           <span class="toc_kind_header">controls</span>
154           <ul class="toc_section">
155             <li
156             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157             <li
158             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159             <li
160             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161             <li
162             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163             <li
164             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165             <li
166             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167             <li
168             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169             <li
170             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171             <li
172             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173             <li
174             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175             <li
176             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177             <li
178             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179             <li
180             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181             <li
182             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183             <li
184             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185             <li
186             ><a href="#controls_android.control.mode">android.control.mode</a></li>
187             <li
188             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189             <li
190             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191             <li
192             ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
193             <li
194             ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
195           </ul>
196         </li>
197         <li>
198           <span class="toc_kind_header">static</span>
199           <ul class="toc_section">
200             <li
201             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
202             <li
203             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
204             <li
205             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
206             <li
207             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
208             <li
209             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
210             <li
211             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
212             <li
213             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
214             <li
215             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
216             <li
217             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
218             <li
219             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
220             <li
221             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
222             <li
223             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
224             <li
225             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
226             <li
227             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
228             <li
229             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
230             <li
231             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
232             <li
233             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
234             <li
235             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
236             <li
237             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
238             <li
239             ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
240           </ul>
241         </li>
242         <li>
243           <span class="toc_kind_header">dynamic</span>
244           <ul class="toc_section">
245             <li
246                 class="toc_deprecated"
247             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
248             <li
249             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
250             <li
251             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
252             <li
253             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
254             <li
255             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
256             <li
257             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
258             <li
259             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
260             <li
261             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
262             <li
263             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
264             <li
265             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
266             <li
267             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
268             <li
269             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
270             <li
271             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
272             <li
273                 class="toc_deprecated"
274             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
275             <li
276             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
277             <li
278             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
279             <li
280             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
281             <li
282             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
283             <li
284             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
285             <li
286             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
287             <li
288             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
289             <li
290             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
291             <li
292             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
293             <li
294             ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
295             <li
296             ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
297           </ul>
298         </li>
299       </ul> <!-- toc_section -->
300     </li>
301     <li>
302       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
303       <ul class="toc_section">
304         <li>
305           <span class="toc_kind_header">controls</span>
306           <ul class="toc_section">
307             <li
308             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
309           </ul>
310         </li>
311       </ul> <!-- toc_section -->
312     </li>
313     <li>
314       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
315       <ul class="toc_section">
316         <li>
317           <span class="toc_kind_header">controls</span>
318           <ul class="toc_section">
319             <li
320             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
321             <li
322             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
323           </ul>
324         </li>
325         <li>
326           <span class="toc_kind_header">static</span>
327           <ul class="toc_section">
328             <li
329             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
330           </ul>
331         </li>
332         <li>
333           <span class="toc_kind_header">dynamic</span>
334           <ul class="toc_section">
335             <li
336             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
337           </ul>
338         </li>
339       </ul> <!-- toc_section -->
340     </li>
341     <li>
342       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
343       <ul class="toc_section">
344         <li>
345           <span class="toc_kind_header">controls</span>
346           <ul class="toc_section">
347             <li
348             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
349             <li
350             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
351             <li
352             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
353           </ul>
354         </li>
355         <li>
356           <span class="toc_kind_header">static</span>
357           <ul class="toc_section">
358
359             <li
360             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
361             <li
362             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
363
364             <li
365             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
366             <li
367             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
368           </ul>
369         </li>
370         <li>
371           <span class="toc_kind_header">dynamic</span>
372           <ul class="toc_section">
373             <li
374             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
375             <li
376             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
377             <li
378             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
379             <li
380             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
381           </ul>
382         </li>
383       </ul> <!-- toc_section -->
384     </li>
385     <li>
386       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
387       <ul class="toc_section">
388         <li>
389           <span class="toc_kind_header">controls</span>
390           <ul class="toc_section">
391             <li
392             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
393           </ul>
394         </li>
395         <li>
396           <span class="toc_kind_header">static</span>
397           <ul class="toc_section">
398             <li
399             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
400           </ul>
401         </li>
402         <li>
403           <span class="toc_kind_header">dynamic</span>
404           <ul class="toc_section">
405             <li
406             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
407           </ul>
408         </li>
409       </ul> <!-- toc_section -->
410     </li>
411     <li>
412       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
413       <ul class="toc_section">
414         <li>
415           <span class="toc_kind_header">controls</span>
416           <ul class="toc_section">
417             <li
418             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
419             <li
420             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
421             <li
422             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
423             <li
424             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
425             <li
426             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
427             <li
428             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
429             <li
430             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
431             <li
432             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
433           </ul>
434         </li>
435         <li>
436           <span class="toc_kind_header">static</span>
437           <ul class="toc_section">
438             <li
439             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
440             <li
441             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
442           </ul>
443         </li>
444         <li>
445           <span class="toc_kind_header">dynamic</span>
446           <ul class="toc_section">
447             <li
448             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
449             <li
450             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
451             <li
452             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
453             <li
454             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
455             <li
456             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
457             <li
458             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
459             <li
460             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
461             <li
462             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
463             <li
464             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
465           </ul>
466         </li>
467       </ul> <!-- toc_section -->
468     </li>
469     <li>
470       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
471       <ul class="toc_section">
472         <li>
473           <span class="toc_kind_header">controls</span>
474           <ul class="toc_section">
475             <li
476             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
477             <li
478             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
479             <li
480             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
481             <li
482             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
483             <li
484             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
485           </ul>
486         </li>
487         <li>
488           <span class="toc_kind_header">static</span>
489           <ul class="toc_section">
490
491             <li
492             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
493             <li
494             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
495             <li
496             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
497             <li
498             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
499             <li
500             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
501             <li
502             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
503             <li
504             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
505             <li
506             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
507
508             <li
509             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
510             <li
511             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
512             <li
513             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
514             <li
515             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
516             <li
517             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
518           </ul>
519         </li>
520         <li>
521           <span class="toc_kind_header">dynamic</span>
522           <ul class="toc_section">
523             <li
524             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
525             <li
526             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
527             <li
528             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
529             <li
530             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
531             <li
532             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
533             <li
534             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
535             <li
536             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
537             <li
538             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
539             <li
540             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
541             <li
542             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
543             <li
544             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
545           </ul>
546         </li>
547       </ul> <!-- toc_section -->
548     </li>
549     <li>
550       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
551       <ul class="toc_section">
552         <li>
553           <span class="toc_kind_header">controls</span>
554           <ul class="toc_section">
555             <li
556             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
557             <li
558             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
559           </ul>
560         </li>
561         <li>
562           <span class="toc_kind_header">static</span>
563           <ul class="toc_section">
564             <li
565             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
566           </ul>
567         </li>
568         <li>
569           <span class="toc_kind_header">dynamic</span>
570           <ul class="toc_section">
571             <li
572             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
573           </ul>
574         </li>
575       </ul> <!-- toc_section -->
576     </li>
577     <li>
578       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
579       <ul class="toc_section">
580         <li>
581           <span class="toc_kind_header">static</span>
582           <ul class="toc_section">
583             <li
584                 class="toc_deprecated"
585             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
586             <li
587                 class="toc_deprecated"
588             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
589             <li
590                 class="toc_deprecated"
591             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
592             <li
593                 class="toc_deprecated"
594             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
595           </ul>
596         </li>
597         <li>
598           <span class="toc_kind_header">dynamic</span>
599           <ul class="toc_section">
600             <li
601                 class="toc_deprecated"
602             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
603           </ul>
604         </li>
605       </ul> <!-- toc_section -->
606     </li>
607     <li>
608       <span class="toc_section_header"><a href="#section_request">request</a></span>
609       <ul class="toc_section">
610         <li>
611           <span class="toc_kind_header">controls</span>
612           <ul class="toc_section">
613             <li
614                 class="toc_deprecated"
615             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
616             <li
617             ><a href="#controls_android.request.id">android.request.id</a></li>
618             <li
619                 class="toc_deprecated"
620             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
621             <li
622             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
623             <li
624                 class="toc_deprecated"
625             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
626             <li
627                 class="toc_deprecated"
628             ><a href="#controls_android.request.type">android.request.type</a></li>
629           </ul>
630         </li>
631         <li>
632           <span class="toc_kind_header">static</span>
633           <ul class="toc_section">
634             <li
635             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
636             <li
637             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
638             <li
639             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
640             <li
641             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
642             <li
643                 class="toc_deprecated"
644             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
645             <li
646             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
647             <li
648             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
649             <li
650             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
651             <li
652             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
653             <li
654             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
655             <li
656             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
657             <li
658             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
659           </ul>
660         </li>
661         <li>
662           <span class="toc_kind_header">dynamic</span>
663           <ul class="toc_section">
664             <li
665                 class="toc_deprecated"
666             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
667             <li
668             ><a href="#dynamic_android.request.id">android.request.id</a></li>
669             <li
670             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
671             <li
672                 class="toc_deprecated"
673             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
674             <li
675             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
676           </ul>
677         </li>
678       </ul> <!-- toc_section -->
679     </li>
680     <li>
681       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
682       <ul class="toc_section">
683         <li>
684           <span class="toc_kind_header">controls</span>
685           <ul class="toc_section">
686             <li
687             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
688           </ul>
689         </li>
690         <li>
691           <span class="toc_kind_header">static</span>
692           <ul class="toc_section">
693             <li
694                 class="toc_deprecated"
695             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
696             <li
697                 class="toc_deprecated"
698             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
699             <li
700                 class="toc_deprecated"
701             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
702             <li
703             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
704             <li
705                 class="toc_deprecated"
706             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
707             <li
708                 class="toc_deprecated"
709             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
710             <li
711                 class="toc_deprecated"
712             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
713             <li
714                 class="toc_deprecated"
715             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
716             <li
717             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
718             <li
719             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
720             <li
721             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
722             <li
723             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
724             <li
725             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
726             <li
727             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
728           </ul>
729         </li>
730         <li>
731           <span class="toc_kind_header">dynamic</span>
732           <ul class="toc_section">
733             <li
734             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
735           </ul>
736         </li>
737       </ul> <!-- toc_section -->
738     </li>
739     <li>
740       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
741       <ul class="toc_section">
742         <li>
743           <span class="toc_kind_header">controls</span>
744           <ul class="toc_section">
745             <li
746             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
747             <li
748             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
749             <li
750             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
751             <li
752             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
753             <li
754             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
755           </ul>
756         </li>
757         <li>
758           <span class="toc_kind_header">static</span>
759           <ul class="toc_section">
760
761             <li
762             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
763             <li
764             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
765             <li
766             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
767             <li
768             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
769             <li
770             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
771             <li
772             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
773             <li
774             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
775             <li
776             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
777             <li
778             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
779             <li
780             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
781             <li
782             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
783
784             <li
785             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
786             <li
787             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
788             <li
789             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
790             <li
791             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
792             <li
793             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
794             <li
795             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
796             <li
797             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
798             <li
799             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
800             <li
801             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
802             <li
803             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
804             <li
805             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
806             <li
807             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
808             <li
809             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
810             <li
811             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
812             <li
813             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
814             <li
815             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
816           </ul>
817         </li>
818         <li>
819           <span class="toc_kind_header">dynamic</span>
820           <ul class="toc_section">
821             <li
822             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
823             <li
824             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
825             <li
826             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
827             <li
828             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
829             <li
830             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
831             <li
832             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
833             <li
834             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
835             <li
836             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
837             <li
838             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
839             <li
840             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
841             <li
842             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
843             <li
844             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
845             <li
846             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
847             <li
848             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
849             <li
850             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
851           </ul>
852         </li>
853       </ul> <!-- toc_section -->
854     </li>
855     <li>
856       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
857       <ul class="toc_section">
858         <li>
859           <span class="toc_kind_header">controls</span>
860           <ul class="toc_section">
861             <li
862             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
863             <li
864             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
865           </ul>
866         </li>
867         <li>
868           <span class="toc_kind_header">dynamic</span>
869           <ul class="toc_section">
870             <li
871             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
872           </ul>
873         </li>
874         <li>
875           <span class="toc_kind_header">static</span>
876           <ul class="toc_section">
877             <li
878             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
879           </ul>
880         </li>
881       </ul> <!-- toc_section -->
882     </li>
883     <li>
884       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
885       <ul class="toc_section">
886         <li>
887           <span class="toc_kind_header">controls</span>
888           <ul class="toc_section">
889             <li
890             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
891             <li
892             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
893             <li
894             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
895             <li
896             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
897             <li
898             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
899           </ul>
900         </li>
901         <li>
902           <span class="toc_kind_header">static</span>
903           <ul class="toc_section">
904
905             <li
906             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
907             <li
908             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
909             <li
910             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
911             <li
912             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
913             <li
914             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
915             <li
916             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
917             <li
918             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
919             <li
920             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
921
922           </ul>
923         </li>
924         <li>
925           <span class="toc_kind_header">dynamic</span>
926           <ul class="toc_section">
927             <li
928             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
929             <li
930             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
931             <li
932             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
933             <li
934             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
935             <li
936             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
937             <li
938             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
939             <li
940             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
941             <li
942             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
943             <li
944             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
945             <li
946             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
947             <li
948             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
949             <li
950             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
951             <li
952                 class="toc_deprecated"
953             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
954             <li
955                 class="toc_deprecated"
956             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
957             <li
958             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
959             <li
960             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
961             <li
962             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
963             <li
964             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
965           </ul>
966         </li>
967       </ul> <!-- toc_section -->
968     </li>
969     <li>
970       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
971       <ul class="toc_section">
972         <li>
973           <span class="toc_kind_header">controls</span>
974           <ul class="toc_section">
975             <li
976             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
977             <li
978             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
979             <li
980             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
981             <li
982             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
983             <li
984             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
985             <li
986             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
987             <li
988             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
989           </ul>
990         </li>
991         <li>
992           <span class="toc_kind_header">static</span>
993           <ul class="toc_section">
994             <li
995             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
996             <li
997             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
998           </ul>
999         </li>
1000         <li>
1001           <span class="toc_kind_header">dynamic</span>
1002           <ul class="toc_section">
1003             <li
1004             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1005             <li
1006             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1007             <li
1008             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1009             <li
1010             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1011             <li
1012             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1013             <li
1014             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1015             <li
1016             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1017           </ul>
1018         </li>
1019       </ul> <!-- toc_section -->
1020     </li>
1021     <li>
1022       <span class="toc_section_header"><a href="#section_led">led</a></span>
1023       <ul class="toc_section">
1024         <li>
1025           <span class="toc_kind_header">controls</span>
1026           <ul class="toc_section">
1027             <li
1028             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1029           </ul>
1030         </li>
1031         <li>
1032           <span class="toc_kind_header">dynamic</span>
1033           <ul class="toc_section">
1034             <li
1035             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1036           </ul>
1037         </li>
1038         <li>
1039           <span class="toc_kind_header">static</span>
1040           <ul class="toc_section">
1041             <li
1042             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1043           </ul>
1044         </li>
1045       </ul> <!-- toc_section -->
1046     </li>
1047     <li>
1048       <span class="toc_section_header"><a href="#section_info">info</a></span>
1049       <ul class="toc_section">
1050         <li>
1051           <span class="toc_kind_header">static</span>
1052           <ul class="toc_section">
1053             <li
1054             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1055           </ul>
1056         </li>
1057       </ul> <!-- toc_section -->
1058     </li>
1059     <li>
1060       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1061       <ul class="toc_section">
1062         <li>
1063           <span class="toc_kind_header">controls</span>
1064           <ul class="toc_section">
1065             <li
1066             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1067           </ul>
1068         </li>
1069         <li>
1070           <span class="toc_kind_header">dynamic</span>
1071           <ul class="toc_section">
1072             <li
1073             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1074           </ul>
1075         </li>
1076       </ul> <!-- toc_section -->
1077     </li>
1078     <li>
1079       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1080       <ul class="toc_section">
1081         <li>
1082           <span class="toc_kind_header">dynamic</span>
1083           <ul class="toc_section">
1084             <li
1085             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1086           </ul>
1087         </li>
1088         <li>
1089           <span class="toc_kind_header">static</span>
1090           <ul class="toc_section">
1091             <li
1092             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1093           </ul>
1094         </li>
1095       </ul> <!-- toc_section -->
1096     </li>
1097     <li>
1098       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1099       <ul class="toc_section">
1100         <li>
1101           <span class="toc_kind_header">controls</span>
1102           <ul class="toc_section">
1103             <li
1104             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1105           </ul>
1106         </li>
1107         <li>
1108           <span class="toc_kind_header">dynamic</span>
1109           <ul class="toc_section">
1110             <li
1111             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1112           </ul>
1113         </li>
1114         <li>
1115           <span class="toc_kind_header">static</span>
1116           <ul class="toc_section">
1117             <li
1118             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1119           </ul>
1120         </li>
1121       </ul> <!-- toc_section -->
1122     </li>
1123     <li>
1124       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1125       <ul class="toc_section">
1126         <li>
1127           <span class="toc_kind_header">static</span>
1128           <ul class="toc_section">
1129             <li
1130             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1131             <li
1132             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1133             <li
1134             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1135             <li
1136             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1137             <li
1138             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1139           </ul>
1140         </li>
1141       </ul> <!-- toc_section -->
1142     </li>
1143   </ul>
1144
1145
1146   <h1>Properties</h1>
1147   <table class="properties">
1148
1149     <thead class="thead_dummy">
1150       <tr>
1151         <th class="th_name">Property Name</th>
1152         <th class="th_type">Type</th>
1153         <th class="th_description">Description</th>
1154         <th class="th_units">Units</th>
1155         <th class="th_range">Range</th>
1156         <th class="th_tags">Tags</th>
1157       </tr>
1158     </thead> <!-- so that the first occurrence of thead is not
1159                          above the first occurrence of tr -->
1160 <!-- <namespace name="android"> -->
1161   <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1162
1163
1164       <tr><td colspan="6" class="kind">controls</td></tr>
1165
1166       <thead class="entries_header">
1167         <tr>
1168           <th class="th_name">Property Name</th>
1169           <th class="th_type">Type</th>
1170           <th class="th_description">Description</th>
1171           <th class="th_units">Units</th>
1172           <th class="th_range">Range</th>
1173           <th class="th_tags">Tags</th>
1174         </tr>
1175       </thead>
1176
1177       <tbody>
1178
1179         
1180
1181         
1182
1183         
1184
1185         
1186
1187                 
1188           <tr class="entry" id="controls_android.colorCorrection.mode">
1189             <td class="entry_name
1190              " rowspan="5">
1191               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1192             </td>
1193             <td class="entry_type">
1194                 <span class="entry_type_name entry_type_name_enum">byte</span>
1195
1196               <span class="entry_type_visibility"> [public]</span>
1197
1198
1199               <span class="entry_type_hwlevel">[full] </span>
1200
1201
1202
1203                 <ul class="entry_type_enum">
1204                   <li>
1205                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1206                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1207 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1208 <p>All advanced white balance adjustments (not specified
1209 by our white balance pipeline) must be disabled.<wbr/></p>
1210 <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
1211 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1212 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1213                   </li>
1214                   <li>
1215                     <span class="entry_type_enum_name">FAST</span>
1216                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1217 capture rate relative to sensor raw output.<wbr/></p>
1218 <p>Advanced white balance adjustments above and beyond
1219 the specified white balance pipeline may be applied.<wbr/></p>
1220 <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
1221 the camera device uses the last frame's AWB values
1222 (or defaults if AWB has never been run).<wbr/></p></span>
1223                   </li>
1224                   <li>
1225                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1226                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1227 quality but the capture rate might be reduced (relative to sensor
1228 raw output rate)</p>
1229 <p>Advanced white balance adjustments above and beyond
1230 the specified white balance pipeline may be applied.<wbr/></p>
1231 <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
1232 the camera device uses the last frame's AWB values
1233 (or defaults if AWB has never been run).<wbr/></p></span>
1234                   </li>
1235                 </ul>
1236
1237             </td> <!-- entry_type -->
1238
1239             <td class="entry_description">
1240               <p>The mode control selects how the image data is converted from the
1241 sensor's native color into linear sRGB color.<wbr/></p>
1242             </td>
1243
1244             <td class="entry_units">
1245             </td>
1246
1247             <td class="entry_range">
1248             </td>
1249
1250             <td class="entry_tags">
1251             </td>
1252
1253           </tr>
1254           <tr class="entries_header">
1255             <th class="th_details" colspan="5">Details</th>
1256           </tr>
1257           <tr class="entry_cont">
1258             <td class="entry_details" colspan="5">
1259               <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
1260 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1261 application controls how the color mapping is performed.<wbr/></p>
1262 <p>We define the expected processing pipeline below.<wbr/> For consistency
1263 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1264 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1265 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1266 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1267 camera device (in the results) and be roughly correct.<wbr/></p>
1268 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1269 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1270 as what was produced by the camera device in the earlier frame.<wbr/></p>
1271 <p>The expected processing pipeline is as follows:</p>
1272 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1273 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1274 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1275 matrix (applied after demosaic).<wbr/></p>
1276 <p>The 4-channel white-balance gains are defined as:</p>
1277 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1278 </code></pre>
1279 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1280 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1281 These may be identical for a given camera device implementation; if
1282 the camera device does not support a separate gain for even/<wbr/>odd green
1283 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1284 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1285 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1286 <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 ]
1287 </code></pre>
1288 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1289 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1290 <p>with colors as follows:</p>
1291 <pre><code>r' = I0r + I1g + I2b
1292 g' = I3r + I4g + I5b
1293 b' = I6r + I7g + I8b
1294 </code></pre>
1295 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1296 values are clipped to fit within the range.<wbr/></p>
1297             </td>
1298           </tr>
1299
1300           <tr class="entries_header">
1301             <th class="th_details" colspan="5">HAL Implementation Details</th>
1302           </tr>
1303           <tr class="entry_cont">
1304             <td class="entry_details" colspan="5">
1305               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1306 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1307 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1308 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1309             </td>
1310           </tr>
1311
1312           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1313            <!-- end of entry -->
1314         
1315                 
1316           <tr class="entry" id="controls_android.colorCorrection.transform">
1317             <td class="entry_name
1318              " rowspan="3">
1319               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1320             </td>
1321             <td class="entry_type">
1322                 <span class="entry_type_name">rational</span>
1323                 <span class="entry_type_container">x</span>
1324
1325                 <span class="entry_type_array">
1326                   3 x 3
1327                 </span>
1328               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1329
1330
1331               <span class="entry_type_hwlevel">[full] </span>
1332
1333
1334                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1335
1336
1337             </td> <!-- entry_type -->
1338
1339             <td class="entry_description">
1340               <p>A color transform matrix to use to transform
1341 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1342             </td>
1343
1344             <td class="entry_units">
1345               Unitless scale factors
1346             </td>
1347
1348             <td class="entry_range">
1349             </td>
1350
1351             <td class="entry_tags">
1352             </td>
1353
1354           </tr>
1355           <tr class="entries_header">
1356             <th class="th_details" colspan="5">Details</th>
1357           </tr>
1358           <tr class="entry_cont">
1359             <td class="entry_details" colspan="5">
1360               <p>This matrix is either set by the camera device when the request
1361 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1362 directly by the application in the request when the
1363 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1364 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1365 for precision issues; the final rounded matrix should be reported back
1366 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1367 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1368 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1369 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1370 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1371             </td>
1372           </tr>
1373
1374
1375           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1376            <!-- end of entry -->
1377         
1378                 
1379           <tr class="entry" id="controls_android.colorCorrection.gains">
1380             <td class="entry_name
1381              " rowspan="5">
1382               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1383             </td>
1384             <td class="entry_type">
1385                 <span class="entry_type_name">float</span>
1386                 <span class="entry_type_container">x</span>
1387
1388                 <span class="entry_type_array">
1389                   4
1390                 </span>
1391               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1392
1393
1394               <span class="entry_type_hwlevel">[full] </span>
1395
1396
1397                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1398
1399
1400             </td> <!-- entry_type -->
1401
1402             <td class="entry_description">
1403               <p>Gains applying to Bayer raw color channels for
1404 white-balance.<wbr/></p>
1405             </td>
1406
1407             <td class="entry_units">
1408               Unitless gain factors
1409             </td>
1410
1411             <td class="entry_range">
1412             </td>
1413
1414             <td class="entry_tags">
1415             </td>
1416
1417           </tr>
1418           <tr class="entries_header">
1419             <th class="th_details" colspan="5">Details</th>
1420           </tr>
1421           <tr class="entry_cont">
1422             <td class="entry_details" colspan="5">
1423               <p>These per-channel gains are either set by the camera device
1424 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1425 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1426 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1427 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1428 <p>The gains in the result metadata are the gains actually
1429 applied by the camera device to the current frame.<wbr/></p>
1430 <p>The valid range of gains varies on different devices,<wbr/> but gains
1431 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1432 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1433 this can create color artifacts.<wbr/></p>
1434             </td>
1435           </tr>
1436
1437           <tr class="entries_header">
1438             <th class="th_details" colspan="5">HAL Implementation Details</th>
1439           </tr>
1440           <tr class="entry_cont">
1441             <td class="entry_details" colspan="5">
1442               <p>The 4-channel white-balance gains are defined in
1443 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1444 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1445 is the gain for green pixels on the odd rows.<wbr/></p>
1446 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1447 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1448 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1449             </td>
1450           </tr>
1451
1452           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1453            <!-- end of entry -->
1454         
1455                 
1456           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1457             <td class="entry_name
1458              " rowspan="3">
1459               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1460             </td>
1461             <td class="entry_type">
1462                 <span class="entry_type_name entry_type_name_enum">byte</span>
1463
1464               <span class="entry_type_visibility"> [public]</span>
1465
1466
1467               <span class="entry_type_hwlevel">[legacy] </span>
1468
1469
1470
1471                 <ul class="entry_type_enum">
1472                   <li>
1473                     <span class="entry_type_enum_name">OFF</span>
1474                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1475                   </li>
1476                   <li>
1477                     <span class="entry_type_enum_name">FAST</span>
1478                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1479 relative to sensor raw output.<wbr/></p></span>
1480                   </li>
1481                   <li>
1482                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1483                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1484 reduced (relative to sensor raw output rate)</p></span>
1485                   </li>
1486                 </ul>
1487
1488             </td> <!-- entry_type -->
1489
1490             <td class="entry_description">
1491               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1492             </td>
1493
1494             <td class="entry_units">
1495             </td>
1496
1497             <td class="entry_range">
1498               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1499             </td>
1500
1501             <td class="entry_tags">
1502             </td>
1503
1504           </tr>
1505           <tr class="entries_header">
1506             <th class="th_details" colspan="5">Details</th>
1507           </tr>
1508           <tr class="entry_cont">
1509             <td class="entry_details" colspan="5">
1510               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1511 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1512 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1513 minimize the chromatic artifacts that may occur along the object boundaries in an
1514 image.<wbr/></p>
1515 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1516 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1517 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1518 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1519 applying aberration correction.<wbr/></p>
1520 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1521             </td>
1522           </tr>
1523
1524
1525           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1526            <!-- end of entry -->
1527         
1528         
1529
1530       <!-- end of kind -->
1531       </tbody>
1532       <tr><td colspan="6" class="kind">dynamic</td></tr>
1533
1534       <thead class="entries_header">
1535         <tr>
1536           <th class="th_name">Property Name</th>
1537           <th class="th_type">Type</th>
1538           <th class="th_description">Description</th>
1539           <th class="th_units">Units</th>
1540           <th class="th_range">Range</th>
1541           <th class="th_tags">Tags</th>
1542         </tr>
1543       </thead>
1544
1545       <tbody>
1546
1547         
1548
1549         
1550
1551         
1552
1553         
1554
1555                 
1556           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1557             <td class="entry_name
1558              " rowspan="5">
1559               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1560             </td>
1561             <td class="entry_type">
1562                 <span class="entry_type_name entry_type_name_enum">byte</span>
1563
1564               <span class="entry_type_visibility"> [public]</span>
1565
1566
1567               <span class="entry_type_hwlevel">[full] </span>
1568
1569
1570
1571                 <ul class="entry_type_enum">
1572                   <li>
1573                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1574                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1575 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1576 <p>All advanced white balance adjustments (not specified
1577 by our white balance pipeline) must be disabled.<wbr/></p>
1578 <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
1579 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1580 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1581                   </li>
1582                   <li>
1583                     <span class="entry_type_enum_name">FAST</span>
1584                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1585 capture rate relative to sensor raw output.<wbr/></p>
1586 <p>Advanced white balance adjustments above and beyond
1587 the specified white balance pipeline may be applied.<wbr/></p>
1588 <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
1589 the camera device uses the last frame's AWB values
1590 (or defaults if AWB has never been run).<wbr/></p></span>
1591                   </li>
1592                   <li>
1593                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1594                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1595 quality but the capture rate might be reduced (relative to sensor
1596 raw output rate)</p>
1597 <p>Advanced white balance adjustments above and beyond
1598 the specified white balance pipeline may be applied.<wbr/></p>
1599 <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
1600 the camera device uses the last frame's AWB values
1601 (or defaults if AWB has never been run).<wbr/></p></span>
1602                   </li>
1603                 </ul>
1604
1605             </td> <!-- entry_type -->
1606
1607             <td class="entry_description">
1608               <p>The mode control selects how the image data is converted from the
1609 sensor's native color into linear sRGB color.<wbr/></p>
1610             </td>
1611
1612             <td class="entry_units">
1613             </td>
1614
1615             <td class="entry_range">
1616             </td>
1617
1618             <td class="entry_tags">
1619             </td>
1620
1621           </tr>
1622           <tr class="entries_header">
1623             <th class="th_details" colspan="5">Details</th>
1624           </tr>
1625           <tr class="entry_cont">
1626             <td class="entry_details" colspan="5">
1627               <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
1628 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1629 application controls how the color mapping is performed.<wbr/></p>
1630 <p>We define the expected processing pipeline below.<wbr/> For consistency
1631 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1632 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1633 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1634 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1635 camera device (in the results) and be roughly correct.<wbr/></p>
1636 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1637 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1638 as what was produced by the camera device in the earlier frame.<wbr/></p>
1639 <p>The expected processing pipeline is as follows:</p>
1640 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1641 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1642 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1643 matrix (applied after demosaic).<wbr/></p>
1644 <p>The 4-channel white-balance gains are defined as:</p>
1645 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1646 </code></pre>
1647 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1648 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1649 These may be identical for a given camera device implementation; if
1650 the camera device does not support a separate gain for even/<wbr/>odd green
1651 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1652 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1653 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1654 <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 ]
1655 </code></pre>
1656 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1657 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1658 <p>with colors as follows:</p>
1659 <pre><code>r' = I0r + I1g + I2b
1660 g' = I3r + I4g + I5b
1661 b' = I6r + I7g + I8b
1662 </code></pre>
1663 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1664 values are clipped to fit within the range.<wbr/></p>
1665             </td>
1666           </tr>
1667
1668           <tr class="entries_header">
1669             <th class="th_details" colspan="5">HAL Implementation Details</th>
1670           </tr>
1671           <tr class="entry_cont">
1672             <td class="entry_details" colspan="5">
1673               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1674 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1675 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1676 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1677             </td>
1678           </tr>
1679
1680           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1681            <!-- end of entry -->
1682         
1683                 
1684           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1685             <td class="entry_name
1686              " rowspan="3">
1687               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1688             </td>
1689             <td class="entry_type">
1690                 <span class="entry_type_name">rational</span>
1691                 <span class="entry_type_container">x</span>
1692
1693                 <span class="entry_type_array">
1694                   3 x 3
1695                 </span>
1696               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1697
1698
1699               <span class="entry_type_hwlevel">[full] </span>
1700
1701
1702                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1703
1704
1705             </td> <!-- entry_type -->
1706
1707             <td class="entry_description">
1708               <p>A color transform matrix to use to transform
1709 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1710             </td>
1711
1712             <td class="entry_units">
1713               Unitless scale factors
1714             </td>
1715
1716             <td class="entry_range">
1717             </td>
1718
1719             <td class="entry_tags">
1720             </td>
1721
1722           </tr>
1723           <tr class="entries_header">
1724             <th class="th_details" colspan="5">Details</th>
1725           </tr>
1726           <tr class="entry_cont">
1727             <td class="entry_details" colspan="5">
1728               <p>This matrix is either set by the camera device when the request
1729 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1730 directly by the application in the request when the
1731 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1732 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1733 for precision issues; the final rounded matrix should be reported back
1734 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1735 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1736 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1737 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1738 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1739             </td>
1740           </tr>
1741
1742
1743           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1744            <!-- end of entry -->
1745         
1746                 
1747           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1748             <td class="entry_name
1749              " rowspan="5">
1750               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1751             </td>
1752             <td class="entry_type">
1753                 <span class="entry_type_name">float</span>
1754                 <span class="entry_type_container">x</span>
1755
1756                 <span class="entry_type_array">
1757                   4
1758                 </span>
1759               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1760
1761
1762               <span class="entry_type_hwlevel">[full] </span>
1763
1764
1765                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1766
1767
1768             </td> <!-- entry_type -->
1769
1770             <td class="entry_description">
1771               <p>Gains applying to Bayer raw color channels for
1772 white-balance.<wbr/></p>
1773             </td>
1774
1775             <td class="entry_units">
1776               Unitless gain factors
1777             </td>
1778
1779             <td class="entry_range">
1780             </td>
1781
1782             <td class="entry_tags">
1783             </td>
1784
1785           </tr>
1786           <tr class="entries_header">
1787             <th class="th_details" colspan="5">Details</th>
1788           </tr>
1789           <tr class="entry_cont">
1790             <td class="entry_details" colspan="5">
1791               <p>These per-channel gains are either set by the camera device
1792 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1793 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1794 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1795 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1796 <p>The gains in the result metadata are the gains actually
1797 applied by the camera device to the current frame.<wbr/></p>
1798 <p>The valid range of gains varies on different devices,<wbr/> but gains
1799 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1800 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1801 this can create color artifacts.<wbr/></p>
1802             </td>
1803           </tr>
1804
1805           <tr class="entries_header">
1806             <th class="th_details" colspan="5">HAL Implementation Details</th>
1807           </tr>
1808           <tr class="entry_cont">
1809             <td class="entry_details" colspan="5">
1810               <p>The 4-channel white-balance gains are defined in
1811 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1812 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1813 is the gain for green pixels on the odd rows.<wbr/></p>
1814 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1815 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1816 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1817             </td>
1818           </tr>
1819
1820           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1821            <!-- end of entry -->
1822         
1823                 
1824           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1825             <td class="entry_name
1826              " rowspan="3">
1827               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1828             </td>
1829             <td class="entry_type">
1830                 <span class="entry_type_name entry_type_name_enum">byte</span>
1831
1832               <span class="entry_type_visibility"> [public]</span>
1833
1834
1835               <span class="entry_type_hwlevel">[legacy] </span>
1836
1837
1838
1839                 <ul class="entry_type_enum">
1840                   <li>
1841                     <span class="entry_type_enum_name">OFF</span>
1842                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1843                   </li>
1844                   <li>
1845                     <span class="entry_type_enum_name">FAST</span>
1846                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1847 relative to sensor raw output.<wbr/></p></span>
1848                   </li>
1849                   <li>
1850                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1851                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1852 reduced (relative to sensor raw output rate)</p></span>
1853                   </li>
1854                 </ul>
1855
1856             </td> <!-- entry_type -->
1857
1858             <td class="entry_description">
1859               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1860             </td>
1861
1862             <td class="entry_units">
1863             </td>
1864
1865             <td class="entry_range">
1866               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1867             </td>
1868
1869             <td class="entry_tags">
1870             </td>
1871
1872           </tr>
1873           <tr class="entries_header">
1874             <th class="th_details" colspan="5">Details</th>
1875           </tr>
1876           <tr class="entry_cont">
1877             <td class="entry_details" colspan="5">
1878               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1879 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1880 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1881 minimize the chromatic artifacts that may occur along the object boundaries in an
1882 image.<wbr/></p>
1883 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1884 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1885 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1886 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1887 applying aberration correction.<wbr/></p>
1888 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1889             </td>
1890           </tr>
1891
1892
1893           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1894            <!-- end of entry -->
1895         
1896         
1897
1898       <!-- end of kind -->
1899       </tbody>
1900       <tr><td colspan="6" class="kind">static</td></tr>
1901
1902       <thead class="entries_header">
1903         <tr>
1904           <th class="th_name">Property Name</th>
1905           <th class="th_type">Type</th>
1906           <th class="th_description">Description</th>
1907           <th class="th_units">Units</th>
1908           <th class="th_range">Range</th>
1909           <th class="th_tags">Tags</th>
1910         </tr>
1911       </thead>
1912
1913       <tbody>
1914
1915         
1916
1917         
1918
1919         
1920
1921         
1922
1923                 
1924           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1925             <td class="entry_name
1926              " rowspan="5">
1927               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1928             </td>
1929             <td class="entry_type">
1930                 <span class="entry_type_name">byte</span>
1931                 <span class="entry_type_container">x</span>
1932
1933                 <span class="entry_type_array">
1934                   n
1935                 </span>
1936               <span class="entry_type_visibility"> [public as enumList]</span>
1937
1938
1939               <span class="entry_type_hwlevel">[legacy] </span>
1940
1941
1942                 <div class="entry_type_notes">list of enums</div>
1943
1944
1945             </td> <!-- entry_type -->
1946
1947             <td class="entry_description">
1948               <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
1949 supported by this camera device.<wbr/></p>
1950             </td>
1951
1952             <td class="entry_units">
1953             </td>
1954
1955             <td class="entry_range">
1956               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1957             </td>
1958
1959             <td class="entry_tags">
1960               <ul class="entry_tags">
1961                   <li><a href="#tag_V1">V1</a></li>
1962               </ul>
1963             </td>
1964
1965           </tr>
1966           <tr class="entries_header">
1967             <th class="th_details" colspan="5">Details</th>
1968           </tr>
1969           <tr class="entry_cont">
1970             <td class="entry_details" colspan="5">
1971               <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
1972 aberration correction modes are available for a device,<wbr/> this list will solely include
1973 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1974 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1975 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1976 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
1977             </td>
1978           </tr>
1979
1980           <tr class="entries_header">
1981             <th class="th_details" colspan="5">HAL Implementation Details</th>
1982           </tr>
1983           <tr class="entry_cont">
1984             <td class="entry_details" colspan="5">
1985               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1986 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1987 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1988 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1989             </td>
1990           </tr>
1991
1992           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1993            <!-- end of entry -->
1994         
1995         
1996
1997       <!-- end of kind -->
1998       </tbody>
1999
2000   <!-- end of section -->
2001   <tr><td colspan="6" id="section_control" class="section">control</td></tr>
2002
2003
2004       <tr><td colspan="6" class="kind">controls</td></tr>
2005
2006       <thead class="entries_header">
2007         <tr>
2008           <th class="th_name">Property Name</th>
2009           <th class="th_type">Type</th>
2010           <th class="th_description">Description</th>
2011           <th class="th_units">Units</th>
2012           <th class="th_range">Range</th>
2013           <th class="th_tags">Tags</th>
2014         </tr>
2015       </thead>
2016
2017       <tbody>
2018
2019         
2020
2021         
2022
2023         
2024
2025         
2026
2027                 
2028           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2029             <td class="entry_name
2030              " rowspan="5">
2031               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2032             </td>
2033             <td class="entry_type">
2034                 <span class="entry_type_name entry_type_name_enum">byte</span>
2035
2036               <span class="entry_type_visibility"> [public]</span>
2037
2038
2039               <span class="entry_type_hwlevel">[legacy] </span>
2040
2041
2042
2043                 <ul class="entry_type_enum">
2044                   <li>
2045                     <span class="entry_type_enum_name">OFF</span>
2046                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2047 avoid banding problems.<wbr/></p></span>
2048                   </li>
2049                   <li>
2050                     <span class="entry_type_enum_name">50HZ</span>
2051                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2052 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2053                   </li>
2054                   <li>
2055                     <span class="entry_type_enum_name">60HZ</span>
2056                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2057 avoid banding problems with 60Hz illumination
2058 sources.<wbr/></p></span>
2059                   </li>
2060                   <li>
2061                     <span class="entry_type_enum_name">AUTO</span>
2062                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2063 antibanding routine to the current illumination
2064 condition.<wbr/> This is the default mode if AUTO is
2065 available on given camera device.<wbr/></p></span>
2066                   </li>
2067                 </ul>
2068
2069             </td> <!-- entry_type -->
2070
2071             <td class="entry_description">
2072               <p>The desired setting for the camera device's auto-exposure
2073 algorithm's antibanding compensation.<wbr/></p>
2074             </td>
2075
2076             <td class="entry_units">
2077             </td>
2078
2079             <td class="entry_range">
2080               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2081             </td>
2082
2083             <td class="entry_tags">
2084               <ul class="entry_tags">
2085                   <li><a href="#tag_BC">BC</a></li>
2086               </ul>
2087             </td>
2088
2089           </tr>
2090           <tr class="entries_header">
2091             <th class="th_details" colspan="5">Details</th>
2092           </tr>
2093           <tr class="entry_cont">
2094             <td class="entry_details" colspan="5">
2095               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2096 lights,<wbr/> flicker at the rate of the power supply frequency
2097 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2098 typically not noticeable to a person,<wbr/> it can be visible to
2099 a camera device.<wbr/> If a camera sets its exposure time to the
2100 wrong value,<wbr/> the flicker may become visible in the
2101 viewfinder as flicker or in a final captured image,<wbr/> as a
2102 set of variable-brightness bands across the image.<wbr/></p>
2103 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2104 include antibanding routines that ensure that the chosen
2105 exposure value will not cause such banding.<wbr/> The choice of
2106 exposure time depends on the rate of flicker,<wbr/> which the
2107 camera device can detect automatically,<wbr/> or the expected
2108 rate can be selected by the application using this
2109 control.<wbr/></p>
2110 <p>A given camera device may not support all of the possible
2111 options for the antibanding mode.<wbr/> The
2112 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2113 the available modes for a given camera device.<wbr/></p>
2114 <p>AUTO mode is the default if it is available on given
2115 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2116 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2117 and 60HZ will be available.<wbr/></p>
2118 <p>If manual exposure control is enabled (by setting
2119 <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/>
2120 then this setting has no effect,<wbr/> and the application must
2121 ensure it selects exposure times that do not cause banding
2122 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2123 the application in this.<wbr/></p>
2124             </td>
2125           </tr>
2126
2127           <tr class="entries_header">
2128             <th class="th_details" colspan="5">HAL Implementation Details</th>
2129           </tr>
2130           <tr class="entry_cont">
2131             <td class="entry_details" colspan="5">
2132               <p>For all capture request templates,<wbr/> this field must be set
2133 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2134 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2135 60HZ must be available.<wbr/></p>
2136 <p>If manual exposure control is enabled (by setting
2137 <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/>
2138 then the exposure values provided by the application must not be
2139 adjusted for antibanding.<wbr/></p>
2140             </td>
2141           </tr>
2142
2143           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2144            <!-- end of entry -->
2145         
2146                 
2147           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2148             <td class="entry_name
2149              " rowspan="3">
2150               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2151             </td>
2152             <td class="entry_type">
2153                 <span class="entry_type_name">int32</span>
2154
2155               <span class="entry_type_visibility"> [public]</span>
2156
2157
2158               <span class="entry_type_hwlevel">[legacy] </span>
2159
2160
2161
2162
2163             </td> <!-- entry_type -->
2164
2165             <td class="entry_description">
2166               <p>Adjustment to auto-exposure (AE) target image
2167 brightness.<wbr/></p>
2168             </td>
2169
2170             <td class="entry_units">
2171               Compensation steps
2172             </td>
2173
2174             <td class="entry_range">
2175               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2176             </td>
2177
2178             <td class="entry_tags">
2179               <ul class="entry_tags">
2180                   <li><a href="#tag_BC">BC</a></li>
2181               </ul>
2182             </td>
2183
2184           </tr>
2185           <tr class="entries_header">
2186             <th class="th_details" colspan="5">Details</th>
2187           </tr>
2188           <tr class="entry_cont">
2189             <td class="entry_details" colspan="5">
2190               <p>The adjustment is measured as a count of steps,<wbr/> with the
2191 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2192 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2193 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2194 will mean an exposure compensation of +2 EV; -3 will mean an
2195 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2196 of image brightness.<wbr/> Note that this control will only be
2197 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2198 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2199 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2200 may take several frames to reach the newly requested exposure target.<wbr/>
2201 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2202 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
2203 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2204 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2205             </td>
2206           </tr>
2207
2208
2209           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2210            <!-- end of entry -->
2211         
2212                 
2213           <tr class="entry" id="controls_android.control.aeLock">
2214             <td class="entry_name
2215              " rowspan="3">
2216               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2217             </td>
2218             <td class="entry_type">
2219                 <span class="entry_type_name entry_type_name_enum">byte</span>
2220
2221               <span class="entry_type_visibility"> [public as boolean]</span>
2222
2223
2224               <span class="entry_type_hwlevel">[legacy] </span>
2225
2226
2227
2228                 <ul class="entry_type_enum">
2229                   <li>
2230                     <span class="entry_type_enum_name">OFF</span>
2231                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2232 is free to update its parameters.<wbr/></p></span>
2233                   </li>
2234                   <li>
2235                     <span class="entry_type_enum_name">ON</span>
2236                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2237 must not update the exposure and sensitivity parameters
2238 while the lock is active.<wbr/></p>
2239 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2240 will still take effect while auto-exposure is locked.<wbr/></p>
2241 <p>Some rare LEGACY devices may not support
2242 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2243                   </li>
2244                 </ul>
2245
2246             </td> <!-- entry_type -->
2247
2248             <td class="entry_description">
2249               <p>Whether auto-exposure (AE) is currently locked to its latest
2250 calculated values.<wbr/></p>
2251             </td>
2252
2253             <td class="entry_units">
2254             </td>
2255
2256             <td class="entry_range">
2257             </td>
2258
2259             <td class="entry_tags">
2260               <ul class="entry_tags">
2261                   <li><a href="#tag_BC">BC</a></li>
2262               </ul>
2263             </td>
2264
2265           </tr>
2266           <tr class="entries_header">
2267             <th class="th_details" colspan="5">Details</th>
2268           </tr>
2269           <tr class="entry_cont">
2270             <td class="entry_details" colspan="5">
2271               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2272 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2273 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2274 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2275 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2276 <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
2277 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2278 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2279 when AE is already locked,<wbr/> the camera device will not change the exposure time
2280 (<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>)
2281 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2282 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2283 <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/>
2284 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2285 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2286 the AE if AE is locked by the camera device internally during precapture metering
2287 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2288 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2289 will never succeed in a sequence of preview requests where AE lock is always set
2290 to <code>false</code>.<wbr/></p>
2291 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2292 get locked do not necessarily correspond to the settings that were present in the
2293 latest capture result received from the camera device,<wbr/> since additional captures
2294 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2295 application is switching between automatic and manual control and wishes to eliminate
2296 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2297 <ol>
2298 <li>Starting in auto-AE mode:</li>
2299 <li>Lock AE</li>
2300 <li>Wait for the first result to be output that has the AE locked</li>
2301 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2302 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2303 </ol>
2304 <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>
2305             </td>
2306           </tr>
2307
2308
2309           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2310            <!-- end of entry -->
2311         
2312                 
2313           <tr class="entry" id="controls_android.control.aeMode">
2314             <td class="entry_name
2315              " rowspan="3">
2316               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2317             </td>
2318             <td class="entry_type">
2319                 <span class="entry_type_name entry_type_name_enum">byte</span>
2320
2321               <span class="entry_type_visibility"> [public]</span>
2322
2323
2324               <span class="entry_type_hwlevel">[legacy] </span>
2325
2326
2327
2328                 <ul class="entry_type_enum">
2329                   <li>
2330                     <span class="entry_type_enum_name">OFF</span>
2331                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2332 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2333 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2334 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2335 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2336 a flash unit for this camera device.<wbr/></p>
2337 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2338 behavior is device dependent when AE is in OFF mode.<wbr/>
2339 To have consistent behavior across different devices,<wbr/>
2340 it is recommended to either set AWB and AF to OFF mode
2341 or lock AWB and AF before setting AE to OFF.<wbr/>
2342 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/>
2343 <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>
2344 for more details.<wbr/></p>
2345 <p>LEGACY devices do not support the OFF mode and will
2346 override attempts to use this value to ON.<wbr/></p></span>
2347                   </li>
2348                   <li>
2349                     <span class="entry_type_enum_name">ON</span>
2350                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2351 with no flash control.<wbr/></p>
2352 <p>The application's values for
2353 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2354 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2355 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2356 application has control over the various
2357 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2358                   </li>
2359                   <li>
2360                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2361                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2362 the camera's flash unit,<wbr/> firing it in low-light
2363 conditions.<wbr/></p>
2364 <p>The flash may be fired during a precapture sequence
2365 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2366 may be fired for captures for which the
2367 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2368 STILL_<wbr/>CAPTURE</p></span>
2369                   </li>
2370                   <li>
2371                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2372                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2373 the camera's flash unit,<wbr/> always firing it for still
2374 captures.<wbr/></p>
2375 <p>The flash may be fired during a precapture sequence
2376 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2377 will always be fired for captures for which the
2378 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2379 STILL_<wbr/>CAPTURE</p></span>
2380                   </li>
2381                   <li>
2382                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2383                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2384 reduction.<wbr/></p>
2385 <p>If deemed necessary by the camera device,<wbr/> a red eye
2386 reduction flash will fire during the precapture
2387 sequence.<wbr/></p></span>
2388                   </li>
2389                 </ul>
2390
2391             </td> <!-- entry_type -->
2392
2393             <td class="entry_description">
2394               <p>The desired mode for the camera device's
2395 auto-exposure routine.<wbr/></p>
2396             </td>
2397
2398             <td class="entry_units">
2399             </td>
2400
2401             <td class="entry_range">
2402               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2403             </td>
2404
2405             <td class="entry_tags">
2406               <ul class="entry_tags">
2407                   <li><a href="#tag_BC">BC</a></li>
2408               </ul>
2409             </td>
2410
2411           </tr>
2412           <tr class="entries_header">
2413             <th class="th_details" colspan="5">Details</th>
2414           </tr>
2415           <tr class="entry_cont">
2416             <td class="entry_details" colspan="5">
2417               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2418 AUTO.<wbr/></p>
2419 <p>When set to any of the ON modes,<wbr/> the camera device's
2420 auto-exposure routine is enabled,<wbr/> overriding the
2421 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2422 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2423 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2424 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2425 is selected,<wbr/> the camera device's flash unit controls are
2426 also overridden.<wbr/></p>
2427 <p>The FLASH modes are only available if the camera device
2428 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>
2429 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2430 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2431 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2432 camera device auto-exposure routine for the overridden
2433 fields for a given capture will be available in its
2434 CaptureResult.<wbr/></p>
2435             </td>
2436           </tr>
2437
2438
2439           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2440            <!-- end of entry -->
2441         
2442                 
2443           <tr class="entry" id="controls_android.control.aeRegions">
2444             <td class="entry_name
2445              " rowspan="5">
2446               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2447             </td>
2448             <td class="entry_type">
2449                 <span class="entry_type_name">int32</span>
2450                 <span class="entry_type_container">x</span>
2451
2452                 <span class="entry_type_array">
2453                   5 x area_count
2454                 </span>
2455               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2456
2457
2458
2459
2460
2461
2462             </td> <!-- entry_type -->
2463
2464             <td class="entry_description">
2465               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2466             </td>
2467
2468             <td class="entry_units">
2469               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2470             </td>
2471
2472             <td class="entry_range">
2473               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2474 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2475             </td>
2476
2477             <td class="entry_tags">
2478               <ul class="entry_tags">
2479                   <li><a href="#tag_BC">BC</a></li>
2480               </ul>
2481             </td>
2482
2483           </tr>
2484           <tr class="entries_header">
2485             <th class="th_details" colspan="5">Details</th>
2486           </tr>
2487           <tr class="entry_cont">
2488             <td class="entry_details" colspan="5">
2489               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2490 Otherwise will always be present.<wbr/></p>
2491 <p>The maximum number of regions supported by the device is determined by the value
2492 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2493 <p>The coordinate system is based on the active pixel array,<wbr/>
2494 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2495 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2496 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2497 bottom-right pixel in the active pixel array.<wbr/></p>
2498 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2499 for every pixel in the area.<wbr/> This means that a large metering area
2500 with the same weight as a smaller area will have more effect in
2501 the metering result.<wbr/> Metering areas can partially overlap and the
2502 camera device will add the weights in the overlap region.<wbr/></p>
2503 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2504 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2505 weight is ignored.<wbr/></p>
2506 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2507 camera device.<wbr/></p>
2508 <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
2509 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2510 region and output only the intersection rectangle as the metering region in the result
2511 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2512 not reported in the result metadata.<wbr/></p>
2513             </td>
2514           </tr>
2515
2516           <tr class="entries_header">
2517             <th class="th_details" colspan="5">HAL Implementation Details</th>
2518           </tr>
2519           <tr class="entry_cont">
2520             <td class="entry_details" colspan="5">
2521               <p>The HAL level representation of MeteringRectangle[] is a
2522 int[5 * area_<wbr/>count].<wbr/>
2523 Every five elements represent a metering region of
2524 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2525 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2526 exclusive on xmax and ymax.<wbr/></p>
2527             </td>
2528           </tr>
2529
2530           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2531            <!-- end of entry -->
2532         
2533                 
2534           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2535             <td class="entry_name
2536              " rowspan="3">
2537               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2538             </td>
2539             <td class="entry_type">
2540                 <span class="entry_type_name">int32</span>
2541                 <span class="entry_type_container">x</span>
2542
2543                 <span class="entry_type_array">
2544                   2
2545                 </span>
2546               <span class="entry_type_visibility"> [public as rangeInt]</span>
2547
2548
2549               <span class="entry_type_hwlevel">[legacy] </span>
2550
2551
2552
2553
2554             </td> <!-- entry_type -->
2555
2556             <td class="entry_description">
2557               <p>Range over which the auto-exposure routine can
2558 adjust the capture frame rate to maintain good
2559 exposure.<wbr/></p>
2560             </td>
2561
2562             <td class="entry_units">
2563               Frames per second (FPS)
2564             </td>
2565
2566             <td class="entry_range">
2567               <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>
2568             </td>
2569
2570             <td class="entry_tags">
2571               <ul class="entry_tags">
2572                   <li><a href="#tag_BC">BC</a></li>
2573               </ul>
2574             </td>
2575
2576           </tr>
2577           <tr class="entries_header">
2578             <th class="th_details" colspan="5">Details</th>
2579           </tr>
2580           <tr class="entry_cont">
2581             <td class="entry_details" colspan="5">
2582               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2583 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2584 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2585             </td>
2586           </tr>
2587
2588
2589           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2590            <!-- end of entry -->
2591         
2592                 
2593           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2594             <td class="entry_name
2595              " rowspan="5">
2596               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2597             </td>
2598             <td class="entry_type">
2599                 <span class="entry_type_name entry_type_name_enum">byte</span>
2600
2601               <span class="entry_type_visibility"> [public]</span>
2602
2603
2604               <span class="entry_type_hwlevel">[limited] </span>
2605
2606
2607
2608                 <ul class="entry_type_enum">
2609                   <li>
2610                     <span class="entry_type_enum_name">IDLE</span>
2611                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2612                   </li>
2613                   <li>
2614                     <span class="entry_type_enum_name">START</span>
2615                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2616 by the camera device.<wbr/></p>
2617 <p>The exact effect of the precapture trigger depends on
2618 the current AE mode and state.<wbr/></p></span>
2619                   </li>
2620                   <li>
2621                     <span class="entry_type_enum_name">CANCEL</span>
2622                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2623 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2624 initial state.<wbr/></p></span>
2625                   </li>
2626                 </ul>
2627
2628             </td> <!-- entry_type -->
2629
2630             <td class="entry_description">
2631               <p>Whether the camera device will trigger a precapture
2632 metering sequence when it processes this request.<wbr/></p>
2633             </td>
2634
2635             <td class="entry_units">
2636             </td>
2637
2638             <td class="entry_range">
2639             </td>
2640
2641             <td class="entry_tags">
2642               <ul class="entry_tags">
2643                   <li><a href="#tag_BC">BC</a></li>
2644               </ul>
2645             </td>
2646
2647           </tr>
2648           <tr class="entries_header">
2649             <th class="th_details" colspan="5">Details</th>
2650           </tr>
2651           <tr class="entry_cont">
2652             <td class="entry_details" colspan="5">
2653               <p>This entry is normally set to IDLE,<wbr/> or is not
2654 included at all in the request settings.<wbr/> When included and
2655 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2656 precapture metering sequence.<wbr/></p>
2657 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2658 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2659 If a precapture metering sequence is already completed,<wbr/> and the camera
2660 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2661 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2662 <p>The precapture sequence should be triggered before starting a
2663 high-quality still capture for final metering decisions to
2664 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2665 scene brightness and required final capture flash power,<wbr/> when
2666 the flash is enabled.<wbr/></p>
2667 <p>Normally,<wbr/> this entry should be set to START for only a
2668 single request,<wbr/> and the application should wait until the
2669 sequence completes before starting a new one.<wbr/></p>
2670 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2671 may lock the auto-exposure routine internally to be able to accurately expose the
2672 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2673 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2674 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2675 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
2676 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
2677 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2678 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2679 internally locked AE if the application doesn't submit a still capture request after
2680 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2681 be used in devices that have earlier API levels.<wbr/></p>
2682 <p>The exact effect of auto-exposure (AE) precapture trigger
2683 depends on the current AE mode and state; see
2684 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2685 details.<wbr/></p>
2686 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2687 capturing a high-resolution JPEG image will automatically trigger a
2688 precapture sequence before the high-resolution capture,<wbr/> including
2689 potentially firing a pre-capture flash.<wbr/></p>
2690 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2691 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2692 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2693 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2694 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2695 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
2696 example.<wbr/></p>
2697 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2698 the camera device will complete them in the optimal order for that device.<wbr/></p>
2699             </td>
2700           </tr>
2701
2702           <tr class="entries_header">
2703             <th class="th_details" colspan="5">HAL Implementation Details</th>
2704           </tr>
2705           <tr class="entry_cont">
2706             <td class="entry_details" colspan="5">
2707               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2708 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2709 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2710 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2711 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2712             </td>
2713           </tr>
2714
2715           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2716            <!-- end of entry -->
2717         
2718                 
2719           <tr class="entry" id="controls_android.control.afMode">
2720             <td class="entry_name
2721              " rowspan="5">
2722               android.<wbr/>control.<wbr/>af<wbr/>Mode
2723             </td>
2724             <td class="entry_type">
2725                 <span class="entry_type_name entry_type_name_enum">byte</span>
2726
2727               <span class="entry_type_visibility"> [public]</span>
2728
2729
2730               <span class="entry_type_hwlevel">[legacy] </span>
2731
2732
2733
2734                 <ul class="entry_type_enum">
2735                   <li>
2736                     <span class="entry_type_enum_name">OFF</span>
2737                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2738 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2739 application.<wbr/></p></span>
2740                   </li>
2741                   <li>
2742                     <span class="entry_type_enum_name">AUTO</span>
2743                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2744 <p>In this mode,<wbr/> the lens does not move unless
2745 the autofocus trigger action is called.<wbr/> When that trigger
2746 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2747 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2748 <p>Always supported if lens is not fixed focus.<wbr/></p>
2749 <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
2750 is fixed-focus.<wbr/></p>
2751 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2752 and sets the AF state to INACTIVE.<wbr/></p></span>
2753                   </li>
2754                   <li>
2755                     <span class="entry_type_enum_name">MACRO</span>
2756                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2757 <p>In this mode,<wbr/> the lens does not move unless the
2758 autofocus trigger action is called.<wbr/> When that trigger is
2759 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2760 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2761 mode is optimized for focusing on objects very close to
2762 the camera.<wbr/></p>
2763 <p>When that trigger is activated,<wbr/> AF will transition to
2764 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2765 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2766 position to default,<wbr/> and sets the AF state to
2767 INACTIVE.<wbr/></p></span>
2768                   </li>
2769                   <li>
2770                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2771                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2772 position continually to attempt to provide a
2773 constantly-in-focus image stream.<wbr/></p>
2774 <p>The focusing behavior should be suitable for good quality
2775 video recording; typically this means slower focus
2776 movement and no overshoots.<wbr/> When the AF trigger is not
2777 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2778 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2779 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2780 the algorithm should immediately transition into
2781 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2782 lens position until a cancel AF trigger is received.<wbr/></p>
2783 <p>Once cancel is received,<wbr/> the algorithm should transition
2784 back to INACTIVE and resume passive scan.<wbr/> Note that this
2785 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2786 ongoing PASSIVE_<wbr/>SCAN must immediately be
2787 canceled.<wbr/></p></span>
2788                   </li>
2789                   <li>
2790                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2791                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2792 position continually to attempt to provide a
2793 constantly-in-focus image stream.<wbr/></p>
2794 <p>The focusing behavior should be suitable for still image
2795 capture; typically this means focusing as fast as
2796 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2797 algorithm should start in INACTIVE state,<wbr/> and then
2798 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2799 appropriate as it attempts to maintain focus.<wbr/> When the AF
2800 trigger is activated,<wbr/> the algorithm should finish its
2801 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2802 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2803 lens position until a cancel AF trigger is received.<wbr/></p>
2804 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2805 should transition back to INACTIVE and then act as if it
2806 has just been started.<wbr/></p></span>
2807                   </li>
2808                   <li>
2809                     <span class="entry_type_enum_name">EDOF</span>
2810                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2811 <p>The camera device will produce images with an extended
2812 depth of field automatically; no special focusing
2813 operations need to be done before taking a picture.<wbr/></p>
2814 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2815 INACTIVE.<wbr/></p></span>
2816                   </li>
2817                 </ul>
2818
2819             </td> <!-- entry_type -->
2820
2821             <td class="entry_description">
2822               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2823 mode it is set to.<wbr/></p>
2824             </td>
2825
2826             <td class="entry_units">
2827             </td>
2828
2829             <td class="entry_range">
2830               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2831             </td>
2832
2833             <td class="entry_tags">
2834               <ul class="entry_tags">
2835                   <li><a href="#tag_BC">BC</a></li>
2836               </ul>
2837             </td>
2838
2839           </tr>
2840           <tr class="entries_header">
2841             <th class="th_details" colspan="5">Details</th>
2842           </tr>
2843           <tr class="entry_cont">
2844             <td class="entry_details" colspan="5">
2845               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2846 (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
2847 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2848 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
2849 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>
2850 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2851 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2852 in result metadata.<wbr/></p>
2853             </td>
2854           </tr>
2855
2856           <tr class="entries_header">
2857             <th class="th_details" colspan="5">HAL Implementation Details</th>
2858           </tr>
2859           <tr class="entry_cont">
2860             <td class="entry_details" colspan="5">
2861               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2862 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
2863 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2864 <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
2865 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2866 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2867 the same focal plane remains in focus.<wbr/></p>
2868 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2869 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2870 (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
2871 same lock behavior as above.<wbr/></p>
2872 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2873 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/>
2874 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2875 manual control.<wbr/></p>
2876 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2877 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2878 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2879 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2880 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2881             </td>
2882           </tr>
2883
2884           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2885            <!-- end of entry -->
2886         
2887                 
2888           <tr class="entry" id="controls_android.control.afRegions">
2889             <td class="entry_name
2890              " rowspan="5">
2891               android.<wbr/>control.<wbr/>af<wbr/>Regions
2892             </td>
2893             <td class="entry_type">
2894                 <span class="entry_type_name">int32</span>
2895                 <span class="entry_type_container">x</span>
2896
2897                 <span class="entry_type_array">
2898                   5 x area_count
2899                 </span>
2900               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2901
2902
2903
2904
2905
2906
2907             </td> <!-- entry_type -->
2908
2909             <td class="entry_description">
2910               <p>List of metering areas to use for auto-focus.<wbr/></p>
2911             </td>
2912
2913             <td class="entry_units">
2914               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2915             </td>
2916
2917             <td class="entry_range">
2918               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2919 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2920             </td>
2921
2922             <td class="entry_tags">
2923               <ul class="entry_tags">
2924                   <li><a href="#tag_BC">BC</a></li>
2925               </ul>
2926             </td>
2927
2928           </tr>
2929           <tr class="entries_header">
2930             <th class="th_details" colspan="5">Details</th>
2931           </tr>
2932           <tr class="entry_cont">
2933             <td class="entry_details" colspan="5">
2934               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2935 Otherwise will always be present.<wbr/></p>
2936 <p>The maximum number of focus areas supported by the device is determined by the value
2937 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2938 <p>The coordinate system is based on the active pixel array,<wbr/>
2939 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2940 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2941 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2942 bottom-right pixel in the active pixel array.<wbr/></p>
2943 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2944 for every pixel in the area.<wbr/> This means that a large metering area
2945 with the same weight as a smaller area will have more effect in
2946 the metering result.<wbr/> Metering areas can partially overlap and the
2947 camera device will add the weights in the overlap region.<wbr/></p>
2948 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2949 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2950 ignored.<wbr/></p>
2951 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2952 camera device.<wbr/></p>
2953 <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
2954 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2955 region and output only the intersection rectangle as the metering region in the result
2956 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2957 not reported in the result metadata.<wbr/></p>
2958             </td>
2959           </tr>
2960
2961           <tr class="entries_header">
2962             <th class="th_details" colspan="5">HAL Implementation Details</th>
2963           </tr>
2964           <tr class="entry_cont">
2965             <td class="entry_details" colspan="5">
2966               <p>The HAL level representation of MeteringRectangle[] is a
2967 int[5 * area_<wbr/>count].<wbr/>
2968 Every five elements represent a metering region of
2969 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2970 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2971 exclusive on xmax and ymax.<wbr/></p>
2972             </td>
2973           </tr>
2974
2975           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2976            <!-- end of entry -->
2977         
2978                 
2979           <tr class="entry" id="controls_android.control.afTrigger">
2980             <td class="entry_name
2981              " rowspan="5">
2982               android.<wbr/>control.<wbr/>af<wbr/>Trigger
2983             </td>
2984             <td class="entry_type">
2985                 <span class="entry_type_name entry_type_name_enum">byte</span>
2986
2987               <span class="entry_type_visibility"> [public]</span>
2988
2989
2990               <span class="entry_type_hwlevel">[legacy] </span>
2991
2992
2993
2994                 <ul class="entry_type_enum">
2995                   <li>
2996                     <span class="entry_type_enum_name">IDLE</span>
2997                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2998                   </li>
2999                   <li>
3000                     <span class="entry_type_enum_name">START</span>
3001                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3002                   </li>
3003                   <li>
3004                     <span class="entry_type_enum_name">CANCEL</span>
3005                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3006 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3007                   </li>
3008                 </ul>
3009
3010             </td> <!-- entry_type -->
3011
3012             <td class="entry_description">
3013               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3014             </td>
3015
3016             <td class="entry_units">
3017             </td>
3018
3019             <td class="entry_range">
3020             </td>
3021
3022             <td class="entry_tags">
3023               <ul class="entry_tags">
3024                   <li><a href="#tag_BC">BC</a></li>
3025               </ul>
3026             </td>
3027
3028           </tr>
3029           <tr class="entries_header">
3030             <th class="th_details" colspan="5">Details</th>
3031           </tr>
3032           <tr class="entry_cont">
3033             <td class="entry_details" colspan="5">
3034               <p>This entry is normally set to IDLE,<wbr/> or is not
3035 included at all in the request settings.<wbr/></p>
3036 <p>When included and set to START,<wbr/> the camera device will trigger the
3037 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3038 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3039 and return to its initial AF state.<wbr/></p>
3040 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3041 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3042 START for multiple captures in a row means restarting the AF operation over
3043 and over again.<wbr/></p>
3044 <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>
3045 <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>
3046 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3047 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3048 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3049 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3050 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3051             </td>
3052           </tr>
3053
3054           <tr class="entries_header">
3055             <th class="th_details" colspan="5">HAL Implementation Details</th>
3056           </tr>
3057           <tr class="entry_cont">
3058             <td class="entry_details" colspan="5">
3059               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3060 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3061 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3062 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3063 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3064             </td>
3065           </tr>
3066
3067           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3068            <!-- end of entry -->
3069         
3070                 
3071           <tr class="entry" id="controls_android.control.awbLock">
3072             <td class="entry_name
3073              " rowspan="3">
3074               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3075             </td>
3076             <td class="entry_type">
3077                 <span class="entry_type_name entry_type_name_enum">byte</span>
3078
3079               <span class="entry_type_visibility"> [public as boolean]</span>
3080
3081
3082               <span class="entry_type_hwlevel">[legacy] </span>
3083
3084
3085
3086                 <ul class="entry_type_enum">
3087                   <li>
3088                     <span class="entry_type_enum_name">OFF</span>
3089                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3090 algorithm is free to update its parameters if in AUTO
3091 mode.<wbr/></p></span>
3092                   </li>
3093                   <li>
3094                     <span class="entry_type_enum_name">ON</span>
3095                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3096 algorithm will not update its parameters while the lock
3097 is active.<wbr/></p></span>
3098                   </li>
3099                 </ul>
3100
3101             </td> <!-- entry_type -->
3102
3103             <td class="entry_description">
3104               <p>Whether auto-white balance (AWB) is currently locked to its
3105 latest calculated values.<wbr/></p>
3106             </td>
3107
3108             <td class="entry_units">
3109             </td>
3110
3111             <td class="entry_range">
3112             </td>
3113
3114             <td class="entry_tags">
3115               <ul class="entry_tags">
3116                   <li><a href="#tag_BC">BC</a></li>
3117               </ul>
3118             </td>
3119
3120           </tr>
3121           <tr class="entries_header">
3122             <th class="th_details" colspan="5">Details</th>
3123           </tr>
3124           <tr class="entry_cont">
3125             <td class="entry_details" colspan="5">
3126               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3127 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3128 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3129 get locked do not necessarily correspond to the settings that were present in the
3130 latest capture result received from the camera device,<wbr/> since additional captures
3131 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3132 application is switching between automatic and manual control and wishes to eliminate
3133 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3134 <ol>
3135 <li>Starting in auto-AWB mode:</li>
3136 <li>Lock AWB</li>
3137 <li>Wait for the first result to be output that has the AWB locked</li>
3138 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3139 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3140 </ol>
3141 <p>Note that AWB lock is only meaningful when
3142 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3143 AWB is already fixed to a specific setting.<wbr/></p>
3144 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3145             </td>
3146           </tr>
3147
3148
3149           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3150            <!-- end of entry -->
3151         
3152                 
3153           <tr class="entry" id="controls_android.control.awbMode">
3154             <td class="entry_name
3155              " rowspan="3">
3156               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3157             </td>
3158             <td class="entry_type">
3159                 <span class="entry_type_name entry_type_name_enum">byte</span>
3160
3161               <span class="entry_type_visibility"> [public]</span>
3162
3163
3164               <span class="entry_type_hwlevel">[legacy] </span>
3165
3166
3167
3168                 <ul class="entry_type_enum">
3169                   <li>
3170                     <span class="entry_type_enum_name">OFF</span>
3171                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3172 <p>The application-selected color transform matrix
3173 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3174 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3175 device for manual white balance control.<wbr/></p></span>
3176                   </li>
3177                   <li>
3178                     <span class="entry_type_enum_name">AUTO</span>
3179                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3180 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3181 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3182 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3183 values used by the camera device for the transform and gains
3184 will be available in the capture result for this request.<wbr/></p></span>
3185                   </li>
3186                   <li>
3187                     <span class="entry_type_enum_name">INCANDESCENT</span>
3188                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3189 the camera device uses incandescent light as the assumed scene
3190 illumination for white balance.<wbr/></p>
3191 <p>While the exact white balance transforms are up to the
3192 camera device,<wbr/> they will approximately match the CIE
3193 standard illuminant A.<wbr/></p>
3194 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3195 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3196 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3197 values used by the camera device for the transform and gains
3198 will be available in the capture result for this request.<wbr/></p></span>
3199                   </li>
3200                   <li>
3201                     <span class="entry_type_enum_name">FLUORESCENT</span>
3202                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3203 the camera device uses fluorescent light as the assumed scene
3204 illumination for white balance.<wbr/></p>
3205 <p>While the exact white balance transforms are up to the
3206 camera device,<wbr/> they will approximately match the CIE
3207 standard illuminant F2.<wbr/></p>
3208 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3209 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3210 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3211 values used by the camera device for the transform and gains
3212 will be available in the capture result for this request.<wbr/></p></span>
3213                   </li>
3214                   <li>
3215                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3216                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3217 the camera device uses warm fluorescent light as the assumed scene
3218 illumination for white balance.<wbr/></p>
3219 <p>While the exact white balance transforms are up to the
3220 camera device,<wbr/> they will approximately match the CIE
3221 standard illuminant F4.<wbr/></p>
3222 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3223 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3224 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3225 values used by the camera device for the transform and gains
3226 will be available in the capture result for this request.<wbr/></p></span>
3227                   </li>
3228                   <li>
3229                     <span class="entry_type_enum_name">DAYLIGHT</span>
3230                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3231 the camera device uses daylight light as the assumed scene
3232 illumination for white balance.<wbr/></p>
3233 <p>While the exact white balance transforms are up to the
3234 camera device,<wbr/> they will approximately match the CIE
3235 standard illuminant D65.<wbr/></p>
3236 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3237 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3238 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3239 values used by the camera device for the transform and gains
3240 will be available in the capture result for this request.<wbr/></p></span>
3241                   </li>
3242                   <li>
3243                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3244                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3245 the camera device uses cloudy daylight light as the assumed scene
3246 illumination for white balance.<wbr/></p>
3247 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3248 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3249 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3250 values used by the camera device for the transform and gains
3251 will be available in the capture result for this request.<wbr/></p></span>
3252                   </li>
3253                   <li>
3254                     <span class="entry_type_enum_name">TWILIGHT</span>
3255                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3256 the camera device uses twilight light as the assumed scene
3257 illumination for white balance.<wbr/></p>
3258 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3259 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3260 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3261 values used by the camera device for the transform and gains
3262 will be available in the capture result for this request.<wbr/></p></span>
3263                   </li>
3264                   <li>
3265                     <span class="entry_type_enum_name">SHADE</span>
3266                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3267 the camera device uses shade light as the assumed scene
3268 illumination for white balance.<wbr/></p>
3269 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3270 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3271 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3272 values used by the camera device for the transform and gains
3273 will be available in the capture result for this request.<wbr/></p></span>
3274                   </li>
3275                 </ul>
3276
3277             </td> <!-- entry_type -->
3278
3279             <td class="entry_description">
3280               <p>Whether auto-white balance (AWB) is currently setting the color
3281 transform fields,<wbr/> and what its illumination target
3282 is.<wbr/></p>
3283             </td>
3284
3285             <td class="entry_units">
3286             </td>
3287
3288             <td class="entry_range">
3289               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3290             </td>
3291
3292             <td class="entry_tags">
3293               <ul class="entry_tags">
3294                   <li><a href="#tag_BC">BC</a></li>
3295               </ul>
3296             </td>
3297
3298           </tr>
3299           <tr class="entries_header">
3300             <th class="th_details" colspan="5">Details</th>
3301           </tr>
3302           <tr class="entry_cont">
3303             <td class="entry_details" colspan="5">
3304               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3305 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3306 routine is enabled,<wbr/> overriding the application's selected
3307 <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
3308 <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>
3309 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3310 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
3311 setting AE mode to OFF.<wbr/></p>
3312 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3313 routine is disabled.<wbr/> The application manually controls the white
3314 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>
3315 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3316 <p>When set to any other modes,<wbr/> the camera device's auto-white
3317 balance routine is disabled.<wbr/> The camera device uses each
3318 particular illumination target for white balance
3319 adjustment.<wbr/> The application's values for
3320 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3321 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3322 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3323             </td>
3324           </tr>
3325
3326
3327           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3328            <!-- end of entry -->
3329         
3330                 
3331           <tr class="entry" id="controls_android.control.awbRegions">
3332             <td class="entry_name
3333              " rowspan="5">
3334               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3335             </td>
3336             <td class="entry_type">
3337                 <span class="entry_type_name">int32</span>
3338                 <span class="entry_type_container">x</span>
3339
3340                 <span class="entry_type_array">
3341                   5 x area_count
3342                 </span>
3343               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3344
3345
3346
3347
3348
3349
3350             </td> <!-- entry_type -->
3351
3352             <td class="entry_description">
3353               <p>List of metering areas to use for auto-white-balance illuminant
3354 estimation.<wbr/></p>
3355             </td>
3356
3357             <td class="entry_units">
3358               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3359             </td>
3360
3361             <td class="entry_range">
3362               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3363 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3364             </td>
3365
3366             <td class="entry_tags">
3367               <ul class="entry_tags">
3368                   <li><a href="#tag_BC">BC</a></li>
3369               </ul>
3370             </td>
3371
3372           </tr>
3373           <tr class="entries_header">
3374             <th class="th_details" colspan="5">Details</th>
3375           </tr>
3376           <tr class="entry_cont">
3377             <td class="entry_details" colspan="5">
3378               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3379 Otherwise will always be present.<wbr/></p>
3380 <p>The maximum number of regions supported by the device is determined by the value
3381 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3382 <p>The coordinate system is based on the active pixel array,<wbr/>
3383 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3384 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3385 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3386 bottom-right pixel in the active pixel array.<wbr/></p>
3387 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3388 for every pixel in the area.<wbr/> This means that a large metering area
3389 with the same weight as a smaller area will have more effect in
3390 the metering result.<wbr/> Metering areas can partially overlap and the
3391 camera device will add the weights in the overlap region.<wbr/></p>
3392 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3393 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3394 0 weight is ignored.<wbr/></p>
3395 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3396 camera device.<wbr/></p>
3397 <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
3398 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3399 region and output only the intersection rectangle as the metering region in the result
3400 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3401 not reported in the result metadata.<wbr/></p>
3402             </td>
3403           </tr>
3404
3405           <tr class="entries_header">
3406             <th class="th_details" colspan="5">HAL Implementation Details</th>
3407           </tr>
3408           <tr class="entry_cont">
3409             <td class="entry_details" colspan="5">
3410               <p>The HAL level representation of MeteringRectangle[] is a
3411 int[5 * area_<wbr/>count].<wbr/>
3412 Every five elements represent a metering region of
3413 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3414 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3415 exclusive on xmax and ymax.<wbr/></p>
3416             </td>
3417           </tr>
3418
3419           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3420            <!-- end of entry -->
3421         
3422                 
3423           <tr class="entry" id="controls_android.control.captureIntent">
3424             <td class="entry_name
3425              " rowspan="3">
3426               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3427             </td>
3428             <td class="entry_type">
3429                 <span class="entry_type_name entry_type_name_enum">byte</span>
3430
3431               <span class="entry_type_visibility"> [public]</span>
3432
3433
3434               <span class="entry_type_hwlevel">[legacy] </span>
3435
3436
3437
3438                 <ul class="entry_type_enum">
3439                   <li>
3440                     <span class="entry_type_enum_name">CUSTOM</span>
3441                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3442 categories.<wbr/> The camera device will default to preview-like
3443 behavior.<wbr/></p></span>
3444                   </li>
3445                   <li>
3446                     <span class="entry_type_enum_name">PREVIEW</span>
3447                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3448 <p>The precapture trigger may be used to start off a metering
3449 w/<wbr/>flash sequence.<wbr/></p></span>
3450                   </li>
3451                   <li>
3452                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
3453                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3454 use case.<wbr/></p>
3455 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3456                   </li>
3457                   <li>
3458                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
3459                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3460 use case.<wbr/></p></span>
3461                   </li>
3462                   <li>
3463                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3464                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3465 image while recording video) use case.<wbr/></p>
3466 <p>The camera device should take the highest-quality image
3467 possible (given the other settings) without disrupting the
3468 frame rate of video recording.<wbr/>  </p></span>
3469                   </li>
3470                   <li>
3471                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3472                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3473 application will stream full-resolution images and
3474 reprocess one or several later for a final
3475 capture.<wbr/></p></span>
3476                   </li>
3477                   <li>
3478                     <span class="entry_type_enum_name">MANUAL</span>
3479                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3480 the applications want to directly control the capture parameters.<wbr/></p>
3481 <p>For example,<wbr/> the application may wish to manually control
3482 <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>
3483                   </li>
3484                 </ul>
3485
3486             </td> <!-- entry_type -->
3487
3488             <td class="entry_description">
3489               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3490 auto-focus,<wbr/> auto-white balance) routines about the purpose
3491 of this capture,<wbr/> to help the camera device to decide optimal 3A
3492 strategy.<wbr/></p>
3493             </td>
3494
3495             <td class="entry_units">
3496             </td>
3497
3498             <td class="entry_range">
3499             </td>
3500
3501             <td class="entry_tags">
3502               <ul class="entry_tags">
3503                   <li><a href="#tag_BC">BC</a></li>
3504               </ul>
3505             </td>
3506
3507           </tr>
3508           <tr class="entries_header">
3509             <th class="th_details" colspan="5">Details</th>
3510           </tr>
3511           <tr class="entry_cont">
3512             <td class="entry_details" colspan="5">
3513               <p>This control (except for MANUAL) is only effective if
3514 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3515 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3516 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3517 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3518 always supported.<wbr/></p>
3519             </td>
3520           </tr>
3521
3522
3523           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3524            <!-- end of entry -->
3525         
3526                 
3527           <tr class="entry" id="controls_android.control.effectMode">
3528             <td class="entry_name
3529              " rowspan="3">
3530               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3531             </td>
3532             <td class="entry_type">
3533                 <span class="entry_type_name entry_type_name_enum">byte</span>
3534
3535               <span class="entry_type_visibility"> [public]</span>
3536
3537
3538               <span class="entry_type_hwlevel">[legacy] </span>
3539
3540
3541
3542                 <ul class="entry_type_enum">
3543                   <li>
3544                     <span class="entry_type_enum_name">OFF</span>
3545                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3546                   </li>
3547                   <li>
3548                     <span class="entry_type_enum_name">MONO</span>
3549                     <span class="entry_type_enum_optional">[optional]</span>
3550                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3551 a single color.<wbr/></p>
3552 <p>This will typically be grayscale.<wbr/></p></span>
3553                   </li>
3554                   <li>
3555                     <span class="entry_type_enum_name">NEGATIVE</span>
3556                     <span class="entry_type_enum_optional">[optional]</span>
3557                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3558 are inverted.<wbr/></p></span>
3559                   </li>
3560                   <li>
3561                     <span class="entry_type_enum_name">SOLARIZE</span>
3562                     <span class="entry_type_enum_optional">[optional]</span>
3563                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3564 image is wholly or partially reversed in
3565 tone.<wbr/></p></span>
3566                   </li>
3567                   <li>
3568                     <span class="entry_type_enum_name">SEPIA</span>
3569                     <span class="entry_type_enum_optional">[optional]</span>
3570                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3571 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3572                   </li>
3573                   <li>
3574                     <span class="entry_type_enum_name">POSTERIZE</span>
3575                     <span class="entry_type_enum_optional">[optional]</span>
3576                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3577 discrete regions of tone rather than a continuous
3578 gradient of tones.<wbr/></p></span>
3579                   </li>
3580                   <li>
3581                     <span class="entry_type_enum_name">WHITEBOARD</span>
3582                     <span class="entry_type_enum_optional">[optional]</span>
3583                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3584 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3585                   </li>
3586                   <li>
3587                     <span class="entry_type_enum_name">BLACKBOARD</span>
3588                     <span class="entry_type_enum_optional">[optional]</span>
3589                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3590 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3591                   </li>
3592                   <li>
3593                     <span class="entry_type_enum_name">AQUA</span>
3594                     <span class="entry_type_enum_optional">[optional]</span>
3595                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3596                   </li>
3597                 </ul>
3598
3599             </td> <!-- entry_type -->
3600
3601             <td class="entry_description">
3602               <p>A special color effect to apply.<wbr/></p>
3603             </td>
3604
3605             <td class="entry_units">
3606             </td>
3607
3608             <td class="entry_range">
3609               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3610             </td>
3611
3612             <td class="entry_tags">
3613               <ul class="entry_tags">
3614                   <li><a href="#tag_BC">BC</a></li>
3615               </ul>
3616             </td>
3617
3618           </tr>
3619           <tr class="entries_header">
3620             <th class="th_details" colspan="5">Details</th>
3621           </tr>
3622           <tr class="entry_cont">
3623             <td class="entry_details" colspan="5">
3624               <p>When this mode is set,<wbr/> a color effect will be applied
3625 to images produced by the camera device.<wbr/> The interpretation
3626 and implementation of these color effects is left to the
3627 implementor of the camera device,<wbr/> and should not be
3628 depended on to be consistent (or present) across all
3629 devices.<wbr/></p>
3630             </td>
3631           </tr>
3632
3633
3634           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3635            <!-- end of entry -->
3636         
3637                 
3638           <tr class="entry" id="controls_android.control.mode">
3639             <td class="entry_name
3640              " rowspan="3">
3641               android.<wbr/>control.<wbr/>mode
3642             </td>
3643             <td class="entry_type">
3644                 <span class="entry_type_name entry_type_name_enum">byte</span>
3645
3646               <span class="entry_type_visibility"> [public]</span>
3647
3648
3649               <span class="entry_type_hwlevel">[legacy] </span>
3650
3651
3652
3653                 <ul class="entry_type_enum">
3654                   <li>
3655                     <span class="entry_type_enum_name">OFF</span>
3656                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3657 <p>All control by the device's metering and focusing (3A)
3658 routines is disabled,<wbr/> and no other settings in
3659 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3660 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3661 device to select post-processing values for processing
3662 blocks that do not allow for manual control,<wbr/> or are not
3663 exposed by the camera API.<wbr/></p>
3664 <p>However,<wbr/> the camera device's 3A routines may continue to
3665 collect statistics and update their internal state so that
3666 when control is switched to AUTO mode,<wbr/> good control values
3667 can be immediately applied.<wbr/></p></span>
3668                   </li>
3669                   <li>
3670                     <span class="entry_type_enum_name">AUTO</span>
3671                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3672 <p>Manual control of capture parameters is disabled.<wbr/> All
3673 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3674 effect.<wbr/></p></span>
3675                   </li>
3676                   <li>
3677                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3678                     <span class="entry_type_enum_optional">[optional]</span>
3679                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3680 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3681 control.<wbr/>afMode controls; the camera device will ignore
3682 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3683 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3684 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3685 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3686 contain some modes other than DISABLED).<wbr/></p></span>
3687                   </li>
3688                   <li>
3689                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3690                     <span class="entry_type_enum_optional">[optional]</span>
3691                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3692 used by camera device background auto-exposure,<wbr/> auto-white balance and
3693 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3694 <p>Specifically,<wbr/> the 3A routines are locked to the last
3695 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3696 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3697 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3698 discarded by the camera device.<wbr/></p></span>
3699                   </li>
3700                 </ul>
3701
3702             </td> <!-- entry_type -->
3703
3704             <td class="entry_description">
3705               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3706 routines.<wbr/></p>
3707             </td>
3708
3709             <td class="entry_units">
3710             </td>
3711
3712             <td class="entry_range">
3713               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></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="5">Details</th>
3725           </tr>
3726           <tr class="entry_cont">
3727             <td class="entry_details" colspan="5">
3728               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3729 by the camera device is disabled.<wbr/> The application must set the fields for
3730 capture parameters itself.<wbr/></p>
3731 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3732 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>
3733 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3734 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3735 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3736 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3737 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3738 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3739 is that this frame will not be used by camera device background 3A statistics
3740 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3741 where the application doesn't want a 3A manual control capture to affect
3742 the subsequent auto 3A capture results.<wbr/></p>
3743             </td>
3744           </tr>
3745
3746
3747           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3748            <!-- end of entry -->
3749         
3750                 
3751           <tr class="entry" id="controls_android.control.sceneMode">
3752             <td class="entry_name
3753              " rowspan="5">
3754               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3755             </td>
3756             <td class="entry_type">
3757                 <span class="entry_type_name entry_type_name_enum">byte</span>
3758
3759               <span class="entry_type_visibility"> [public]</span>
3760
3761
3762               <span class="entry_type_hwlevel">[legacy] </span>
3763
3764
3765
3766                 <ul class="entry_type_enum">
3767                   <li>
3768                     <span class="entry_type_enum_name">DISABLED</span>
3769                     <span class="entry_type_enum_value">0</span>
3770                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3771                   </li>
3772                   <li>
3773                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
3774                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3775 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3776 auto-exposure routines.<wbr/></p>
3777 <p>If face detection statistics are disabled
3778 (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/>
3779 this should still operate correctly (but will not return
3780 face detection statistics to the framework).<wbr/></p>
3781 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3782 <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>
3783 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3784                   </li>
3785                   <li>
3786                     <span class="entry_type_enum_name">ACTION</span>
3787                     <span class="entry_type_enum_optional">[optional]</span>
3788                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3789 <p>Similar to SPORTS.<wbr/></p></span>
3790                   </li>
3791                   <li>
3792                     <span class="entry_type_enum_name">PORTRAIT</span>
3793                     <span class="entry_type_enum_optional">[optional]</span>
3794                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3795                   </li>
3796                   <li>
3797                     <span class="entry_type_enum_name">LANDSCAPE</span>
3798                     <span class="entry_type_enum_optional">[optional]</span>
3799                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3800                   </li>
3801                   <li>
3802                     <span class="entry_type_enum_name">NIGHT</span>
3803                     <span class="entry_type_enum_optional">[optional]</span>
3804                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3805                   </li>
3806                   <li>
3807                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3808                     <span class="entry_type_enum_optional">[optional]</span>
3809                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3810 settings.<wbr/></p></span>
3811                   </li>
3812                   <li>
3813                     <span class="entry_type_enum_name">THEATRE</span>
3814                     <span class="entry_type_enum_optional">[optional]</span>
3815                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3816 remain off.<wbr/></p></span>
3817                   </li>
3818                   <li>
3819                     <span class="entry_type_enum_name">BEACH</span>
3820                     <span class="entry_type_enum_optional">[optional]</span>
3821                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3822                   </li>
3823                   <li>
3824                     <span class="entry_type_enum_name">SNOW</span>
3825                     <span class="entry_type_enum_optional">[optional]</span>
3826                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3827                   </li>
3828                   <li>
3829                     <span class="entry_type_enum_name">SUNSET</span>
3830                     <span class="entry_type_enum_optional">[optional]</span>
3831                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3832                   </li>
3833                   <li>
3834                     <span class="entry_type_enum_name">STEADYPHOTO</span>
3835                     <span class="entry_type_enum_optional">[optional]</span>
3836                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3837 device motion (for example: due to hand shake).<wbr/></p></span>
3838                   </li>
3839                   <li>
3840                     <span class="entry_type_enum_name">FIREWORKS</span>
3841                     <span class="entry_type_enum_optional">[optional]</span>
3842                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3843                   </li>
3844                   <li>
3845                     <span class="entry_type_enum_name">SPORTS</span>
3846                     <span class="entry_type_enum_optional">[optional]</span>
3847                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3848 <p>Similar to ACTION.<wbr/></p></span>
3849                   </li>
3850                   <li>
3851                     <span class="entry_type_enum_name">PARTY</span>
3852                     <span class="entry_type_enum_optional">[optional]</span>
3853                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3854 people.<wbr/></p></span>
3855                   </li>
3856                   <li>
3857                     <span class="entry_type_enum_name">CANDLELIGHT</span>
3858                     <span class="entry_type_enum_optional">[optional]</span>
3859                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3860 is a flame.<wbr/></p></span>
3861                   </li>
3862                   <li>
3863                     <span class="entry_type_enum_name">BARCODE</span>
3864                     <span class="entry_type_enum_optional">[optional]</span>
3865                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3866 for use by camera applications that wish to read the
3867 barcode value.<wbr/></p></span>
3868                   </li>
3869                   <li>
3870                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3871                     <span class="entry_type_enum_deprecated">[deprecated]</span>
3872                     <span class="entry_type_enum_optional">[optional]</span>
3873                     <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>
3874 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3875 for high speed video recording.<wbr/></p>
3876 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3877 <p>The supported high speed video sizes and fps ranges are specified in
3878 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3879 output frame rates,<wbr/> the application is only allowed to select video size
3880 and fps range combinations listed in this static metadata.<wbr/> The fps range
3881 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3882 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3883 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3884 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3885 and post-processing parameters is possible.<wbr/> All other controls operate the
3886 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3887 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3888 <ul>
3889 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3890 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3891 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3892 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3893 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3894 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3895 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3896 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3897 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3898 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3899 </ul>
3900 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3901 <ul>
3902 <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>
3903 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3904 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3905 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3906 </ul>
3907 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3908 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3909 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3910 the application need check if the video encoder is capable of supporting the
3911 high frame rate for a given video size,<wbr/> or it will end up with lower recording
3912 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3913 rate will be bounded by the screen refresh rate.<wbr/></p>
3914 <p>The camera device will only support up to 2 output high speed streams
3915 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3916 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3917 <ul>
3918 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3919 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3920 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>
3921 <li>The stream sizes are selected from the sizes reported by
3922 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3923 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
3924 </ul>
3925 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3926 <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/>
3927 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3928 and the returned capture result metadata will give the fps range choosen
3929 by the camera device.<wbr/></p>
3930 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3931 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3932 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3933                   </li>
3934                   <li>
3935                     <span class="entry_type_enum_name">HDR</span>
3936                     <span class="entry_type_enum_optional">[optional]</span>
3937                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3938 <p>In this scene mode,<wbr/> the camera device captures images
3939 that keep a larger range of scene illumination levels
3940 visible in the final image.<wbr/> For example,<wbr/> when taking a
3941 picture of a object in front of a bright window,<wbr/> both
3942 the object and the scene through the window may be
3943 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3944 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3945 HDR mode generally takes much longer to capture a single
3946 image,<wbr/> has no user control,<wbr/> and may have other artifacts
3947 depending on the HDR method used.<wbr/></p>
3948 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
3949 than regular captures.<wbr/></p>
3950 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3951 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3952 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3953 using a high dynamic range capture technique.<wbr/>  On LEGACY
3954 devices,<wbr/> captures that target a JPEG-format output will
3955 be captured with HDR,<wbr/> and the capture intent is not
3956 relevant.<wbr/></p>
3957 <p>The HDR capture may involve the device capturing a burst
3958 of images internally and combining them into one,<wbr/> or it
3959 may involve the device using specialized high dynamic
3960 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3961 produced in response to a capture request submitted
3962 while in HDR mode.<wbr/></p>
3963 <p>Since substantial post-processing is generally needed to
3964 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
3965 outputs are supported for LIMITED/<wbr/>FULL device HDR
3966 captures,<wbr/> and only JPEG outputs are supported for LEGACY
3967 HDR captures.<wbr/> Using a RAW output for HDR capture is not
3968 supported.<wbr/></p>
3969 <p>Some devices may also support always-on HDR,<wbr/> which
3970 applies HDR processing at full frame rate.<wbr/>  For these
3971 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
3972 produce an HDR output with no frame rate impact compared
3973 to normal operation,<wbr/> though the quality may be lower
3974 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
3975 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
3976 or capture intents,<wbr/> the images captured will be as if
3977 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
3978                   </li>
3979                   <li>
3980                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3981                     <span class="entry_type_enum_optional">[optional]</span>
3982                     <span class="entry_type_enum_hidden">[hidden]</span>
3983                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3984 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3985 under low light conditions.<wbr/></p>
3986 <p>The camera device may be tuned to expose the images in a reduced
3987 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3988 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/>
3989 the camera device auto-exposure routine tuning process may limit the actual
3990 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3991 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3992 low light may be under-exposed when the sensor max exposure time (bounded by the
3993 <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
3994 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3995 camera device auto-exposure routine to increase the sensitivity up to the max
3996 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
3997 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3998 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3999 recommended that the application only use this scene mode when it is capable of
4000 reducing the noise level of the captured images.<wbr/></p>
4001 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4002 <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>
4003 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4004                   </li>
4005                   <li>
4006                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4007                     <span class="entry_type_enum_optional">[optional]</span>
4008                     <span class="entry_type_enum_hidden">[hidden]</span>
4009                     <span class="entry_type_enum_value">100</span>
4010                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4011 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4012 customized scene modes.<wbr/></p></span>
4013                   </li>
4014                   <li>
4015                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4016                     <span class="entry_type_enum_optional">[optional]</span>
4017                     <span class="entry_type_enum_hidden">[hidden]</span>
4018                     <span class="entry_type_enum_value">127</span>
4019                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4020 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4021 customized scene modes.<wbr/></p></span>
4022                   </li>
4023                 </ul>
4024
4025             </td> <!-- entry_type -->
4026
4027             <td class="entry_description">
4028               <p>Control for which scene mode is currently active.<wbr/></p>
4029             </td>
4030
4031             <td class="entry_units">
4032             </td>
4033
4034             <td class="entry_range">
4035               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4036             </td>
4037
4038             <td class="entry_tags">
4039               <ul class="entry_tags">
4040                   <li><a href="#tag_BC">BC</a></li>
4041               </ul>
4042             </td>
4043
4044           </tr>
4045           <tr class="entries_header">
4046             <th class="th_details" colspan="5">Details</th>
4047           </tr>
4048           <tr class="entry_cont">
4049             <td class="entry_details" colspan="5">
4050               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4051 capture settings.<wbr/></p>
4052 <p>This is the mode that that is active when
4053 <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
4054 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>
4055 while in use.<wbr/></p>
4056 <p>The interpretation and implementation of these scene modes is left
4057 to the implementor of the camera device.<wbr/> Their behavior will not be
4058 consistent across all devices,<wbr/> and any given device may only implement
4059 a subset of these modes.<wbr/></p>
4060             </td>
4061           </tr>
4062
4063           <tr class="entries_header">
4064             <th class="th_details" colspan="5">HAL Implementation Details</th>
4065           </tr>
4066           <tr class="entry_cont">
4067             <td class="entry_details" colspan="5">
4068               <p>HAL implementations that include scene modes are expected to provide
4069 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4070 <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
4071 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4072 <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/>
4073 the HAL must list supported video size and fps range in
4074 <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/>
4075 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4076 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4077 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4078 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4079 <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
4080 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4081             </td>
4082           </tr>
4083
4084           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4085            <!-- end of entry -->
4086         
4087                 
4088           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4089             <td class="entry_name
4090              " rowspan="3">
4091               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4092             </td>
4093             <td class="entry_type">
4094                 <span class="entry_type_name entry_type_name_enum">byte</span>
4095
4096               <span class="entry_type_visibility"> [public]</span>
4097
4098
4099               <span class="entry_type_hwlevel">[legacy] </span>
4100
4101
4102
4103                 <ul class="entry_type_enum">
4104                   <li>
4105                     <span class="entry_type_enum_name">OFF</span>
4106                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4107                   </li>
4108                   <li>
4109                     <span class="entry_type_enum_name">ON</span>
4110                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4111                   </li>
4112                 </ul>
4113
4114             </td> <!-- entry_type -->
4115
4116             <td class="entry_description">
4117               <p>Whether video stabilization is
4118 active.<wbr/></p>
4119             </td>
4120
4121             <td class="entry_units">
4122             </td>
4123
4124             <td class="entry_range">
4125             </td>
4126
4127             <td class="entry_tags">
4128               <ul class="entry_tags">
4129                   <li><a href="#tag_BC">BC</a></li>
4130               </ul>
4131             </td>
4132
4133           </tr>
4134           <tr class="entries_header">
4135             <th class="th_details" colspan="5">Details</th>
4136           </tr>
4137           <tr class="entry_cont">
4138             <td class="entry_details" colspan="5">
4139               <p>Video stabilization automatically warps images from
4140 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4141 <p>If enabled,<wbr/> video stabilization can modify the
4142 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4143 <p>Switching between different video stabilization modes may take several
4144 frames to initialize,<wbr/> the camera device will report the current mode
4145 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4146 the video stabilization modes in the first several capture results may
4147 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4148 done.<wbr/></p>
4149 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4150 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4151 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4152 the recording resolution is less than or equal to 1920 x 1080 (width less than
4153 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4154 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4155 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4156 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4157 Surface types that can be stabilized.<wbr/></p>
4158 <p>If a camera device supports both this mode and OIS
4159 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4160 produce undesirable interaction,<wbr/> so it is recommended not to enable
4161 both at the same time.<wbr/></p>
4162             </td>
4163           </tr>
4164
4165
4166           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4167            <!-- end of entry -->
4168         
4169                 
4170           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4171             <td class="entry_name
4172              " rowspan="3">
4173               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4174             </td>
4175             <td class="entry_type">
4176                 <span class="entry_type_name">int32</span>
4177
4178               <span class="entry_type_visibility"> [public]</span>
4179
4180
4181
4182
4183
4184
4185             </td> <!-- entry_type -->
4186
4187             <td class="entry_description">
4188               <p>The amount of additional sensitivity boost applied to output images
4189 after RAW sensor data is captured.<wbr/></p>
4190             </td>
4191
4192             <td class="entry_units">
4193               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4194             </td>
4195
4196             <td class="entry_range">
4197               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4198             </td>
4199
4200             <td class="entry_tags">
4201             </td>
4202
4203           </tr>
4204           <tr class="entries_header">
4205             <th class="th_details" colspan="5">Details</th>
4206           </tr>
4207           <tr class="entry_cont">
4208             <td class="entry_details" colspan="5">
4209               <p>Some camera devices support additional digital sensitivity boosting in the
4210 camera processing pipeline after sensor RAW image is captured.<wbr/>
4211 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4212 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4213 <p>This key will be <code>null</code> for devices that do not support any RAW format
4214 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4215 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4216 list <code>100</code> in this key.<wbr/></p>
4217 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4218 boost to the nearest supported value.<wbr/>
4219 The final boost value used will be available in the output capture result.<wbr/></p>
4220 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4221 of such device will have the total sensitivity of
4222 <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>
4223 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4224 <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
4225 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4226             </td>
4227           </tr>
4228
4229
4230           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4231            <!-- end of entry -->
4232         
4233                 
4234           <tr class="entry" id="controls_android.control.enableZsl">
4235             <td class="entry_name
4236              " rowspan="5">
4237               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4238             </td>
4239             <td class="entry_type">
4240                 <span class="entry_type_name entry_type_name_enum">byte</span>
4241
4242               <span class="entry_type_visibility"> [public as boolean]</span>
4243
4244
4245
4246
4247
4248                 <ul class="entry_type_enum">
4249                   <li>
4250                     <span class="entry_type_enum_name">FALSE</span>
4251                     <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
4252 after previous requests.<wbr/></p></span>
4253                   </li>
4254                   <li>
4255                     <span class="entry_type_enum_name">TRUE</span>
4256                     <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
4257 captured before previous requests.<wbr/></p></span>
4258                   </li>
4259                 </ul>
4260
4261             </td> <!-- entry_type -->
4262
4263             <td class="entry_description">
4264               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4265 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4266             </td>
4267
4268             <td class="entry_units">
4269             </td>
4270
4271             <td class="entry_range">
4272             </td>
4273
4274             <td class="entry_tags">
4275             </td>
4276
4277           </tr>
4278           <tr class="entries_header">
4279             <th class="th_details" colspan="5">Details</th>
4280           </tr>
4281           <tr class="entry_cont">
4282             <td class="entry_details" colspan="5">
4283               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4284 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4285 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4286 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4287 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4288 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4289 capture intents.<wbr/></p>
4290 <p>For example,<wbr/> when requests are submitted in the following order:
4291   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4292   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>
4293 <p>The output images for request B may have contents captured before the output images for
4294 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4295 request A.<wbr/></p>
4296 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4297 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4298 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4299 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4300 <code>false</code> if present.<wbr/></p>
4301 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4302 capture templates is always <code>false</code> if present.<wbr/></p>
4303 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4304             </td>
4305           </tr>
4306
4307           <tr class="entries_header">
4308             <th class="th_details" colspan="5">HAL Implementation Details</th>
4309           </tr>
4310           <tr class="entry_cont">
4311             <td class="entry_details" colspan="5">
4312               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4313 capture intent.<wbr/></p>
4314             </td>
4315           </tr>
4316
4317           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4318            <!-- end of entry -->
4319         
4320         
4321
4322       <!-- end of kind -->
4323       </tbody>
4324       <tr><td colspan="6" class="kind">static</td></tr>
4325
4326       <thead class="entries_header">
4327         <tr>
4328           <th class="th_name">Property Name</th>
4329           <th class="th_type">Type</th>
4330           <th class="th_description">Description</th>
4331           <th class="th_units">Units</th>
4332           <th class="th_range">Range</th>
4333           <th class="th_tags">Tags</th>
4334         </tr>
4335       </thead>
4336
4337       <tbody>
4338
4339         
4340
4341         
4342
4343         
4344
4345         
4346
4347                 
4348           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4349             <td class="entry_name
4350              " rowspan="3">
4351               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4352             </td>
4353             <td class="entry_type">
4354                 <span class="entry_type_name">byte</span>
4355                 <span class="entry_type_container">x</span>
4356
4357                 <span class="entry_type_array">
4358                   n
4359                 </span>
4360               <span class="entry_type_visibility"> [public as enumList]</span>
4361
4362
4363               <span class="entry_type_hwlevel">[legacy] </span>
4364
4365
4366                 <div class="entry_type_notes">list of enums</div>
4367
4368
4369             </td> <!-- entry_type -->
4370
4371             <td class="entry_description">
4372               <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
4373 supported by this camera device.<wbr/></p>
4374             </td>
4375
4376             <td class="entry_units">
4377             </td>
4378
4379             <td class="entry_range">
4380               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4381             </td>
4382
4383             <td class="entry_tags">
4384               <ul class="entry_tags">
4385                   <li><a href="#tag_BC">BC</a></li>
4386               </ul>
4387             </td>
4388
4389           </tr>
4390           <tr class="entries_header">
4391             <th class="th_details" colspan="5">Details</th>
4392           </tr>
4393           <tr class="entry_cont">
4394             <td class="entry_details" colspan="5">
4395               <p>Not all of the auto-exposure anti-banding modes may be
4396 supported by a given camera device.<wbr/> This field lists the
4397 valid anti-banding modes that the application may request
4398 for this camera device with the
4399 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4400             </td>
4401           </tr>
4402
4403
4404           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4405            <!-- end of entry -->
4406         
4407                 
4408           <tr class="entry" id="static_android.control.aeAvailableModes">
4409             <td class="entry_name
4410              " rowspan="3">
4411               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4412             </td>
4413             <td class="entry_type">
4414                 <span class="entry_type_name">byte</span>
4415                 <span class="entry_type_container">x</span>
4416
4417                 <span class="entry_type_array">
4418                   n
4419                 </span>
4420               <span class="entry_type_visibility"> [public as enumList]</span>
4421
4422
4423               <span class="entry_type_hwlevel">[legacy] </span>
4424
4425
4426                 <div class="entry_type_notes">list of enums</div>
4427
4428
4429             </td> <!-- entry_type -->
4430
4431             <td class="entry_description">
4432               <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
4433 device.<wbr/></p>
4434             </td>
4435
4436             <td class="entry_units">
4437             </td>
4438
4439             <td class="entry_range">
4440               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4441             </td>
4442
4443             <td class="entry_tags">
4444               <ul class="entry_tags">
4445                   <li><a href="#tag_BC">BC</a></li>
4446               </ul>
4447             </td>
4448
4449           </tr>
4450           <tr class="entries_header">
4451             <th class="th_details" colspan="5">Details</th>
4452           </tr>
4453           <tr class="entry_cont">
4454             <td class="entry_details" colspan="5">
4455               <p>Not all the auto-exposure modes may be supported by a
4456 given camera device,<wbr/> especially if no flash unit is
4457 available.<wbr/> This entry lists the valid modes for
4458 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4459 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4460 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4461 <p>FULL mode camera devices always support OFF mode,<wbr/>
4462 which enables application control of camera exposure time,<wbr/>
4463 sensitivity,<wbr/> and frame duration.<wbr/></p>
4464 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4465 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4466 capability.<wbr/></p>
4467             </td>
4468           </tr>
4469
4470
4471           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4472            <!-- end of entry -->
4473         
4474                 
4475           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4476             <td class="entry_name
4477              " rowspan="3">
4478               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4479             </td>
4480             <td class="entry_type">
4481                 <span class="entry_type_name">int32</span>
4482                 <span class="entry_type_container">x</span>
4483
4484                 <span class="entry_type_array">
4485                   2 x n
4486                 </span>
4487               <span class="entry_type_visibility"> [public as rangeInt]</span>
4488
4489
4490               <span class="entry_type_hwlevel">[legacy] </span>
4491
4492
4493                 <div class="entry_type_notes">list of pairs of frame rates</div>
4494
4495
4496             </td> <!-- entry_type -->
4497
4498             <td class="entry_description">
4499               <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
4500 this camera device.<wbr/></p>
4501             </td>
4502
4503             <td class="entry_units">
4504               Frames per second (FPS)
4505             </td>
4506
4507             <td class="entry_range">
4508             </td>
4509
4510             <td class="entry_tags">
4511               <ul class="entry_tags">
4512                   <li><a href="#tag_BC">BC</a></li>
4513               </ul>
4514             </td>
4515
4516           </tr>
4517           <tr class="entries_header">
4518             <th class="th_details" colspan="5">Details</th>
4519           </tr>
4520           <tr class="entry_cont">
4521             <td class="entry_details" colspan="5">
4522               <p>For devices at the LEGACY level or above:</p>
4523 <ul>
4524 <li>
4525 <p>For constant-framerate recording,<wbr/> for each normal
4526 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4527 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4528 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4529 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4530 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4531 supported by the device and has
4532 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4533 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4534 </li>
4535 <li>
4536 <p>Also,<wbr/> a camera device must either not support any
4537 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4538 or support at least one
4539 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4540 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4541 </li>
4542 </ul>
4543 <p>For devices at the LIMITED level or above:</p>
4544 <ul>
4545 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4546 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
4547 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4548 </ul>
4549             </td>
4550           </tr>
4551
4552
4553           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4554            <!-- end of entry -->
4555         
4556                 
4557           <tr class="entry" id="static_android.control.aeCompensationRange">
4558             <td class="entry_name
4559              " rowspan="1">
4560               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4561             </td>
4562             <td class="entry_type">
4563                 <span class="entry_type_name">int32</span>
4564                 <span class="entry_type_container">x</span>
4565
4566                 <span class="entry_type_array">
4567                   2
4568                 </span>
4569               <span class="entry_type_visibility"> [public as rangeInt]</span>
4570
4571
4572               <span class="entry_type_hwlevel">[legacy] </span>
4573
4574
4575
4576
4577             </td> <!-- entry_type -->
4578
4579             <td class="entry_description">
4580               <p>Maximum and minimum exposure compensation values for
4581 <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/>
4582 that are supported by this camera device.<wbr/></p>
4583             </td>
4584
4585             <td class="entry_units">
4586             </td>
4587
4588             <td class="entry_range">
4589               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4590 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4591 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4592 <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>
4593 <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>
4594 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4595             </td>
4596
4597             <td class="entry_tags">
4598               <ul class="entry_tags">
4599                   <li><a href="#tag_BC">BC</a></li>
4600               </ul>
4601             </td>
4602
4603           </tr>
4604
4605
4606           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4607            <!-- end of entry -->
4608         
4609                 
4610           <tr class="entry" id="static_android.control.aeCompensationStep">
4611             <td class="entry_name
4612              " rowspan="5">
4613               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4614             </td>
4615             <td class="entry_type">
4616                 <span class="entry_type_name">rational</span>
4617
4618               <span class="entry_type_visibility"> [public]</span>
4619
4620
4621               <span class="entry_type_hwlevel">[legacy] </span>
4622
4623
4624
4625
4626             </td> <!-- entry_type -->
4627
4628             <td class="entry_description">
4629               <p>Smallest step by which the exposure compensation
4630 can be changed.<wbr/></p>
4631             </td>
4632
4633             <td class="entry_units">
4634               Exposure Value (EV)
4635             </td>
4636
4637             <td class="entry_range">
4638             </td>
4639
4640             <td class="entry_tags">
4641               <ul class="entry_tags">
4642                   <li><a href="#tag_BC">BC</a></li>
4643               </ul>
4644             </td>
4645
4646           </tr>
4647           <tr class="entries_header">
4648             <th class="th_details" colspan="5">Details</th>
4649           </tr>
4650           <tr class="entry_cont">
4651             <td class="entry_details" colspan="5">
4652               <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
4653 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
4654 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4655 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4656 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4657             </td>
4658           </tr>
4659
4660           <tr class="entries_header">
4661             <th class="th_details" colspan="5">HAL Implementation Details</th>
4662           </tr>
4663           <tr class="entry_cont">
4664             <td class="entry_details" colspan="5">
4665               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4666             </td>
4667           </tr>
4668
4669           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4670            <!-- end of entry -->
4671         
4672                 
4673           <tr class="entry" id="static_android.control.afAvailableModes">
4674             <td class="entry_name
4675              " rowspan="3">
4676               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4677             </td>
4678             <td class="entry_type">
4679                 <span class="entry_type_name">byte</span>
4680                 <span class="entry_type_container">x</span>
4681
4682                 <span class="entry_type_array">
4683                   n
4684                 </span>
4685               <span class="entry_type_visibility"> [public as enumList]</span>
4686
4687
4688               <span class="entry_type_hwlevel">[legacy] </span>
4689
4690
4691                 <div class="entry_type_notes">List of enums</div>
4692
4693
4694             </td> <!-- entry_type -->
4695
4696             <td class="entry_description">
4697               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4698 supported by this camera device.<wbr/></p>
4699             </td>
4700
4701             <td class="entry_units">
4702             </td>
4703
4704             <td class="entry_range">
4705               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4706             </td>
4707
4708             <td class="entry_tags">
4709               <ul class="entry_tags">
4710                   <li><a href="#tag_BC">BC</a></li>
4711               </ul>
4712             </td>
4713
4714           </tr>
4715           <tr class="entries_header">
4716             <th class="th_details" colspan="5">Details</th>
4717           </tr>
4718           <tr class="entry_cont">
4719             <td class="entry_details" colspan="5">
4720               <p>Not all the auto-focus modes may be supported by a
4721 given camera device.<wbr/> This entry lists the valid modes for
4722 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4723 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4724 camera devices with adjustable focuser units
4725 (<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>
4726 <p>LEGACY devices will support OFF mode only if they support
4727 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4728 <code>0.<wbr/>0f</code>).<wbr/></p>
4729             </td>
4730           </tr>
4731
4732
4733           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4734            <!-- end of entry -->
4735         
4736                 
4737           <tr class="entry" id="static_android.control.availableEffects">
4738             <td class="entry_name
4739              " rowspan="3">
4740               android.<wbr/>control.<wbr/>available<wbr/>Effects
4741             </td>
4742             <td class="entry_type">
4743                 <span class="entry_type_name">byte</span>
4744                 <span class="entry_type_container">x</span>
4745
4746                 <span class="entry_type_array">
4747                   n
4748                 </span>
4749               <span class="entry_type_visibility"> [public as enumList]</span>
4750
4751
4752               <span class="entry_type_hwlevel">[legacy] </span>
4753
4754
4755                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4756
4757
4758             </td> <!-- entry_type -->
4759
4760             <td class="entry_description">
4761               <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
4762 device.<wbr/></p>
4763             </td>
4764
4765             <td class="entry_units">
4766             </td>
4767
4768             <td class="entry_range">
4769               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4770             </td>
4771
4772             <td class="entry_tags">
4773               <ul class="entry_tags">
4774                   <li><a href="#tag_BC">BC</a></li>
4775               </ul>
4776             </td>
4777
4778           </tr>
4779           <tr class="entries_header">
4780             <th class="th_details" colspan="5">Details</th>
4781           </tr>
4782           <tr class="entry_cont">
4783             <td class="entry_details" colspan="5">
4784               <p>This list contains the color effect modes that can be applied to
4785 images produced by the camera device.<wbr/>
4786 Implementations are not expected to be consistent across all devices.<wbr/>
4787 If no color effect modes are available for a device,<wbr/> this will only list
4788 OFF.<wbr/></p>
4789 <p>A color effect will only be applied if
4790 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4791 <p>This control has no effect on the operation of other control routines such
4792 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4793             </td>
4794           </tr>
4795
4796
4797           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4798            <!-- end of entry -->
4799         
4800                 
4801           <tr class="entry" id="static_android.control.availableSceneModes">
4802             <td class="entry_name
4803              " rowspan="3">
4804               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4805             </td>
4806             <td class="entry_type">
4807                 <span class="entry_type_name">byte</span>
4808                 <span class="entry_type_container">x</span>
4809
4810                 <span class="entry_type_array">
4811                   n
4812                 </span>
4813               <span class="entry_type_visibility"> [public as enumList]</span>
4814
4815
4816               <span class="entry_type_hwlevel">[legacy] </span>
4817
4818
4819                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4820
4821
4822             </td> <!-- entry_type -->
4823
4824             <td class="entry_description">
4825               <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
4826 device.<wbr/></p>
4827             </td>
4828
4829             <td class="entry_units">
4830             </td>
4831
4832             <td class="entry_range">
4833               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4834             </td>
4835
4836             <td class="entry_tags">
4837               <ul class="entry_tags">
4838                   <li><a href="#tag_BC">BC</a></li>
4839               </ul>
4840             </td>
4841
4842           </tr>
4843           <tr class="entries_header">
4844             <th class="th_details" colspan="5">Details</th>
4845           </tr>
4846           <tr class="entry_cont">
4847             <td class="entry_details" colspan="5">
4848               <p>This list contains scene modes that can be set for the camera device.<wbr/>
4849 Only scene modes that have been fully implemented for the
4850 camera device may be included here.<wbr/> Implementations are not expected
4851 to be consistent across all devices.<wbr/></p>
4852 <p>If no scene modes are supported by the camera device,<wbr/> this
4853 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4854 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
4855 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;
4856 0</code>).<wbr/></p>
4857             </td>
4858           </tr>
4859
4860
4861           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4862            <!-- end of entry -->
4863         
4864                 
4865           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4866             <td class="entry_name
4867              " rowspan="3">
4868               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4869             </td>
4870             <td class="entry_type">
4871                 <span class="entry_type_name">byte</span>
4872                 <span class="entry_type_container">x</span>
4873
4874                 <span class="entry_type_array">
4875                   n
4876                 </span>
4877               <span class="entry_type_visibility"> [public as enumList]</span>
4878
4879
4880               <span class="entry_type_hwlevel">[legacy] </span>
4881
4882
4883                 <div class="entry_type_notes">List of enums.<wbr/></div>
4884
4885
4886             </td> <!-- entry_type -->
4887
4888             <td class="entry_description">
4889               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4890 that are supported by this camera device.<wbr/></p>
4891             </td>
4892
4893             <td class="entry_units">
4894             </td>
4895
4896             <td class="entry_range">
4897               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4898             </td>
4899
4900             <td class="entry_tags">
4901               <ul class="entry_tags">
4902                   <li><a href="#tag_BC">BC</a></li>
4903               </ul>
4904             </td>
4905
4906           </tr>
4907           <tr class="entries_header">
4908             <th class="th_details" colspan="5">Details</th>
4909           </tr>
4910           <tr class="entry_cont">
4911             <td class="entry_details" colspan="5">
4912               <p>OFF will always be listed.<wbr/></p>
4913             </td>
4914           </tr>
4915
4916
4917           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4918            <!-- end of entry -->
4919         
4920                 
4921           <tr class="entry" id="static_android.control.awbAvailableModes">
4922             <td class="entry_name
4923              " rowspan="3">
4924               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4925             </td>
4926             <td class="entry_type">
4927                 <span class="entry_type_name">byte</span>
4928                 <span class="entry_type_container">x</span>
4929
4930                 <span class="entry_type_array">
4931                   n
4932                 </span>
4933               <span class="entry_type_visibility"> [public as enumList]</span>
4934
4935
4936               <span class="entry_type_hwlevel">[legacy] </span>
4937
4938
4939                 <div class="entry_type_notes">List of enums</div>
4940
4941
4942             </td> <!-- entry_type -->
4943
4944             <td class="entry_description">
4945               <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
4946 camera device.<wbr/></p>
4947             </td>
4948
4949             <td class="entry_units">
4950             </td>
4951
4952             <td class="entry_range">
4953               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4954             </td>
4955
4956             <td class="entry_tags">
4957               <ul class="entry_tags">
4958                   <li><a href="#tag_BC">BC</a></li>
4959               </ul>
4960             </td>
4961
4962           </tr>
4963           <tr class="entries_header">
4964             <th class="th_details" colspan="5">Details</th>
4965           </tr>
4966           <tr class="entry_cont">
4967             <td class="entry_details" colspan="5">
4968               <p>Not all the auto-white-balance modes may be supported by a
4969 given camera device.<wbr/> This entry lists the valid modes for
4970 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4971 <p>All camera devices will support ON mode.<wbr/></p>
4972 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4973 mode,<wbr/> which enables application control of white balance,<wbr/> by using
4974 <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
4975 mode camera devices.<wbr/></p>
4976             </td>
4977           </tr>
4978
4979
4980           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4981            <!-- end of entry -->
4982         
4983                 
4984           <tr class="entry" id="static_android.control.maxRegions">
4985             <td class="entry_name
4986              " rowspan="1">
4987               android.<wbr/>control.<wbr/>max<wbr/>Regions
4988             </td>
4989             <td class="entry_type">
4990                 <span class="entry_type_name">int32</span>
4991                 <span class="entry_type_container">x</span>
4992
4993                 <span class="entry_type_array">
4994                   3
4995                 </span>
4996               <span class="entry_type_visibility"> [ndk_public]</span>
4997
4998
4999               <span class="entry_type_hwlevel">[legacy] </span>
5000
5001
5002
5003
5004             </td> <!-- entry_type -->
5005
5006             <td class="entry_description">
5007               <p>List of the maximum number of regions that can be used for metering in
5008 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5009 this corresponds to the the maximum number of elements in
5010 <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/>
5011 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5012             </td>
5013
5014             <td class="entry_units">
5015             </td>
5016
5017             <td class="entry_range">
5018               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5019 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5020 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5021             </td>
5022
5023             <td class="entry_tags">
5024               <ul class="entry_tags">
5025                   <li><a href="#tag_BC">BC</a></li>
5026               </ul>
5027             </td>
5028
5029           </tr>
5030
5031
5032           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5033            <!-- end of entry -->
5034         
5035                 
5036           <tr class="entry" id="static_android.control.maxRegionsAe">
5037             <td class="entry_name
5038              " rowspan="5">
5039               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5040             </td>
5041             <td class="entry_type">
5042                 <span class="entry_type_name">int32</span>
5043
5044               <span class="entry_type_visibility"> [java_public]</span>
5045
5046               <span class="entry_type_synthetic">[synthetic] </span>
5047
5048               <span class="entry_type_hwlevel">[legacy] </span>
5049
5050
5051
5052
5053             </td> <!-- entry_type -->
5054
5055             <td class="entry_description">
5056               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5057 routine.<wbr/></p>
5058             </td>
5059
5060             <td class="entry_units">
5061             </td>
5062
5063             <td class="entry_range">
5064               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5065 value will be &gt;= 1.<wbr/></p>
5066             </td>
5067
5068             <td class="entry_tags">
5069             </td>
5070
5071           </tr>
5072           <tr class="entries_header">
5073             <th class="th_details" colspan="5">Details</th>
5074           </tr>
5075           <tr class="entry_cont">
5076             <td class="entry_details" colspan="5">
5077               <p>This corresponds to the the maximum allowed number of elements in
5078 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5079             </td>
5080           </tr>
5081
5082           <tr class="entries_header">
5083             <th class="th_details" colspan="5">HAL Implementation Details</th>
5084           </tr>
5085           <tr class="entry_cont">
5086             <td class="entry_details" colspan="5">
5087               <p>This entry is private to the framework.<wbr/> Fill in
5088 maxRegions to have this entry be automatically populated.<wbr/></p>
5089             </td>
5090           </tr>
5091
5092           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5093            <!-- end of entry -->
5094         
5095                 
5096           <tr class="entry" id="static_android.control.maxRegionsAwb">
5097             <td class="entry_name
5098              " rowspan="5">
5099               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5100             </td>
5101             <td class="entry_type">
5102                 <span class="entry_type_name">int32</span>
5103
5104               <span class="entry_type_visibility"> [java_public]</span>
5105
5106               <span class="entry_type_synthetic">[synthetic] </span>
5107
5108               <span class="entry_type_hwlevel">[legacy] </span>
5109
5110
5111
5112
5113             </td> <!-- entry_type -->
5114
5115             <td class="entry_description">
5116               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5117 routine.<wbr/></p>
5118             </td>
5119
5120             <td class="entry_units">
5121             </td>
5122
5123             <td class="entry_range">
5124               <p>Value will be &gt;= 0.<wbr/></p>
5125             </td>
5126
5127             <td class="entry_tags">
5128             </td>
5129
5130           </tr>
5131           <tr class="entries_header">
5132             <th class="th_details" colspan="5">Details</th>
5133           </tr>
5134           <tr class="entry_cont">
5135             <td class="entry_details" colspan="5">
5136               <p>This corresponds to the the maximum allowed number of elements in
5137 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5138             </td>
5139           </tr>
5140
5141           <tr class="entries_header">
5142             <th class="th_details" colspan="5">HAL Implementation Details</th>
5143           </tr>
5144           <tr class="entry_cont">
5145             <td class="entry_details" colspan="5">
5146               <p>This entry is private to the framework.<wbr/> Fill in
5147 maxRegions to have this entry be automatically populated.<wbr/></p>
5148             </td>
5149           </tr>
5150
5151           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5152            <!-- end of entry -->
5153         
5154                 
5155           <tr class="entry" id="static_android.control.maxRegionsAf">
5156             <td class="entry_name
5157              " rowspan="5">
5158               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5159             </td>
5160             <td class="entry_type">
5161                 <span class="entry_type_name">int32</span>
5162
5163               <span class="entry_type_visibility"> [java_public]</span>
5164
5165               <span class="entry_type_synthetic">[synthetic] </span>
5166
5167               <span class="entry_type_hwlevel">[legacy] </span>
5168
5169
5170
5171
5172             </td> <!-- entry_type -->
5173
5174             <td class="entry_description">
5175               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5176             </td>
5177
5178             <td class="entry_units">
5179             </td>
5180
5181             <td class="entry_range">
5182               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5183 value will be &gt;= 1.<wbr/></p>
5184             </td>
5185
5186             <td class="entry_tags">
5187             </td>
5188
5189           </tr>
5190           <tr class="entries_header">
5191             <th class="th_details" colspan="5">Details</th>
5192           </tr>
5193           <tr class="entry_cont">
5194             <td class="entry_details" colspan="5">
5195               <p>This corresponds to the the maximum allowed number of elements in
5196 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5197             </td>
5198           </tr>
5199
5200           <tr class="entries_header">
5201             <th class="th_details" colspan="5">HAL Implementation Details</th>
5202           </tr>
5203           <tr class="entry_cont">
5204             <td class="entry_details" colspan="5">
5205               <p>This entry is private to the framework.<wbr/> Fill in
5206 maxRegions to have this entry be automatically populated.<wbr/></p>
5207             </td>
5208           </tr>
5209
5210           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5211            <!-- end of entry -->
5212         
5213                 
5214           <tr class="entry" id="static_android.control.sceneModeOverrides">
5215             <td class="entry_name
5216              " rowspan="5">
5217               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5218             </td>
5219             <td class="entry_type">
5220                 <span class="entry_type_name">byte</span>
5221                 <span class="entry_type_container">x</span>
5222
5223                 <span class="entry_type_array">
5224                   3 x length(availableSceneModes)
5225                 </span>
5226               <span class="entry_type_visibility"> [system]</span>
5227
5228
5229               <span class="entry_type_hwlevel">[limited] </span>
5230
5231
5232
5233
5234             </td> <!-- entry_type -->
5235
5236             <td class="entry_description">
5237               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5238 settings to use with each available scene mode.<wbr/></p>
5239             </td>
5240
5241             <td class="entry_units">
5242             </td>
5243
5244             <td class="entry_range">
5245               <p>For each available scene mode,<wbr/> the list must contain three
5246 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5247 <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
5248 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5249 where aeMode has the lowest index position.<wbr/></p>
5250             </td>
5251
5252             <td class="entry_tags">
5253               <ul class="entry_tags">
5254                   <li><a href="#tag_BC">BC</a></li>
5255               </ul>
5256             </td>
5257
5258           </tr>
5259           <tr class="entries_header">
5260             <th class="th_details" colspan="5">Details</th>
5261           </tr>
5262           <tr class="entry_cont">
5263             <td class="entry_details" colspan="5">
5264               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5265 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/>
5266 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5267 that scene mode.<wbr/></p>
5268 <p>The order of this list matches that of availableSceneModes,<wbr/>
5269 with 3 entries for each mode.<wbr/>  The overrides listed
5270 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5271 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5272 <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
5273 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5274 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5275 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5276 <p>For example,<wbr/> if availableSceneModes contains
5277 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5278 expects sceneModeOverrides to have 9 entries formatted like:
5279 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5280 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5281             </td>
5282           </tr>
5283
5284           <tr class="entries_header">
5285             <th class="th_details" colspan="5">HAL Implementation Details</th>
5286           </tr>
5287           <tr class="entry_cont">
5288             <td class="entry_details" colspan="5">
5289               <p>To maintain backward compatibility,<wbr/> this list will be made available
5290 in the static metadata of the camera service.<wbr/>  The camera service will
5291 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5292 <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
5293 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5294             </td>
5295           </tr>
5296
5297           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5298            <!-- end of entry -->
5299         
5300                 
5301           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5302             <td class="entry_name
5303              " rowspan="5">
5304               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5305             </td>
5306             <td class="entry_type">
5307                 <span class="entry_type_name">int32</span>
5308                 <span class="entry_type_container">x</span>
5309
5310                 <span class="entry_type_array">
5311                   5 x n
5312                 </span>
5313               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5314
5315
5316               <span class="entry_type_hwlevel">[limited] </span>
5317
5318
5319
5320
5321             </td> <!-- entry_type -->
5322
5323             <td class="entry_description">
5324               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5325 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>
5326             </td>
5327
5328             <td class="entry_units">
5329             </td>
5330
5331             <td class="entry_range">
5332               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5333             </td>
5334
5335             <td class="entry_tags">
5336               <ul class="entry_tags">
5337                   <li><a href="#tag_V1">V1</a></li>
5338               </ul>
5339             </td>
5340
5341           </tr>
5342           <tr class="entries_header">
5343             <th class="th_details" colspan="5">Details</th>
5344           </tr>
5345           <tr class="entry_cont">
5346             <td class="entry_details" colspan="5">
5347               <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/>
5348 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5349 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5350 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5351 for processed non-stalling formats.<wbr/></p>
5352 <p>For the high speed video use case,<wbr/> the application must
5353 select the video size and fps range from this metadata to configure the recording and
5354 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5355 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5356 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5357 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5358 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5359 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5360 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5361 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5362 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5363 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5364 multiple frames together and send to camera device for processing where the request
5365 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5366 the max possible number of frames the camera device will group together for this high
5367 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5368 recording request list by
5369 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5370 The max batch size for each configuration will satisfy below conditions:</p>
5371 <ul>
5372 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5373 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5374 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5375 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5376 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>
5377 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5378 </ul>
5379 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5380 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5381 <p>This fps ranges in this configuration list can only be used to create requests
5382 that are submitted to a high speed camera capture session created by
5383 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5384 The fps ranges reported in this metadata must not be used to setup capture requests for
5385 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5386             </td>
5387           </tr>
5388
5389           <tr class="entries_header">
5390             <th class="th_details" colspan="5">HAL Implementation Details</th>
5391           </tr>
5392           <tr class="entry_cont">
5393             <td class="entry_details" colspan="5">
5394               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5395 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5396 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5397 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5398 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5399 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5400 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5401 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5402 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5403 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5404 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5405 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5406 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5407 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5408 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5409 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5410 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5411             </td>
5412           </tr>
5413
5414           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5415            <!-- end of entry -->
5416         
5417                 
5418           <tr class="entry" id="static_android.control.aeLockAvailable">
5419             <td class="entry_name
5420              " rowspan="3">
5421               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5422             </td>
5423             <td class="entry_type">
5424                 <span class="entry_type_name entry_type_name_enum">byte</span>
5425
5426               <span class="entry_type_visibility"> [public as boolean]</span>
5427
5428
5429               <span class="entry_type_hwlevel">[legacy] </span>
5430
5431
5432
5433                 <ul class="entry_type_enum">
5434                   <li>
5435                     <span class="entry_type_enum_name">FALSE</span>
5436                   </li>
5437                   <li>
5438                     <span class="entry_type_enum_name">TRUE</span>
5439                   </li>
5440                 </ul>
5441
5442             </td> <!-- entry_type -->
5443
5444             <td class="entry_description">
5445               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5446             </td>
5447
5448             <td class="entry_units">
5449             </td>
5450
5451             <td class="entry_range">
5452             </td>
5453
5454             <td class="entry_tags">
5455               <ul class="entry_tags">
5456                   <li><a href="#tag_BC">BC</a></li>
5457               </ul>
5458             </td>
5459
5460           </tr>
5461           <tr class="entries_header">
5462             <th class="th_details" colspan="5">Details</th>
5463           </tr>
5464           <tr class="entry_cont">
5465             <td class="entry_details" colspan="5">
5466               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5467 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5468             </td>
5469           </tr>
5470
5471
5472           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5473            <!-- end of entry -->
5474         
5475                 
5476           <tr class="entry" id="static_android.control.awbLockAvailable">
5477             <td class="entry_name
5478              " rowspan="3">
5479               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5480             </td>
5481             <td class="entry_type">
5482                 <span class="entry_type_name entry_type_name_enum">byte</span>
5483
5484               <span class="entry_type_visibility"> [public as boolean]</span>
5485
5486
5487               <span class="entry_type_hwlevel">[legacy] </span>
5488
5489
5490
5491                 <ul class="entry_type_enum">
5492                   <li>
5493                     <span class="entry_type_enum_name">FALSE</span>
5494                   </li>
5495                   <li>
5496                     <span class="entry_type_enum_name">TRUE</span>
5497                   </li>
5498                 </ul>
5499
5500             </td> <!-- entry_type -->
5501
5502             <td class="entry_description">
5503               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5504             </td>
5505
5506             <td class="entry_units">
5507             </td>
5508
5509             <td class="entry_range">
5510             </td>
5511
5512             <td class="entry_tags">
5513               <ul class="entry_tags">
5514                   <li><a href="#tag_BC">BC</a></li>
5515               </ul>
5516             </td>
5517
5518           </tr>
5519           <tr class="entries_header">
5520             <th class="th_details" colspan="5">Details</th>
5521           </tr>
5522           <tr class="entry_cont">
5523             <td class="entry_details" colspan="5">
5524               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5525 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5526             </td>
5527           </tr>
5528
5529
5530           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5531            <!-- end of entry -->
5532         
5533                 
5534           <tr class="entry" id="static_android.control.availableModes">
5535             <td class="entry_name
5536              " rowspan="3">
5537               android.<wbr/>control.<wbr/>available<wbr/>Modes
5538             </td>
5539             <td class="entry_type">
5540                 <span class="entry_type_name">byte</span>
5541                 <span class="entry_type_container">x</span>
5542
5543                 <span class="entry_type_array">
5544                   n
5545                 </span>
5546               <span class="entry_type_visibility"> [public as enumList]</span>
5547
5548
5549               <span class="entry_type_hwlevel">[legacy] </span>
5550
5551
5552                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5553
5554
5555             </td> <!-- entry_type -->
5556
5557             <td class="entry_description">
5558               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5559 device.<wbr/></p>
5560             </td>
5561
5562             <td class="entry_units">
5563             </td>
5564
5565             <td class="entry_range">
5566               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5567             </td>
5568
5569             <td class="entry_tags">
5570             </td>
5571
5572           </tr>
5573           <tr class="entries_header">
5574             <th class="th_details" colspan="5">Details</th>
5575           </tr>
5576           <tr class="entry_cont">
5577             <td class="entry_details" colspan="5">
5578               <p>This list contains control modes that can be set for the camera device.<wbr/>
5579 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5580 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5581             </td>
5582           </tr>
5583
5584
5585           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5586            <!-- end of entry -->
5587         
5588                 
5589           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5590             <td class="entry_name
5591              " rowspan="5">
5592               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5593             </td>
5594             <td class="entry_type">
5595                 <span class="entry_type_name">int32</span>
5596                 <span class="entry_type_container">x</span>
5597
5598                 <span class="entry_type_array">
5599                   2
5600                 </span>
5601               <span class="entry_type_visibility"> [public as rangeInt]</span>
5602
5603
5604
5605
5606                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5607
5608
5609             </td> <!-- entry_type -->
5610
5611             <td class="entry_description">
5612               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5613 by this camera device.<wbr/></p>
5614             </td>
5615
5616             <td class="entry_units">
5617               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5618             </td>
5619
5620             <td class="entry_range">
5621             </td>
5622
5623             <td class="entry_tags">
5624             </td>
5625
5626           </tr>
5627           <tr class="entries_header">
5628             <th class="th_details" colspan="5">Details</th>
5629           </tr>
5630           <tr class="entry_cont">
5631             <td class="entry_details" colspan="5">
5632               <p>Devices support post RAW sensitivity boost  will advertise
5633 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5634 post RAW sensitivity boost.<wbr/></p>
5635 <p>This key will be <code>null</code> for devices that do not support any RAW format
5636 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5637 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5638 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5639             </td>
5640           </tr>
5641
5642           <tr class="entries_header">
5643             <th class="th_details" colspan="5">HAL Implementation Details</th>
5644           </tr>
5645           <tr class="entry_cont">
5646             <td class="entry_details" colspan="5">
5647               <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will
5648 generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/>
5649 All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW
5650 output formats.<wbr/></p>
5651             </td>
5652           </tr>
5653
5654           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5655            <!-- end of entry -->
5656         
5657         
5658
5659       <!-- end of kind -->
5660       </tbody>
5661       <tr><td colspan="6" class="kind">dynamic</td></tr>
5662
5663       <thead class="entries_header">
5664         <tr>
5665           <th class="th_name">Property Name</th>
5666           <th class="th_type">Type</th>
5667           <th class="th_description">Description</th>
5668           <th class="th_units">Units</th>
5669           <th class="th_range">Range</th>
5670           <th class="th_tags">Tags</th>
5671         </tr>
5672       </thead>
5673
5674       <tbody>
5675
5676         
5677
5678         
5679
5680         
5681
5682         
5683
5684                 
5685           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5686             <td class="entry_name
5687                 entry_name_deprecated
5688              " rowspan="3">
5689               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5690             </td>
5691             <td class="entry_type">
5692                 <span class="entry_type_name">int32</span>
5693
5694               <span class="entry_type_visibility"> [system]</span>
5695
5696
5697
5698               <span class="entry_type_deprecated">[deprecated] </span>
5699
5700
5701
5702             </td> <!-- entry_type -->
5703
5704             <td class="entry_description">
5705               <p>The ID sent with the latest
5706 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5707             </td>
5708
5709             <td class="entry_units">
5710             </td>
5711
5712             <td class="entry_range">
5713               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5714             </td>
5715
5716             <td class="entry_tags">
5717             </td>
5718
5719           </tr>
5720           <tr class="entries_header">
5721             <th class="th_details" colspan="5">Details</th>
5722           </tr>
5723           <tr class="entry_cont">
5724             <td class="entry_details" colspan="5">
5725               <p>Must be 0 if no
5726 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5727 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5728 trigger</p>
5729             </td>
5730           </tr>
5731
5732
5733           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5734            <!-- end of entry -->
5735         
5736                 
5737           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5738             <td class="entry_name
5739              " rowspan="5">
5740               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5741             </td>
5742             <td class="entry_type">
5743                 <span class="entry_type_name entry_type_name_enum">byte</span>
5744
5745               <span class="entry_type_visibility"> [public]</span>
5746
5747
5748               <span class="entry_type_hwlevel">[legacy] </span>
5749
5750
5751
5752                 <ul class="entry_type_enum">
5753                   <li>
5754                     <span class="entry_type_enum_name">OFF</span>
5755                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5756 avoid banding problems.<wbr/></p></span>
5757                   </li>
5758                   <li>
5759                     <span class="entry_type_enum_name">50HZ</span>
5760                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5761 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5762                   </li>
5763                   <li>
5764                     <span class="entry_type_enum_name">60HZ</span>
5765                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5766 avoid banding problems with 60Hz illumination
5767 sources.<wbr/></p></span>
5768                   </li>
5769                   <li>
5770                     <span class="entry_type_enum_name">AUTO</span>
5771                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5772 antibanding routine to the current illumination
5773 condition.<wbr/> This is the default mode if AUTO is
5774 available on given camera device.<wbr/></p></span>
5775                   </li>
5776                 </ul>
5777
5778             </td> <!-- entry_type -->
5779
5780             <td class="entry_description">
5781               <p>The desired setting for the camera device's auto-exposure
5782 algorithm's antibanding compensation.<wbr/></p>
5783             </td>
5784
5785             <td class="entry_units">
5786             </td>
5787
5788             <td class="entry_range">
5789               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5790             </td>
5791
5792             <td class="entry_tags">
5793               <ul class="entry_tags">
5794                   <li><a href="#tag_BC">BC</a></li>
5795               </ul>
5796             </td>
5797
5798           </tr>
5799           <tr class="entries_header">
5800             <th class="th_details" colspan="5">Details</th>
5801           </tr>
5802           <tr class="entry_cont">
5803             <td class="entry_details" colspan="5">
5804               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5805 lights,<wbr/> flicker at the rate of the power supply frequency
5806 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5807 typically not noticeable to a person,<wbr/> it can be visible to
5808 a camera device.<wbr/> If a camera sets its exposure time to the
5809 wrong value,<wbr/> the flicker may become visible in the
5810 viewfinder as flicker or in a final captured image,<wbr/> as a
5811 set of variable-brightness bands across the image.<wbr/></p>
5812 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
5813 include antibanding routines that ensure that the chosen
5814 exposure value will not cause such banding.<wbr/> The choice of
5815 exposure time depends on the rate of flicker,<wbr/> which the
5816 camera device can detect automatically,<wbr/> or the expected
5817 rate can be selected by the application using this
5818 control.<wbr/></p>
5819 <p>A given camera device may not support all of the possible
5820 options for the antibanding mode.<wbr/> The
5821 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5822 the available modes for a given camera device.<wbr/></p>
5823 <p>AUTO mode is the default if it is available on given
5824 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5825 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5826 and 60HZ will be available.<wbr/></p>
5827 <p>If manual exposure control is enabled (by setting
5828 <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/>
5829 then this setting has no effect,<wbr/> and the application must
5830 ensure it selects exposure times that do not cause banding
5831 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5832 the application in this.<wbr/></p>
5833             </td>
5834           </tr>
5835
5836           <tr class="entries_header">
5837             <th class="th_details" colspan="5">HAL Implementation Details</th>
5838           </tr>
5839           <tr class="entry_cont">
5840             <td class="entry_details" colspan="5">
5841               <p>For all capture request templates,<wbr/> this field must be set
5842 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5843 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
5844 60HZ must be available.<wbr/></p>
5845 <p>If manual exposure control is enabled (by setting
5846 <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/>
5847 then the exposure values provided by the application must not be
5848 adjusted for antibanding.<wbr/></p>
5849             </td>
5850           </tr>
5851
5852           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5853            <!-- end of entry -->
5854         
5855                 
5856           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5857             <td class="entry_name
5858              " rowspan="3">
5859               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5860             </td>
5861             <td class="entry_type">
5862                 <span class="entry_type_name">int32</span>
5863
5864               <span class="entry_type_visibility"> [public]</span>
5865
5866
5867               <span class="entry_type_hwlevel">[legacy] </span>
5868
5869
5870
5871
5872             </td> <!-- entry_type -->
5873
5874             <td class="entry_description">
5875               <p>Adjustment to auto-exposure (AE) target image
5876 brightness.<wbr/></p>
5877             </td>
5878
5879             <td class="entry_units">
5880               Compensation steps
5881             </td>
5882
5883             <td class="entry_range">
5884               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5885             </td>
5886
5887             <td class="entry_tags">
5888               <ul class="entry_tags">
5889                   <li><a href="#tag_BC">BC</a></li>
5890               </ul>
5891             </td>
5892
5893           </tr>
5894           <tr class="entries_header">
5895             <th class="th_details" colspan="5">Details</th>
5896           </tr>
5897           <tr class="entry_cont">
5898             <td class="entry_details" colspan="5">
5899               <p>The adjustment is measured as a count of steps,<wbr/> with the
5900 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5901 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5902 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5903 will mean an exposure compensation of +2 EV; -3 will mean an
5904 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5905 of image brightness.<wbr/> Note that this control will only be
5906 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5907 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5908 <p>In the event of exposure compensation value being changed,<wbr/> camera device
5909 may take several frames to reach the newly requested exposure target.<wbr/>
5910 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5911 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
5912 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5913 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5914             </td>
5915           </tr>
5916
5917
5918           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5919            <!-- end of entry -->
5920         
5921                 
5922           <tr class="entry" id="dynamic_android.control.aeLock">
5923             <td class="entry_name
5924              " rowspan="3">
5925               android.<wbr/>control.<wbr/>ae<wbr/>Lock
5926             </td>
5927             <td class="entry_type">
5928                 <span class="entry_type_name entry_type_name_enum">byte</span>
5929
5930               <span class="entry_type_visibility"> [public as boolean]</span>
5931
5932
5933               <span class="entry_type_hwlevel">[legacy] </span>
5934
5935
5936
5937                 <ul class="entry_type_enum">
5938                   <li>
5939                     <span class="entry_type_enum_name">OFF</span>
5940                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5941 is free to update its parameters.<wbr/></p></span>
5942                   </li>
5943                   <li>
5944                     <span class="entry_type_enum_name">ON</span>
5945                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5946 must not update the exposure and sensitivity parameters
5947 while the lock is active.<wbr/></p>
5948 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5949 will still take effect while auto-exposure is locked.<wbr/></p>
5950 <p>Some rare LEGACY devices may not support
5951 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5952                   </li>
5953                 </ul>
5954
5955             </td> <!-- entry_type -->
5956
5957             <td class="entry_description">
5958               <p>Whether auto-exposure (AE) is currently locked to its latest
5959 calculated values.<wbr/></p>
5960             </td>
5961
5962             <td class="entry_units">
5963             </td>
5964
5965             <td class="entry_range">
5966             </td>
5967
5968             <td class="entry_tags">
5969               <ul class="entry_tags">
5970                   <li><a href="#tag_BC">BC</a></li>
5971               </ul>
5972             </td>
5973
5974           </tr>
5975           <tr class="entries_header">
5976             <th class="th_details" colspan="5">Details</th>
5977           </tr>
5978           <tr class="entry_cont">
5979             <td class="entry_details" colspan="5">
5980               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5981 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5982 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
5983 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5984 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5985 <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
5986 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5987 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5988 when AE is already locked,<wbr/> the camera device will not change the exposure time
5989 (<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>)
5990 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5991 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5992 <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/>
5993 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5994 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5995 the AE if AE is locked by the camera device internally during precapture metering
5996 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5997 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5998 will never succeed in a sequence of preview requests where AE lock is always set
5999 to <code>false</code>.<wbr/></p>
6000 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6001 get locked do not necessarily correspond to the settings that were present in the
6002 latest capture result received from the camera device,<wbr/> since additional captures
6003 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6004 application is switching between automatic and manual control and wishes to eliminate
6005 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6006 <ol>
6007 <li>Starting in auto-AE mode:</li>
6008 <li>Lock AE</li>
6009 <li>Wait for the first result to be output that has the AE locked</li>
6010 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6011 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6012 </ol>
6013 <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>
6014             </td>
6015           </tr>
6016
6017
6018           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6019            <!-- end of entry -->
6020         
6021                 
6022           <tr class="entry" id="dynamic_android.control.aeMode">
6023             <td class="entry_name
6024              " rowspan="3">
6025               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6026             </td>
6027             <td class="entry_type">
6028                 <span class="entry_type_name entry_type_name_enum">byte</span>
6029
6030               <span class="entry_type_visibility"> [public]</span>
6031
6032
6033               <span class="entry_type_hwlevel">[legacy] </span>
6034
6035
6036
6037                 <ul class="entry_type_enum">
6038                   <li>
6039                     <span class="entry_type_enum_name">OFF</span>
6040                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6041 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6042 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6043 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6044 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6045 a flash unit for this camera device.<wbr/></p>
6046 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6047 behavior is device dependent when AE is in OFF mode.<wbr/>
6048 To have consistent behavior across different devices,<wbr/>
6049 it is recommended to either set AWB and AF to OFF mode
6050 or lock AWB and AF before setting AE to OFF.<wbr/>
6051 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/>
6052 <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>
6053 for more details.<wbr/></p>
6054 <p>LEGACY devices do not support the OFF mode and will
6055 override attempts to use this value to ON.<wbr/></p></span>
6056                   </li>
6057                   <li>
6058                     <span class="entry_type_enum_name">ON</span>
6059                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6060 with no flash control.<wbr/></p>
6061 <p>The application's values for
6062 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6063 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6064 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6065 application has control over the various
6066 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6067                   </li>
6068                   <li>
6069                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
6070                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6071 the camera's flash unit,<wbr/> firing it in low-light
6072 conditions.<wbr/></p>
6073 <p>The flash may be fired during a precapture sequence
6074 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6075 may be fired for captures for which the
6076 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6077 STILL_<wbr/>CAPTURE</p></span>
6078                   </li>
6079                   <li>
6080                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
6081                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6082 the camera's flash unit,<wbr/> always firing it for still
6083 captures.<wbr/></p>
6084 <p>The flash may be fired during a precapture sequence
6085 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6086 will always be fired for captures for which the
6087 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6088 STILL_<wbr/>CAPTURE</p></span>
6089                   </li>
6090                   <li>
6091                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6092                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6093 reduction.<wbr/></p>
6094 <p>If deemed necessary by the camera device,<wbr/> a red eye
6095 reduction flash will fire during the precapture
6096 sequence.<wbr/></p></span>
6097                   </li>
6098                 </ul>
6099
6100             </td> <!-- entry_type -->
6101
6102             <td class="entry_description">
6103               <p>The desired mode for the camera device's
6104 auto-exposure routine.<wbr/></p>
6105             </td>
6106
6107             <td class="entry_units">
6108             </td>
6109
6110             <td class="entry_range">
6111               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6112             </td>
6113
6114             <td class="entry_tags">
6115               <ul class="entry_tags">
6116                   <li><a href="#tag_BC">BC</a></li>
6117               </ul>
6118             </td>
6119
6120           </tr>
6121           <tr class="entries_header">
6122             <th class="th_details" colspan="5">Details</th>
6123           </tr>
6124           <tr class="entry_cont">
6125             <td class="entry_details" colspan="5">
6126               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6127 AUTO.<wbr/></p>
6128 <p>When set to any of the ON modes,<wbr/> the camera device's
6129 auto-exposure routine is enabled,<wbr/> overriding the
6130 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6131 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6132 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6133 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6134 is selected,<wbr/> the camera device's flash unit controls are
6135 also overridden.<wbr/></p>
6136 <p>The FLASH modes are only available if the camera device
6137 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>
6138 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6139 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6140 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6141 camera device auto-exposure routine for the overridden
6142 fields for a given capture will be available in its
6143 CaptureResult.<wbr/></p>
6144             </td>
6145           </tr>
6146
6147
6148           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6149            <!-- end of entry -->
6150         
6151                 
6152           <tr class="entry" id="dynamic_android.control.aeRegions">
6153             <td class="entry_name
6154              " rowspan="5">
6155               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6156             </td>
6157             <td class="entry_type">
6158                 <span class="entry_type_name">int32</span>
6159                 <span class="entry_type_container">x</span>
6160
6161                 <span class="entry_type_array">
6162                   5 x area_count
6163                 </span>
6164               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6165
6166
6167
6168
6169
6170
6171             </td> <!-- entry_type -->
6172
6173             <td class="entry_description">
6174               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6175             </td>
6176
6177             <td class="entry_units">
6178               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6179             </td>
6180
6181             <td class="entry_range">
6182               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6183 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6184             </td>
6185
6186             <td class="entry_tags">
6187               <ul class="entry_tags">
6188                   <li><a href="#tag_BC">BC</a></li>
6189               </ul>
6190             </td>
6191
6192           </tr>
6193           <tr class="entries_header">
6194             <th class="th_details" colspan="5">Details</th>
6195           </tr>
6196           <tr class="entry_cont">
6197             <td class="entry_details" colspan="5">
6198               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6199 Otherwise will always be present.<wbr/></p>
6200 <p>The maximum number of regions supported by the device is determined by the value
6201 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6202 <p>The coordinate system is based on the active pixel array,<wbr/>
6203 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6204 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6205 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6206 bottom-right pixel in the active pixel array.<wbr/></p>
6207 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6208 for every pixel in the area.<wbr/> This means that a large metering area
6209 with the same weight as a smaller area will have more effect in
6210 the metering result.<wbr/> Metering areas can partially overlap and the
6211 camera device will add the weights in the overlap region.<wbr/></p>
6212 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6213 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6214 weight is ignored.<wbr/></p>
6215 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6216 camera device.<wbr/></p>
6217 <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
6218 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6219 region and output only the intersection rectangle as the metering region in the result
6220 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6221 not reported in the result metadata.<wbr/></p>
6222             </td>
6223           </tr>
6224
6225           <tr class="entries_header">
6226             <th class="th_details" colspan="5">HAL Implementation Details</th>
6227           </tr>
6228           <tr class="entry_cont">
6229             <td class="entry_details" colspan="5">
6230               <p>The HAL level representation of MeteringRectangle[] is a
6231 int[5 * area_<wbr/>count].<wbr/>
6232 Every five elements represent a metering region of
6233 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6234 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6235 exclusive on xmax and ymax.<wbr/></p>
6236             </td>
6237           </tr>
6238
6239           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6240            <!-- end of entry -->
6241         
6242                 
6243           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6244             <td class="entry_name
6245              " rowspan="3">
6246               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6247             </td>
6248             <td class="entry_type">
6249                 <span class="entry_type_name">int32</span>
6250                 <span class="entry_type_container">x</span>
6251
6252                 <span class="entry_type_array">
6253                   2
6254                 </span>
6255               <span class="entry_type_visibility"> [public as rangeInt]</span>
6256
6257
6258               <span class="entry_type_hwlevel">[legacy] </span>
6259
6260
6261
6262
6263             </td> <!-- entry_type -->
6264
6265             <td class="entry_description">
6266               <p>Range over which the auto-exposure routine can
6267 adjust the capture frame rate to maintain good
6268 exposure.<wbr/></p>
6269             </td>
6270
6271             <td class="entry_units">
6272               Frames per second (FPS)
6273             </td>
6274
6275             <td class="entry_range">
6276               <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>
6277             </td>
6278
6279             <td class="entry_tags">
6280               <ul class="entry_tags">
6281                   <li><a href="#tag_BC">BC</a></li>
6282               </ul>
6283             </td>
6284
6285           </tr>
6286           <tr class="entries_header">
6287             <th class="th_details" colspan="5">Details</th>
6288           </tr>
6289           <tr class="entry_cont">
6290             <td class="entry_details" colspan="5">
6291               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6292 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6293 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6294             </td>
6295           </tr>
6296
6297
6298           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6299            <!-- end of entry -->
6300         
6301                 
6302           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6303             <td class="entry_name
6304              " rowspan="5">
6305               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6306             </td>
6307             <td class="entry_type">
6308                 <span class="entry_type_name entry_type_name_enum">byte</span>
6309
6310               <span class="entry_type_visibility"> [public]</span>
6311
6312
6313               <span class="entry_type_hwlevel">[limited] </span>
6314
6315
6316
6317                 <ul class="entry_type_enum">
6318                   <li>
6319                     <span class="entry_type_enum_name">IDLE</span>
6320                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6321                   </li>
6322                   <li>
6323                     <span class="entry_type_enum_name">START</span>
6324                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6325 by the camera device.<wbr/></p>
6326 <p>The exact effect of the precapture trigger depends on
6327 the current AE mode and state.<wbr/></p></span>
6328                   </li>
6329                   <li>
6330                     <span class="entry_type_enum_name">CANCEL</span>
6331                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6332 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6333 initial state.<wbr/></p></span>
6334                   </li>
6335                 </ul>
6336
6337             </td> <!-- entry_type -->
6338
6339             <td class="entry_description">
6340               <p>Whether the camera device will trigger a precapture
6341 metering sequence when it processes this request.<wbr/></p>
6342             </td>
6343
6344             <td class="entry_units">
6345             </td>
6346
6347             <td class="entry_range">
6348             </td>
6349
6350             <td class="entry_tags">
6351               <ul class="entry_tags">
6352                   <li><a href="#tag_BC">BC</a></li>
6353               </ul>
6354             </td>
6355
6356           </tr>
6357           <tr class="entries_header">
6358             <th class="th_details" colspan="5">Details</th>
6359           </tr>
6360           <tr class="entry_cont">
6361             <td class="entry_details" colspan="5">
6362               <p>This entry is normally set to IDLE,<wbr/> or is not
6363 included at all in the request settings.<wbr/> When included and
6364 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6365 precapture metering sequence.<wbr/></p>
6366 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6367 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6368 If a precapture metering sequence is already completed,<wbr/> and the camera
6369 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6370 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6371 <p>The precapture sequence should be triggered before starting a
6372 high-quality still capture for final metering decisions to
6373 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6374 scene brightness and required final capture flash power,<wbr/> when
6375 the flash is enabled.<wbr/></p>
6376 <p>Normally,<wbr/> this entry should be set to START for only a
6377 single request,<wbr/> and the application should wait until the
6378 sequence completes before starting a new one.<wbr/></p>
6379 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6380 may lock the auto-exposure routine internally to be able to accurately expose the
6381 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6382 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6383 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6384 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
6385 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
6386 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6387 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6388 internally locked AE if the application doesn't submit a still capture request after
6389 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6390 be used in devices that have earlier API levels.<wbr/></p>
6391 <p>The exact effect of auto-exposure (AE) precapture trigger
6392 depends on the current AE mode and state; see
6393 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6394 details.<wbr/></p>
6395 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6396 capturing a high-resolution JPEG image will automatically trigger a
6397 precapture sequence before the high-resolution capture,<wbr/> including
6398 potentially firing a pre-capture flash.<wbr/></p>
6399 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6400 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6401 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6402 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6403 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6404 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
6405 example.<wbr/></p>
6406 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6407 the camera device will complete them in the optimal order for that device.<wbr/></p>
6408             </td>
6409           </tr>
6410
6411           <tr class="entries_header">
6412             <th class="th_details" colspan="5">HAL Implementation Details</th>
6413           </tr>
6414           <tr class="entry_cont">
6415             <td class="entry_details" colspan="5">
6416               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6417 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6418 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6419 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6420 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6421             </td>
6422           </tr>
6423
6424           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6425            <!-- end of entry -->
6426         
6427                 
6428           <tr class="entry" id="dynamic_android.control.aeState">
6429             <td class="entry_name
6430              " rowspan="3">
6431               android.<wbr/>control.<wbr/>ae<wbr/>State
6432             </td>
6433             <td class="entry_type">
6434                 <span class="entry_type_name entry_type_name_enum">byte</span>
6435
6436               <span class="entry_type_visibility"> [public]</span>
6437
6438
6439               <span class="entry_type_hwlevel">[limited] </span>
6440
6441
6442
6443                 <ul class="entry_type_enum">
6444                   <li>
6445                     <span class="entry_type_enum_name">INACTIVE</span>
6446                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6447 <p>When a camera device is opened,<wbr/> it starts in
6448 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6449 this state in capture result.<wbr/></p></span>
6450                   </li>
6451                   <li>
6452                     <span class="entry_type_enum_name">SEARCHING</span>
6453                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6454 for the current scene.<wbr/></p>
6455 <p>This is a transient state,<wbr/> the camera device may skip
6456 reporting this state in capture result.<wbr/></p></span>
6457                   </li>
6458                   <li>
6459                     <span class="entry_type_enum_name">CONVERGED</span>
6460                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6461 current scene.<wbr/></p></span>
6462                   </li>
6463                   <li>
6464                     <span class="entry_type_enum_name">LOCKED</span>
6465                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6466                   </li>
6467                   <li>
6468                     <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6469                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6470 needs to be fired for good quality still
6471 capture.<wbr/></p></span>
6472                   </li>
6473                   <li>
6474                     <span class="entry_type_enum_name">PRECAPTURE</span>
6475                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6476 and is currently executing it.<wbr/></p>
6477 <p>Precapture can be triggered through setting
6478 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6479 active and completed (if it causes camera device internal AE lock) precapture
6480 metering sequence can be canceled through setting
6481 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6482 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6483 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6484 state,<wbr/> the camera device may skip reporting this state in
6485 capture result.<wbr/></p></span>
6486                   </li>
6487                 </ul>
6488
6489             </td> <!-- entry_type -->
6490
6491             <td class="entry_description">
6492               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6493             </td>
6494
6495             <td class="entry_units">
6496             </td>
6497
6498             <td class="entry_range">
6499             </td>
6500
6501             <td class="entry_tags">
6502             </td>
6503
6504           </tr>
6505           <tr class="entries_header">
6506             <th class="th_details" colspan="5">Details</th>
6507           </tr>
6508           <tr class="entry_cont">
6509             <td class="entry_details" colspan="5">
6510               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6511 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6512 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
6513 the algorithm states to INACTIVE.<wbr/></p>
6514 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6515 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6516 seen in a result.<wbr/></p>
6517 <p>The state in the result is the state for this image (in sync with this image): if
6518 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6519 be good to use.<wbr/></p>
6520 <p>Below are state transition tables for different AE modes.<wbr/></p>
6521 <table>
6522 <thead>
6523 <tr>
6524 <th align="center">State</th>
6525 <th align="center">Transition Cause</th>
6526 <th align="center">New State</th>
6527 <th align="center">Notes</th>
6528 </tr>
6529 </thead>
6530 <tbody>
6531 <tr>
6532 <td align="center">INACTIVE</td>
6533 <td align="center"></td>
6534 <td align="center">INACTIVE</td>
6535 <td align="center">Camera device auto exposure algorithm is disabled</td>
6536 </tr>
6537 </tbody>
6538 </table>
6539 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6540 <table>
6541 <thead>
6542 <tr>
6543 <th align="center">State</th>
6544 <th align="center">Transition Cause</th>
6545 <th align="center">New State</th>
6546 <th align="center">Notes</th>
6547 </tr>
6548 </thead>
6549 <tbody>
6550 <tr>
6551 <td align="center">INACTIVE</td>
6552 <td align="center">Camera device initiates AE scan</td>
6553 <td align="center">SEARCHING</td>
6554 <td align="center">Values changing</td>
6555 </tr>
6556 <tr>
6557 <td align="center">INACTIVE</td>
6558 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6559 <td align="center">LOCKED</td>
6560 <td align="center">Values locked</td>
6561 </tr>
6562 <tr>
6563 <td align="center">SEARCHING</td>
6564 <td align="center">Camera device finishes AE scan</td>
6565 <td align="center">CONVERGED</td>
6566 <td align="center">Good values,<wbr/> not changing</td>
6567 </tr>
6568 <tr>
6569 <td align="center">SEARCHING</td>
6570 <td align="center">Camera device finishes AE scan</td>
6571 <td align="center">FLASH_<wbr/>REQUIRED</td>
6572 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6573 </tr>
6574 <tr>
6575 <td align="center">SEARCHING</td>
6576 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6577 <td align="center">LOCKED</td>
6578 <td align="center">Values locked</td>
6579 </tr>
6580 <tr>
6581 <td align="center">CONVERGED</td>
6582 <td align="center">Camera device initiates AE scan</td>
6583 <td align="center">SEARCHING</td>
6584 <td align="center">Values changing</td>
6585 </tr>
6586 <tr>
6587 <td align="center">CONVERGED</td>
6588 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6589 <td align="center">LOCKED</td>
6590 <td align="center">Values locked</td>
6591 </tr>
6592 <tr>
6593 <td align="center">FLASH_<wbr/>REQUIRED</td>
6594 <td align="center">Camera device initiates AE scan</td>
6595 <td align="center">SEARCHING</td>
6596 <td align="center">Values changing</td>
6597 </tr>
6598 <tr>
6599 <td align="center">FLASH_<wbr/>REQUIRED</td>
6600 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6601 <td align="center">LOCKED</td>
6602 <td align="center">Values locked</td>
6603 </tr>
6604 <tr>
6605 <td align="center">LOCKED</td>
6606 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6607 <td align="center">SEARCHING</td>
6608 <td align="center">Values not good after unlock</td>
6609 </tr>
6610 <tr>
6611 <td align="center">LOCKED</td>
6612 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6613 <td align="center">CONVERGED</td>
6614 <td align="center">Values good after unlock</td>
6615 </tr>
6616 <tr>
6617 <td align="center">LOCKED</td>
6618 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6619 <td align="center">FLASH_<wbr/>REQUIRED</td>
6620 <td align="center">Exposure good,<wbr/> but too dark</td>
6621 </tr>
6622 <tr>
6623 <td align="center">PRECAPTURE</td>
6624 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6625 <td align="center">CONVERGED</td>
6626 <td align="center">Ready for high-quality capture</td>
6627 </tr>
6628 <tr>
6629 <td align="center">PRECAPTURE</td>
6630 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6631 <td align="center">LOCKED</td>
6632 <td align="center">Ready for high-quality capture</td>
6633 </tr>
6634 <tr>
6635 <td align="center">LOCKED</td>
6636 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6637 <td align="center">LOCKED</td>
6638 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6639 </tr>
6640 <tr>
6641 <td align="center">LOCKED</td>
6642 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6643 <td align="center">LOCKED</td>
6644 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6645 </tr>
6646 <tr>
6647 <td align="center">Any state (excluding LOCKED)</td>
6648 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6649 <td align="center">PRECAPTURE</td>
6650 <td align="center">Start AE precapture metering sequence</td>
6651 </tr>
6652 <tr>
6653 <td align="center">Any state (excluding LOCKED)</td>
6654 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6655 <td align="center">INACTIVE</td>
6656 <td align="center">Currently active precapture metering sequence is canceled</td>
6657 </tr>
6658 </tbody>
6659 </table>
6660 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6661 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6662 can be skipped in that manner is called a transient state.<wbr/></p>
6663 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6664 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6665 transient states between two results.<wbr/> See below table for examples:</p>
6666 <table>
6667 <thead>
6668 <tr>
6669 <th align="center">State</th>
6670 <th align="center">Transition Cause</th>
6671 <th align="center">New State</th>
6672 <th align="center">Notes</th>
6673 </tr>
6674 </thead>
6675 <tbody>
6676 <tr>
6677 <td align="center">INACTIVE</td>
6678 <td align="center">Camera device finished AE scan</td>
6679 <td align="center">CONVERGED</td>
6680 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6681 </tr>
6682 <tr>
6683 <td align="center">Any state (excluding LOCKED)</td>
6684 <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>
6685 <td align="center">FLASH_<wbr/>REQUIRED</td>
6686 <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>
6687 </tr>
6688 <tr>
6689 <td align="center">Any state (excluding LOCKED)</td>
6690 <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>
6691 <td align="center">CONVERGED</td>
6692 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6693 </tr>
6694 <tr>
6695 <td align="center">Any state (excluding LOCKED)</td>
6696 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6697 <td align="center">FLASH_<wbr/>REQUIRED</td>
6698 <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>
6699 </tr>
6700 <tr>
6701 <td align="center">Any state (excluding LOCKED)</td>
6702 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6703 <td align="center">CONVERGED</td>
6704 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6705 </tr>
6706 <tr>
6707 <td align="center">CONVERGED</td>
6708 <td align="center">Camera device finished AE scan</td>
6709 <td align="center">FLASH_<wbr/>REQUIRED</td>
6710 <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>
6711 </tr>
6712 <tr>
6713 <td align="center">FLASH_<wbr/>REQUIRED</td>
6714 <td align="center">Camera device finished AE scan</td>
6715 <td align="center">CONVERGED</td>
6716 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6717 </tr>
6718 </tbody>
6719 </table>
6720             </td>
6721           </tr>
6722
6723
6724           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6725            <!-- end of entry -->
6726         
6727                 
6728           <tr class="entry" id="dynamic_android.control.afMode">
6729             <td class="entry_name
6730              " rowspan="5">
6731               android.<wbr/>control.<wbr/>af<wbr/>Mode
6732             </td>
6733             <td class="entry_type">
6734                 <span class="entry_type_name entry_type_name_enum">byte</span>
6735
6736               <span class="entry_type_visibility"> [public]</span>
6737
6738
6739               <span class="entry_type_hwlevel">[legacy] </span>
6740
6741
6742
6743                 <ul class="entry_type_enum">
6744                   <li>
6745                     <span class="entry_type_enum_name">OFF</span>
6746                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6747 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6748 application.<wbr/></p></span>
6749                   </li>
6750                   <li>
6751                     <span class="entry_type_enum_name">AUTO</span>
6752                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6753 <p>In this mode,<wbr/> the lens does not move unless
6754 the autofocus trigger action is called.<wbr/> When that trigger
6755 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6756 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6757 <p>Always supported if lens is not fixed focus.<wbr/></p>
6758 <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
6759 is fixed-focus.<wbr/></p>
6760 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6761 and sets the AF state to INACTIVE.<wbr/></p></span>
6762                   </li>
6763                   <li>
6764                     <span class="entry_type_enum_name">MACRO</span>
6765                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6766 <p>In this mode,<wbr/> the lens does not move unless the
6767 autofocus trigger action is called.<wbr/> When that trigger is
6768 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6769 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6770 mode is optimized for focusing on objects very close to
6771 the camera.<wbr/></p>
6772 <p>When that trigger is activated,<wbr/> AF will transition to
6773 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6774 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6775 position to default,<wbr/> and sets the AF state to
6776 INACTIVE.<wbr/></p></span>
6777                   </li>
6778                   <li>
6779                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6780                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6781 position continually to attempt to provide a
6782 constantly-in-focus image stream.<wbr/></p>
6783 <p>The focusing behavior should be suitable for good quality
6784 video recording; typically this means slower focus
6785 movement and no overshoots.<wbr/> When the AF trigger is not
6786 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6787 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6788 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6789 the algorithm should immediately transition into
6790 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6791 lens position until a cancel AF trigger is received.<wbr/></p>
6792 <p>Once cancel is received,<wbr/> the algorithm should transition
6793 back to INACTIVE and resume passive scan.<wbr/> Note that this
6794 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6795 ongoing PASSIVE_<wbr/>SCAN must immediately be
6796 canceled.<wbr/></p></span>
6797                   </li>
6798                   <li>
6799                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6800                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6801 position continually to attempt to provide a
6802 constantly-in-focus image stream.<wbr/></p>
6803 <p>The focusing behavior should be suitable for still image
6804 capture; typically this means focusing as fast as
6805 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6806 algorithm should start in INACTIVE state,<wbr/> and then
6807 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6808 appropriate as it attempts to maintain focus.<wbr/> When the AF
6809 trigger is activated,<wbr/> the algorithm should finish its
6810 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6811 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6812 lens position until a cancel AF trigger is received.<wbr/></p>
6813 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
6814 should transition back to INACTIVE and then act as if it
6815 has just been started.<wbr/></p></span>
6816                   </li>
6817                   <li>
6818                     <span class="entry_type_enum_name">EDOF</span>
6819                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6820 <p>The camera device will produce images with an extended
6821 depth of field automatically; no special focusing
6822 operations need to be done before taking a picture.<wbr/></p>
6823 <p>AF triggers are ignored,<wbr/> and the AF state will always be
6824 INACTIVE.<wbr/></p></span>
6825                   </li>
6826                 </ul>
6827
6828             </td> <!-- entry_type -->
6829
6830             <td class="entry_description">
6831               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6832 mode it is set to.<wbr/></p>
6833             </td>
6834
6835             <td class="entry_units">
6836             </td>
6837
6838             <td class="entry_range">
6839               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6840             </td>
6841
6842             <td class="entry_tags">
6843               <ul class="entry_tags">
6844                   <li><a href="#tag_BC">BC</a></li>
6845               </ul>
6846             </td>
6847
6848           </tr>
6849           <tr class="entries_header">
6850             <th class="th_details" colspan="5">Details</th>
6851           </tr>
6852           <tr class="entry_cont">
6853             <td class="entry_details" colspan="5">
6854               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6855 (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
6856 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6857 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
6858 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>
6859 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6860 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6861 in result metadata.<wbr/></p>
6862             </td>
6863           </tr>
6864
6865           <tr class="entries_header">
6866             <th class="th_details" colspan="5">HAL Implementation Details</th>
6867           </tr>
6868           <tr class="entry_cont">
6869             <td class="entry_details" colspan="5">
6870               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6871 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
6872 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6873 <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
6874 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6875 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6876 the same focal plane remains in focus.<wbr/></p>
6877 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6878 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6879 (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
6880 same lock behavior as above.<wbr/></p>
6881 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6882 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/>
6883 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6884 manual control.<wbr/></p>
6885 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6886 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6887 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6888 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6889 that will arise on camera modules with open-loop VCMs.<wbr/></p>
6890             </td>
6891           </tr>
6892
6893           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6894            <!-- end of entry -->
6895         
6896                 
6897           <tr class="entry" id="dynamic_android.control.afRegions">
6898             <td class="entry_name
6899              " rowspan="5">
6900               android.<wbr/>control.<wbr/>af<wbr/>Regions
6901             </td>
6902             <td class="entry_type">
6903                 <span class="entry_type_name">int32</span>
6904                 <span class="entry_type_container">x</span>
6905
6906                 <span class="entry_type_array">
6907                   5 x area_count
6908                 </span>
6909               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6910
6911
6912
6913
6914
6915
6916             </td> <!-- entry_type -->
6917
6918             <td class="entry_description">
6919               <p>List of metering areas to use for auto-focus.<wbr/></p>
6920             </td>
6921
6922             <td class="entry_units">
6923               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6924             </td>
6925
6926             <td class="entry_range">
6927               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6928 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6929             </td>
6930
6931             <td class="entry_tags">
6932               <ul class="entry_tags">
6933                   <li><a href="#tag_BC">BC</a></li>
6934               </ul>
6935             </td>
6936
6937           </tr>
6938           <tr class="entries_header">
6939             <th class="th_details" colspan="5">Details</th>
6940           </tr>
6941           <tr class="entry_cont">
6942             <td class="entry_details" colspan="5">
6943               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6944 Otherwise will always be present.<wbr/></p>
6945 <p>The maximum number of focus areas supported by the device is determined by the value
6946 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6947 <p>The coordinate system is based on the active pixel array,<wbr/>
6948 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6949 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6950 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6951 bottom-right pixel in the active pixel array.<wbr/></p>
6952 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6953 for every pixel in the area.<wbr/> This means that a large metering area
6954 with the same weight as a smaller area will have more effect in
6955 the metering result.<wbr/> Metering areas can partially overlap and the
6956 camera device will add the weights in the overlap region.<wbr/></p>
6957 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6958 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6959 ignored.<wbr/></p>
6960 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6961 camera device.<wbr/></p>
6962 <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
6963 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6964 region and output only the intersection rectangle as the metering region in the result
6965 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6966 not reported in the result metadata.<wbr/></p>
6967             </td>
6968           </tr>
6969
6970           <tr class="entries_header">
6971             <th class="th_details" colspan="5">HAL Implementation Details</th>
6972           </tr>
6973           <tr class="entry_cont">
6974             <td class="entry_details" colspan="5">
6975               <p>The HAL level representation of MeteringRectangle[] is a
6976 int[5 * area_<wbr/>count].<wbr/>
6977 Every five elements represent a metering region of
6978 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6979 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6980 exclusive on xmax and ymax.<wbr/></p>
6981             </td>
6982           </tr>
6983
6984           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6985            <!-- end of entry -->
6986         
6987                 
6988           <tr class="entry" id="dynamic_android.control.afTrigger">
6989             <td class="entry_name
6990              " rowspan="5">
6991               android.<wbr/>control.<wbr/>af<wbr/>Trigger
6992             </td>
6993             <td class="entry_type">
6994                 <span class="entry_type_name entry_type_name_enum">byte</span>
6995
6996               <span class="entry_type_visibility"> [public]</span>
6997
6998
6999               <span class="entry_type_hwlevel">[legacy] </span>
7000
7001
7002
7003                 <ul class="entry_type_enum">
7004                   <li>
7005                     <span class="entry_type_enum_name">IDLE</span>
7006                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7007                   </li>
7008                   <li>
7009                     <span class="entry_type_enum_name">START</span>
7010                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7011                   </li>
7012                   <li>
7013                     <span class="entry_type_enum_name">CANCEL</span>
7014                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7015 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7016                   </li>
7017                 </ul>
7018
7019             </td> <!-- entry_type -->
7020
7021             <td class="entry_description">
7022               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7023             </td>
7024
7025             <td class="entry_units">
7026             </td>
7027
7028             <td class="entry_range">
7029             </td>
7030
7031             <td class="entry_tags">
7032               <ul class="entry_tags">
7033                   <li><a href="#tag_BC">BC</a></li>
7034               </ul>
7035             </td>
7036
7037           </tr>
7038           <tr class="entries_header">
7039             <th class="th_details" colspan="5">Details</th>
7040           </tr>
7041           <tr class="entry_cont">
7042             <td class="entry_details" colspan="5">
7043               <p>This entry is normally set to IDLE,<wbr/> or is not
7044 included at all in the request settings.<wbr/></p>
7045 <p>When included and set to START,<wbr/> the camera device will trigger the
7046 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7047 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7048 and return to its initial AF state.<wbr/></p>
7049 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7050 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7051 START for multiple captures in a row means restarting the AF operation over
7052 and over again.<wbr/></p>
7053 <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>
7054 <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>
7055 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7056 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7057 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7058 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7059 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7060             </td>
7061           </tr>
7062
7063           <tr class="entries_header">
7064             <th class="th_details" colspan="5">HAL Implementation Details</th>
7065           </tr>
7066           <tr class="entry_cont">
7067             <td class="entry_details" colspan="5">
7068               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7069 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7070 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7071 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7072 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7073             </td>
7074           </tr>
7075
7076           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7077            <!-- end of entry -->
7078         
7079                 
7080           <tr class="entry" id="dynamic_android.control.afState">
7081             <td class="entry_name
7082              " rowspan="3">
7083               android.<wbr/>control.<wbr/>af<wbr/>State
7084             </td>
7085             <td class="entry_type">
7086                 <span class="entry_type_name entry_type_name_enum">byte</span>
7087
7088               <span class="entry_type_visibility"> [public]</span>
7089
7090
7091               <span class="entry_type_hwlevel">[legacy] </span>
7092
7093
7094
7095                 <ul class="entry_type_enum">
7096                   <li>
7097                     <span class="entry_type_enum_name">INACTIVE</span>
7098                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7099 to scan.<wbr/></p>
7100 <p>When a camera device is opened,<wbr/> it starts in this
7101 state.<wbr/> This is a transient state,<wbr/> the camera device may
7102 skip reporting this state in capture
7103 result.<wbr/></p></span>
7104                   </li>
7105                   <li>
7106                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7107                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7108 camera device in a continuous autofocus mode.<wbr/></p>
7109 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7110 state,<wbr/> the camera device may skip reporting this state in
7111 capture result.<wbr/></p></span>
7112                   </li>
7113                   <li>
7114                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7115                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7116 restart scanning at any time.<wbr/></p>
7117 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7118 state,<wbr/> the camera device may skip reporting this state in
7119 capture result.<wbr/></p></span>
7120                   </li>
7121                   <li>
7122                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7123                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7124 triggered by AF trigger.<wbr/></p>
7125 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7126 state,<wbr/> the camera device may skip reporting this state in
7127 capture result.<wbr/></p></span>
7128                   </li>
7129                   <li>
7130                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7131                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7132 focus.<wbr/></p>
7133 <p>This state is reached only after an explicit START AF trigger has been
7134 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7135 <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
7136 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>
7137                   </li>
7138                   <li>
7139                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7140                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7141 focus.<wbr/></p>
7142 <p>This state is reached only after an explicit START AF trigger has been
7143 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7144 <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
7145 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>
7146                   </li>
7147                   <li>
7148                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7149                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7150 and may restart scanning at any time.<wbr/></p>
7151 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7152 device may skip reporting this state in capture result.<wbr/></p>
7153 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7154 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7155                   </li>
7156                 </ul>
7157
7158             </td> <!-- entry_type -->
7159
7160             <td class="entry_description">
7161               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7162             </td>
7163
7164             <td class="entry_units">
7165             </td>
7166
7167             <td class="entry_range">
7168             </td>
7169
7170             <td class="entry_tags">
7171             </td>
7172
7173           </tr>
7174           <tr class="entries_header">
7175             <th class="th_details" colspan="5">Details</th>
7176           </tr>
7177           <tr class="entry_cont">
7178             <td class="entry_details" colspan="5">
7179               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7180 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7181 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
7182 the algorithm states to INACTIVE.<wbr/></p>
7183 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7184 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7185 seen in a result.<wbr/></p>
7186 <p>The state in the result is the state for this image (in sync with this image): if
7187 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7188 be sharp.<wbr/></p>
7189 <p>Below are state transition tables for different AF modes.<wbr/></p>
7190 <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>
7191 <table>
7192 <thead>
7193 <tr>
7194 <th align="center">State</th>
7195 <th align="center">Transition Cause</th>
7196 <th align="center">New State</th>
7197 <th align="center">Notes</th>
7198 </tr>
7199 </thead>
7200 <tbody>
7201 <tr>
7202 <td align="center">INACTIVE</td>
7203 <td align="center"></td>
7204 <td align="center">INACTIVE</td>
7205 <td align="center">Never changes</td>
7206 </tr>
7207 </tbody>
7208 </table>
7209 <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>
7210 <table>
7211 <thead>
7212 <tr>
7213 <th align="center">State</th>
7214 <th align="center">Transition Cause</th>
7215 <th align="center">New State</th>
7216 <th align="center">Notes</th>
7217 </tr>
7218 </thead>
7219 <tbody>
7220 <tr>
7221 <td align="center">INACTIVE</td>
7222 <td align="center">AF_<wbr/>TRIGGER</td>
7223 <td align="center">ACTIVE_<wbr/>SCAN</td>
7224 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7225 </tr>
7226 <tr>
7227 <td align="center">ACTIVE_<wbr/>SCAN</td>
7228 <td align="center">AF sweep done</td>
7229 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7230 <td align="center">Focused,<wbr/> Lens now locked</td>
7231 </tr>
7232 <tr>
7233 <td align="center">ACTIVE_<wbr/>SCAN</td>
7234 <td align="center">AF sweep done</td>
7235 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7236 <td align="center">Not focused,<wbr/> Lens now locked</td>
7237 </tr>
7238 <tr>
7239 <td align="center">ACTIVE_<wbr/>SCAN</td>
7240 <td align="center">AF_<wbr/>CANCEL</td>
7241 <td align="center">INACTIVE</td>
7242 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7243 </tr>
7244 <tr>
7245 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7246 <td align="center">AF_<wbr/>CANCEL</td>
7247 <td align="center">INACTIVE</td>
7248 <td align="center">Cancel/<wbr/>reset AF</td>
7249 </tr>
7250 <tr>
7251 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7252 <td align="center">AF_<wbr/>TRIGGER</td>
7253 <td align="center">ACTIVE_<wbr/>SCAN</td>
7254 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7255 </tr>
7256 <tr>
7257 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7258 <td align="center">AF_<wbr/>CANCEL</td>
7259 <td align="center">INACTIVE</td>
7260 <td align="center">Cancel/<wbr/>reset AF</td>
7261 </tr>
7262 <tr>
7263 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7264 <td align="center">AF_<wbr/>TRIGGER</td>
7265 <td align="center">ACTIVE_<wbr/>SCAN</td>
7266 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7267 </tr>
7268 <tr>
7269 <td align="center">Any state</td>
7270 <td align="center">Mode change</td>
7271 <td align="center">INACTIVE</td>
7272 <td align="center"></td>
7273 </tr>
7274 </tbody>
7275 </table>
7276 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7277 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7278 can be skipped in that manner is called a transient state.<wbr/></p>
7279 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7280 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7281 one or more transient states between two results.<wbr/> See below table for examples:</p>
7282 <table>
7283 <thead>
7284 <tr>
7285 <th align="center">State</th>
7286 <th align="center">Transition Cause</th>
7287 <th align="center">New State</th>
7288 <th align="center">Notes</th>
7289 </tr>
7290 </thead>
7291 <tbody>
7292 <tr>
7293 <td align="center">INACTIVE</td>
7294 <td align="center">AF_<wbr/>TRIGGER</td>
7295 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7296 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7297 </tr>
7298 <tr>
7299 <td align="center">INACTIVE</td>
7300 <td align="center">AF_<wbr/>TRIGGER</td>
7301 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7302 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7303 </tr>
7304 <tr>
7305 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7306 <td align="center">AF_<wbr/>TRIGGER</td>
7307 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7308 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7309 </tr>
7310 <tr>
7311 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7312 <td align="center">AF_<wbr/>TRIGGER</td>
7313 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7314 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7315 </tr>
7316 </tbody>
7317 </table>
7318 <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>
7319 <table>
7320 <thead>
7321 <tr>
7322 <th align="center">State</th>
7323 <th align="center">Transition Cause</th>
7324 <th align="center">New State</th>
7325 <th align="center">Notes</th>
7326 </tr>
7327 </thead>
7328 <tbody>
7329 <tr>
7330 <td align="center">INACTIVE</td>
7331 <td align="center">Camera device initiates new scan</td>
7332 <td align="center">PASSIVE_<wbr/>SCAN</td>
7333 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7334 </tr>
7335 <tr>
7336 <td align="center">INACTIVE</td>
7337 <td align="center">AF_<wbr/>TRIGGER</td>
7338 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7339 <td align="center">AF state query,<wbr/> Lens now locked</td>
7340 </tr>
7341 <tr>
7342 <td align="center">PASSIVE_<wbr/>SCAN</td>
7343 <td align="center">Camera device completes current scan</td>
7344 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7345 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7346 </tr>
7347 <tr>
7348 <td align="center">PASSIVE_<wbr/>SCAN</td>
7349 <td align="center">Camera device fails current scan</td>
7350 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7351 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7352 </tr>
7353 <tr>
7354 <td align="center">PASSIVE_<wbr/>SCAN</td>
7355 <td align="center">AF_<wbr/>TRIGGER</td>
7356 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7357 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7358 </tr>
7359 <tr>
7360 <td align="center">PASSIVE_<wbr/>SCAN</td>
7361 <td align="center">AF_<wbr/>TRIGGER</td>
7362 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7363 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7364 </tr>
7365 <tr>
7366 <td align="center">PASSIVE_<wbr/>SCAN</td>
7367 <td align="center">AF_<wbr/>CANCEL</td>
7368 <td align="center">INACTIVE</td>
7369 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7370 </tr>
7371 <tr>
7372 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7373 <td align="center">Camera device initiates new scan</td>
7374 <td align="center">PASSIVE_<wbr/>SCAN</td>
7375 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7376 </tr>
7377 <tr>
7378 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7379 <td align="center">Camera device initiates new scan</td>
7380 <td align="center">PASSIVE_<wbr/>SCAN</td>
7381 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7382 </tr>
7383 <tr>
7384 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7385 <td align="center">AF_<wbr/>TRIGGER</td>
7386 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7387 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7388 </tr>
7389 <tr>
7390 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7391 <td align="center">AF_<wbr/>TRIGGER</td>
7392 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7393 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7394 </tr>
7395 <tr>
7396 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7397 <td align="center">AF_<wbr/>TRIGGER</td>
7398 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7399 <td align="center">No effect</td>
7400 </tr>
7401 <tr>
7402 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7403 <td align="center">AF_<wbr/>CANCEL</td>
7404 <td align="center">INACTIVE</td>
7405 <td align="center">Restart AF scan</td>
7406 </tr>
7407 <tr>
7408 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7409 <td align="center">AF_<wbr/>TRIGGER</td>
7410 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7411 <td align="center">No effect</td>
7412 </tr>
7413 <tr>
7414 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7415 <td align="center">AF_<wbr/>CANCEL</td>
7416 <td align="center">INACTIVE</td>
7417 <td align="center">Restart AF scan</td>
7418 </tr>
7419 </tbody>
7420 </table>
7421 <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>
7422 <table>
7423 <thead>
7424 <tr>
7425 <th align="center">State</th>
7426 <th align="center">Transition Cause</th>
7427 <th align="center">New State</th>
7428 <th align="center">Notes</th>
7429 </tr>
7430 </thead>
7431 <tbody>
7432 <tr>
7433 <td align="center">INACTIVE</td>
7434 <td align="center">Camera device initiates new scan</td>
7435 <td align="center">PASSIVE_<wbr/>SCAN</td>
7436 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7437 </tr>
7438 <tr>
7439 <td align="center">INACTIVE</td>
7440 <td align="center">AF_<wbr/>TRIGGER</td>
7441 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7442 <td align="center">AF state query,<wbr/> Lens now locked</td>
7443 </tr>
7444 <tr>
7445 <td align="center">PASSIVE_<wbr/>SCAN</td>
7446 <td align="center">Camera device completes current scan</td>
7447 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7448 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7449 </tr>
7450 <tr>
7451 <td align="center">PASSIVE_<wbr/>SCAN</td>
7452 <td align="center">Camera device fails current scan</td>
7453 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7454 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7455 </tr>
7456 <tr>
7457 <td align="center">PASSIVE_<wbr/>SCAN</td>
7458 <td align="center">AF_<wbr/>TRIGGER</td>
7459 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7460 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7461 </tr>
7462 <tr>
7463 <td align="center">PASSIVE_<wbr/>SCAN</td>
7464 <td align="center">AF_<wbr/>TRIGGER</td>
7465 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7466 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7467 </tr>
7468 <tr>
7469 <td align="center">PASSIVE_<wbr/>SCAN</td>
7470 <td align="center">AF_<wbr/>CANCEL</td>
7471 <td align="center">INACTIVE</td>
7472 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7473 </tr>
7474 <tr>
7475 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7476 <td align="center">Camera device initiates new scan</td>
7477 <td align="center">PASSIVE_<wbr/>SCAN</td>
7478 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7479 </tr>
7480 <tr>
7481 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7482 <td align="center">Camera device initiates new scan</td>
7483 <td align="center">PASSIVE_<wbr/>SCAN</td>
7484 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7485 </tr>
7486 <tr>
7487 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7488 <td align="center">AF_<wbr/>TRIGGER</td>
7489 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7490 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7491 </tr>
7492 <tr>
7493 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7494 <td align="center">AF_<wbr/>TRIGGER</td>
7495 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7496 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7497 </tr>
7498 <tr>
7499 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7500 <td align="center">AF_<wbr/>TRIGGER</td>
7501 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7502 <td align="center">No effect</td>
7503 </tr>
7504 <tr>
7505 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7506 <td align="center">AF_<wbr/>CANCEL</td>
7507 <td align="center">INACTIVE</td>
7508 <td align="center">Restart AF scan</td>
7509 </tr>
7510 <tr>
7511 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7512 <td align="center">AF_<wbr/>TRIGGER</td>
7513 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7514 <td align="center">No effect</td>
7515 </tr>
7516 <tr>
7517 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7518 <td align="center">AF_<wbr/>CANCEL</td>
7519 <td align="center">INACTIVE</td>
7520 <td align="center">Restart AF scan</td>
7521 </tr>
7522 </tbody>
7523 </table>
7524 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7525 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7526 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7527 will be evaluated in the context of the new mode in the request.<wbr/>
7528 See below table for examples:</p>
7529 <table>
7530 <thead>
7531 <tr>
7532 <th align="center">State</th>
7533 <th align="center">Transition Cause</th>
7534 <th align="center">New State</th>
7535 <th align="center">Notes</th>
7536 </tr>
7537 </thead>
7538 <tbody>
7539 <tr>
7540 <td align="center">any state</td>
7541 <td align="center">CAF--&gt;AUTO mode switch</td>
7542 <td align="center">INACTIVE</td>
7543 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7544 </tr>
7545 <tr>
7546 <td align="center">any state</td>
7547 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7548 <td align="center">trigger-reachable states from INACTIVE</td>
7549 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7550 </tr>
7551 <tr>
7552 <td align="center">any state</td>
7553 <td align="center">AUTO--&gt;CAF mode switch</td>
7554 <td align="center">passively reachable states from INACTIVE</td>
7555 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7556 </tr>
7557 </tbody>
7558 </table>
7559             </td>
7560           </tr>
7561
7562
7563           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7564            <!-- end of entry -->
7565         
7566                 
7567           <tr class="entry" id="dynamic_android.control.afTriggerId">
7568             <td class="entry_name
7569                 entry_name_deprecated
7570              " rowspan="3">
7571               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7572             </td>
7573             <td class="entry_type">
7574                 <span class="entry_type_name">int32</span>
7575
7576               <span class="entry_type_visibility"> [system]</span>
7577
7578
7579
7580               <span class="entry_type_deprecated">[deprecated] </span>
7581
7582
7583
7584             </td> <!-- entry_type -->
7585
7586             <td class="entry_description">
7587               <p>The ID sent with the latest
7588 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7589             </td>
7590
7591             <td class="entry_units">
7592             </td>
7593
7594             <td class="entry_range">
7595               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7596             </td>
7597
7598             <td class="entry_tags">
7599             </td>
7600
7601           </tr>
7602           <tr class="entries_header">
7603             <th class="th_details" colspan="5">Details</th>
7604           </tr>
7605           <tr class="entry_cont">
7606             <td class="entry_details" colspan="5">
7607               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7608 received yet by HAL.<wbr/> Always updated even if AF algorithm
7609 ignores the trigger</p>
7610             </td>
7611           </tr>
7612
7613
7614           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7615            <!-- end of entry -->
7616         
7617                 
7618           <tr class="entry" id="dynamic_android.control.awbLock">
7619             <td class="entry_name
7620              " rowspan="3">
7621               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7622             </td>
7623             <td class="entry_type">
7624                 <span class="entry_type_name entry_type_name_enum">byte</span>
7625
7626               <span class="entry_type_visibility"> [public as boolean]</span>
7627
7628
7629               <span class="entry_type_hwlevel">[legacy] </span>
7630
7631
7632
7633                 <ul class="entry_type_enum">
7634                   <li>
7635                     <span class="entry_type_enum_name">OFF</span>
7636                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7637 algorithm is free to update its parameters if in AUTO
7638 mode.<wbr/></p></span>
7639                   </li>
7640                   <li>
7641                     <span class="entry_type_enum_name">ON</span>
7642                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7643 algorithm will not update its parameters while the lock
7644 is active.<wbr/></p></span>
7645                   </li>
7646                 </ul>
7647
7648             </td> <!-- entry_type -->
7649
7650             <td class="entry_description">
7651               <p>Whether auto-white balance (AWB) is currently locked to its
7652 latest calculated values.<wbr/></p>
7653             </td>
7654
7655             <td class="entry_units">
7656             </td>
7657
7658             <td class="entry_range">
7659             </td>
7660
7661             <td class="entry_tags">
7662               <ul class="entry_tags">
7663                   <li><a href="#tag_BC">BC</a></li>
7664               </ul>
7665             </td>
7666
7667           </tr>
7668           <tr class="entries_header">
7669             <th class="th_details" colspan="5">Details</th>
7670           </tr>
7671           <tr class="entry_cont">
7672             <td class="entry_details" colspan="5">
7673               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7674 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7675 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7676 get locked do not necessarily correspond to the settings that were present in the
7677 latest capture result received from the camera device,<wbr/> since additional captures
7678 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7679 application is switching between automatic and manual control and wishes to eliminate
7680 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7681 <ol>
7682 <li>Starting in auto-AWB mode:</li>
7683 <li>Lock AWB</li>
7684 <li>Wait for the first result to be output that has the AWB locked</li>
7685 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7686 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7687 </ol>
7688 <p>Note that AWB lock is only meaningful when
7689 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7690 AWB is already fixed to a specific setting.<wbr/></p>
7691 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7692             </td>
7693           </tr>
7694
7695
7696           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7697            <!-- end of entry -->
7698         
7699                 
7700           <tr class="entry" id="dynamic_android.control.awbMode">
7701             <td class="entry_name
7702              " rowspan="3">
7703               android.<wbr/>control.<wbr/>awb<wbr/>Mode
7704             </td>
7705             <td class="entry_type">
7706                 <span class="entry_type_name entry_type_name_enum">byte</span>
7707
7708               <span class="entry_type_visibility"> [public]</span>
7709
7710
7711               <span class="entry_type_hwlevel">[legacy] </span>
7712
7713
7714
7715                 <ul class="entry_type_enum">
7716                   <li>
7717                     <span class="entry_type_enum_name">OFF</span>
7718                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7719 <p>The application-selected color transform matrix
7720 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7721 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7722 device for manual white balance control.<wbr/></p></span>
7723                   </li>
7724                   <li>
7725                     <span class="entry_type_enum_name">AUTO</span>
7726                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7727 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7728 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7729 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7730 values used by the camera device for the transform and gains
7731 will be available in the capture result for this request.<wbr/></p></span>
7732                   </li>
7733                   <li>
7734                     <span class="entry_type_enum_name">INCANDESCENT</span>
7735                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7736 the camera device uses incandescent light as the assumed scene
7737 illumination for white balance.<wbr/></p>
7738 <p>While the exact white balance transforms are up to the
7739 camera device,<wbr/> they will approximately match the CIE
7740 standard illuminant A.<wbr/></p>
7741 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7742 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7743 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7744 values used by the camera device for the transform and gains
7745 will be available in the capture result for this request.<wbr/></p></span>
7746                   </li>
7747                   <li>
7748                     <span class="entry_type_enum_name">FLUORESCENT</span>
7749                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7750 the camera device uses fluorescent light as the assumed scene
7751 illumination for white balance.<wbr/></p>
7752 <p>While the exact white balance transforms are up to the
7753 camera device,<wbr/> they will approximately match the CIE
7754 standard illuminant F2.<wbr/></p>
7755 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7756 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7757 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7758 values used by the camera device for the transform and gains
7759 will be available in the capture result for this request.<wbr/></p></span>
7760                   </li>
7761                   <li>
7762                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7763                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7764 the camera device uses warm fluorescent light as the assumed scene
7765 illumination for white balance.<wbr/></p>
7766 <p>While the exact white balance transforms are up to the
7767 camera device,<wbr/> they will approximately match the CIE
7768 standard illuminant F4.<wbr/></p>
7769 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7770 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7771 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7772 values used by the camera device for the transform and gains
7773 will be available in the capture result for this request.<wbr/></p></span>
7774                   </li>
7775                   <li>
7776                     <span class="entry_type_enum_name">DAYLIGHT</span>
7777                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7778 the camera device uses daylight light as the assumed scene
7779 illumination for white balance.<wbr/></p>
7780 <p>While the exact white balance transforms are up to the
7781 camera device,<wbr/> they will approximately match the CIE
7782 standard illuminant D65.<wbr/></p>
7783 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7784 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7785 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7786 values used by the camera device for the transform and gains
7787 will be available in the capture result for this request.<wbr/></p></span>
7788                   </li>
7789                   <li>
7790                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7791                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7792 the camera device uses cloudy daylight light as the assumed scene
7793 illumination for white balance.<wbr/></p>
7794 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7795 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7796 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7797 values used by the camera device for the transform and gains
7798 will be available in the capture result for this request.<wbr/></p></span>
7799                   </li>
7800                   <li>
7801                     <span class="entry_type_enum_name">TWILIGHT</span>
7802                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7803 the camera device uses twilight light as the assumed scene
7804 illumination for white balance.<wbr/></p>
7805 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7806 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7807 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7808 values used by the camera device for the transform and gains
7809 will be available in the capture result for this request.<wbr/></p></span>
7810                   </li>
7811                   <li>
7812                     <span class="entry_type_enum_name">SHADE</span>
7813                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7814 the camera device uses shade light as the assumed scene
7815 illumination for white balance.<wbr/></p>
7816 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7817 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7818 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7819 values used by the camera device for the transform and gains
7820 will be available in the capture result for this request.<wbr/></p></span>
7821                   </li>
7822                 </ul>
7823
7824             </td> <!-- entry_type -->
7825
7826             <td class="entry_description">
7827               <p>Whether auto-white balance (AWB) is currently setting the color
7828 transform fields,<wbr/> and what its illumination target
7829 is.<wbr/></p>
7830             </td>
7831
7832             <td class="entry_units">
7833             </td>
7834
7835             <td class="entry_range">
7836               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7837             </td>
7838
7839             <td class="entry_tags">
7840               <ul class="entry_tags">
7841                   <li><a href="#tag_BC">BC</a></li>
7842               </ul>
7843             </td>
7844
7845           </tr>
7846           <tr class="entries_header">
7847             <th class="th_details" colspan="5">Details</th>
7848           </tr>
7849           <tr class="entry_cont">
7850             <td class="entry_details" colspan="5">
7851               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7852 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7853 routine is enabled,<wbr/> overriding the application's selected
7854 <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
7855 <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>
7856 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7857 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
7858 setting AE mode to OFF.<wbr/></p>
7859 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7860 routine is disabled.<wbr/> The application manually controls the white
7861 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>
7862 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7863 <p>When set to any other modes,<wbr/> the camera device's auto-white
7864 balance routine is disabled.<wbr/> The camera device uses each
7865 particular illumination target for white balance
7866 adjustment.<wbr/> The application's values for
7867 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7868 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7869 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7870             </td>
7871           </tr>
7872
7873
7874           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7875            <!-- end of entry -->
7876         
7877                 
7878           <tr class="entry" id="dynamic_android.control.awbRegions">
7879             <td class="entry_name
7880              " rowspan="5">
7881               android.<wbr/>control.<wbr/>awb<wbr/>Regions
7882             </td>
7883             <td class="entry_type">
7884                 <span class="entry_type_name">int32</span>
7885                 <span class="entry_type_container">x</span>
7886
7887                 <span class="entry_type_array">
7888                   5 x area_count
7889                 </span>
7890               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7891
7892
7893
7894
7895
7896
7897             </td> <!-- entry_type -->
7898
7899             <td class="entry_description">
7900               <p>List of metering areas to use for auto-white-balance illuminant
7901 estimation.<wbr/></p>
7902             </td>
7903
7904             <td class="entry_units">
7905               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7906             </td>
7907
7908             <td class="entry_range">
7909               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7910 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7911             </td>
7912
7913             <td class="entry_tags">
7914               <ul class="entry_tags">
7915                   <li><a href="#tag_BC">BC</a></li>
7916               </ul>
7917             </td>
7918
7919           </tr>
7920           <tr class="entries_header">
7921             <th class="th_details" colspan="5">Details</th>
7922           </tr>
7923           <tr class="entry_cont">
7924             <td class="entry_details" colspan="5">
7925               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7926 Otherwise will always be present.<wbr/></p>
7927 <p>The maximum number of regions supported by the device is determined by the value
7928 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7929 <p>The coordinate system is based on the active pixel array,<wbr/>
7930 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7931 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7932 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7933 bottom-right pixel in the active pixel array.<wbr/></p>
7934 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7935 for every pixel in the area.<wbr/> This means that a large metering area
7936 with the same weight as a smaller area will have more effect in
7937 the metering result.<wbr/> Metering areas can partially overlap and the
7938 camera device will add the weights in the overlap region.<wbr/></p>
7939 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7940 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
7941 0 weight is ignored.<wbr/></p>
7942 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7943 camera device.<wbr/></p>
7944 <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
7945 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7946 region and output only the intersection rectangle as the metering region in the result
7947 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7948 not reported in the result metadata.<wbr/></p>
7949             </td>
7950           </tr>
7951
7952           <tr class="entries_header">
7953             <th class="th_details" colspan="5">HAL Implementation Details</th>
7954           </tr>
7955           <tr class="entry_cont">
7956             <td class="entry_details" colspan="5">
7957               <p>The HAL level representation of MeteringRectangle[] is a
7958 int[5 * area_<wbr/>count].<wbr/>
7959 Every five elements represent a metering region of
7960 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7961 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7962 exclusive on xmax and ymax.<wbr/></p>
7963             </td>
7964           </tr>
7965
7966           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7967            <!-- end of entry -->
7968         
7969                 
7970           <tr class="entry" id="dynamic_android.control.captureIntent">
7971             <td class="entry_name
7972              " rowspan="3">
7973               android.<wbr/>control.<wbr/>capture<wbr/>Intent
7974             </td>
7975             <td class="entry_type">
7976                 <span class="entry_type_name entry_type_name_enum">byte</span>
7977
7978               <span class="entry_type_visibility"> [public]</span>
7979
7980
7981               <span class="entry_type_hwlevel">[legacy] </span>
7982
7983
7984
7985                 <ul class="entry_type_enum">
7986                   <li>
7987                     <span class="entry_type_enum_name">CUSTOM</span>
7988                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7989 categories.<wbr/> The camera device will default to preview-like
7990 behavior.<wbr/></p></span>
7991                   </li>
7992                   <li>
7993                     <span class="entry_type_enum_name">PREVIEW</span>
7994                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7995 <p>The precapture trigger may be used to start off a metering
7996 w/<wbr/>flash sequence.<wbr/></p></span>
7997                   </li>
7998                   <li>
7999                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
8000                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8001 use case.<wbr/></p>
8002 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8003                   </li>
8004                   <li>
8005                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
8006                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8007 use case.<wbr/></p></span>
8008                   </li>
8009                   <li>
8010                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
8011                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8012 image while recording video) use case.<wbr/></p>
8013 <p>The camera device should take the highest-quality image
8014 possible (given the other settings) without disrupting the
8015 frame rate of video recording.<wbr/>  </p></span>
8016                   </li>
8017                   <li>
8018                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8019                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8020 application will stream full-resolution images and
8021 reprocess one or several later for a final
8022 capture.<wbr/></p></span>
8023                   </li>
8024                   <li>
8025                     <span class="entry_type_enum_name">MANUAL</span>
8026                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8027 the applications want to directly control the capture parameters.<wbr/></p>
8028 <p>For example,<wbr/> the application may wish to manually control
8029 <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>
8030                   </li>
8031                 </ul>
8032
8033             </td> <!-- entry_type -->
8034
8035             <td class="entry_description">
8036               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8037 auto-focus,<wbr/> auto-white balance) routines about the purpose
8038 of this capture,<wbr/> to help the camera device to decide optimal 3A
8039 strategy.<wbr/></p>
8040             </td>
8041
8042             <td class="entry_units">
8043             </td>
8044
8045             <td class="entry_range">
8046             </td>
8047
8048             <td class="entry_tags">
8049               <ul class="entry_tags">
8050                   <li><a href="#tag_BC">BC</a></li>
8051               </ul>
8052             </td>
8053
8054           </tr>
8055           <tr class="entries_header">
8056             <th class="th_details" colspan="5">Details</th>
8057           </tr>
8058           <tr class="entry_cont">
8059             <td class="entry_details" colspan="5">
8060               <p>This control (except for MANUAL) is only effective if
8061 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8062 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8063 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8064 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8065 always supported.<wbr/></p>
8066             </td>
8067           </tr>
8068
8069
8070           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8071            <!-- end of entry -->
8072         
8073                 
8074           <tr class="entry" id="dynamic_android.control.awbState">
8075             <td class="entry_name
8076              " rowspan="3">
8077               android.<wbr/>control.<wbr/>awb<wbr/>State
8078             </td>
8079             <td class="entry_type">
8080                 <span class="entry_type_name entry_type_name_enum">byte</span>
8081
8082               <span class="entry_type_visibility"> [public]</span>
8083
8084
8085               <span class="entry_type_hwlevel">[limited] </span>
8086
8087
8088
8089                 <ul class="entry_type_enum">
8090                   <li>
8091                     <span class="entry_type_enum_name">INACTIVE</span>
8092                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8093 <p>When a camera device is opened,<wbr/> it starts in this
8094 state.<wbr/> This is a transient state,<wbr/> the camera device may
8095 skip reporting this state in capture
8096 result.<wbr/></p></span>
8097                   </li>
8098                   <li>
8099                     <span class="entry_type_enum_name">SEARCHING</span>
8100                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8101 values for the current scene.<wbr/></p>
8102 <p>This is a transient state,<wbr/> the camera device
8103 may skip reporting this state in capture result.<wbr/></p></span>
8104                   </li>
8105                   <li>
8106                     <span class="entry_type_enum_name">CONVERGED</span>
8107                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8108 current scene.<wbr/></p></span>
8109                   </li>
8110                   <li>
8111                     <span class="entry_type_enum_name">LOCKED</span>
8112                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8113                   </li>
8114                 </ul>
8115
8116             </td> <!-- entry_type -->
8117
8118             <td class="entry_description">
8119               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8120             </td>
8121
8122             <td class="entry_units">
8123             </td>
8124
8125             <td class="entry_range">
8126             </td>
8127
8128             <td class="entry_tags">
8129             </td>
8130
8131           </tr>
8132           <tr class="entries_header">
8133             <th class="th_details" colspan="5">Details</th>
8134           </tr>
8135           <tr class="entry_cont">
8136             <td class="entry_details" colspan="5">
8137               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8138 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8139 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
8140 the algorithm states to INACTIVE.<wbr/></p>
8141 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8142 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8143 a result.<wbr/></p>
8144 <p>The state in the result is the state for this image (in sync with this image): if
8145 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8146 be good to use.<wbr/></p>
8147 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8148 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8149 <table>
8150 <thead>
8151 <tr>
8152 <th align="center">State</th>
8153 <th align="center">Transition Cause</th>
8154 <th align="center">New State</th>
8155 <th align="center">Notes</th>
8156 </tr>
8157 </thead>
8158 <tbody>
8159 <tr>
8160 <td align="center">INACTIVE</td>
8161 <td align="center"></td>
8162 <td align="center">INACTIVE</td>
8163 <td align="center">Camera device auto white balance algorithm is disabled</td>
8164 </tr>
8165 </tbody>
8166 </table>
8167 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8168 <table>
8169 <thead>
8170 <tr>
8171 <th align="center">State</th>
8172 <th align="center">Transition Cause</th>
8173 <th align="center">New State</th>
8174 <th align="center">Notes</th>
8175 </tr>
8176 </thead>
8177 <tbody>
8178 <tr>
8179 <td align="center">INACTIVE</td>
8180 <td align="center">Camera device initiates AWB scan</td>
8181 <td align="center">SEARCHING</td>
8182 <td align="center">Values changing</td>
8183 </tr>
8184 <tr>
8185 <td align="center">INACTIVE</td>
8186 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8187 <td align="center">LOCKED</td>
8188 <td align="center">Values locked</td>
8189 </tr>
8190 <tr>
8191 <td align="center">SEARCHING</td>
8192 <td align="center">Camera device finishes AWB scan</td>
8193 <td align="center">CONVERGED</td>
8194 <td align="center">Good values,<wbr/> not changing</td>
8195 </tr>
8196 <tr>
8197 <td align="center">SEARCHING</td>
8198 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8199 <td align="center">LOCKED</td>
8200 <td align="center">Values locked</td>
8201 </tr>
8202 <tr>
8203 <td align="center">CONVERGED</td>
8204 <td align="center">Camera device initiates AWB scan</td>
8205 <td align="center">SEARCHING</td>
8206 <td align="center">Values changing</td>
8207 </tr>
8208 <tr>
8209 <td align="center">CONVERGED</td>
8210 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8211 <td align="center">LOCKED</td>
8212 <td align="center">Values locked</td>
8213 </tr>
8214 <tr>
8215 <td align="center">LOCKED</td>
8216 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8217 <td align="center">SEARCHING</td>
8218 <td align="center">Values not good after unlock</td>
8219 </tr>
8220 </tbody>
8221 </table>
8222 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8223 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8224 can be skipped in that manner is called a transient state.<wbr/></p>
8225 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8226 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8227 transient states between two results.<wbr/> See below table for examples:</p>
8228 <table>
8229 <thead>
8230 <tr>
8231 <th align="center">State</th>
8232 <th align="center">Transition Cause</th>
8233 <th align="center">New State</th>
8234 <th align="center">Notes</th>
8235 </tr>
8236 </thead>
8237 <tbody>
8238 <tr>
8239 <td align="center">INACTIVE</td>
8240 <td align="center">Camera device finished AWB scan</td>
8241 <td align="center">CONVERGED</td>
8242 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8243 </tr>
8244 <tr>
8245 <td align="center">LOCKED</td>
8246 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8247 <td align="center">CONVERGED</td>
8248 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8249 </tr>
8250 </tbody>
8251 </table>
8252             </td>
8253           </tr>
8254
8255
8256           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8257            <!-- end of entry -->
8258         
8259                 
8260           <tr class="entry" id="dynamic_android.control.effectMode">
8261             <td class="entry_name
8262              " rowspan="3">
8263               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8264             </td>
8265             <td class="entry_type">
8266                 <span class="entry_type_name entry_type_name_enum">byte</span>
8267
8268               <span class="entry_type_visibility"> [public]</span>
8269
8270
8271               <span class="entry_type_hwlevel">[legacy] </span>
8272
8273
8274
8275                 <ul class="entry_type_enum">
8276                   <li>
8277                     <span class="entry_type_enum_name">OFF</span>
8278                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8279                   </li>
8280                   <li>
8281                     <span class="entry_type_enum_name">MONO</span>
8282                     <span class="entry_type_enum_optional">[optional]</span>
8283                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8284 a single color.<wbr/></p>
8285 <p>This will typically be grayscale.<wbr/></p></span>
8286                   </li>
8287                   <li>
8288                     <span class="entry_type_enum_name">NEGATIVE</span>
8289                     <span class="entry_type_enum_optional">[optional]</span>
8290                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8291 are inverted.<wbr/></p></span>
8292                   </li>
8293                   <li>
8294                     <span class="entry_type_enum_name">SOLARIZE</span>
8295                     <span class="entry_type_enum_optional">[optional]</span>
8296                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8297 image is wholly or partially reversed in
8298 tone.<wbr/></p></span>
8299                   </li>
8300                   <li>
8301                     <span class="entry_type_enum_name">SEPIA</span>
8302                     <span class="entry_type_enum_optional">[optional]</span>
8303                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8304 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8305                   </li>
8306                   <li>
8307                     <span class="entry_type_enum_name">POSTERIZE</span>
8308                     <span class="entry_type_enum_optional">[optional]</span>
8309                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8310 discrete regions of tone rather than a continuous
8311 gradient of tones.<wbr/></p></span>
8312                   </li>
8313                   <li>
8314                     <span class="entry_type_enum_name">WHITEBOARD</span>
8315                     <span class="entry_type_enum_optional">[optional]</span>
8316                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8317 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8318                   </li>
8319                   <li>
8320                     <span class="entry_type_enum_name">BLACKBOARD</span>
8321                     <span class="entry_type_enum_optional">[optional]</span>
8322                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8323 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8324                   </li>
8325                   <li>
8326                     <span class="entry_type_enum_name">AQUA</span>
8327                     <span class="entry_type_enum_optional">[optional]</span>
8328                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8329                   </li>
8330                 </ul>
8331
8332             </td> <!-- entry_type -->
8333
8334             <td class="entry_description">
8335               <p>A special color effect to apply.<wbr/></p>
8336             </td>
8337
8338             <td class="entry_units">
8339             </td>
8340
8341             <td class="entry_range">
8342               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8343             </td>
8344
8345             <td class="entry_tags">
8346               <ul class="entry_tags">
8347                   <li><a href="#tag_BC">BC</a></li>
8348               </ul>
8349             </td>
8350
8351           </tr>
8352           <tr class="entries_header">
8353             <th class="th_details" colspan="5">Details</th>
8354           </tr>
8355           <tr class="entry_cont">
8356             <td class="entry_details" colspan="5">
8357               <p>When this mode is set,<wbr/> a color effect will be applied
8358 to images produced by the camera device.<wbr/> The interpretation
8359 and implementation of these color effects is left to the
8360 implementor of the camera device,<wbr/> and should not be
8361 depended on to be consistent (or present) across all
8362 devices.<wbr/></p>
8363             </td>
8364           </tr>
8365
8366
8367           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8368            <!-- end of entry -->
8369         
8370                 
8371           <tr class="entry" id="dynamic_android.control.mode">
8372             <td class="entry_name
8373              " rowspan="3">
8374               android.<wbr/>control.<wbr/>mode
8375             </td>
8376             <td class="entry_type">
8377                 <span class="entry_type_name entry_type_name_enum">byte</span>
8378
8379               <span class="entry_type_visibility"> [public]</span>
8380
8381
8382               <span class="entry_type_hwlevel">[legacy] </span>
8383
8384
8385
8386                 <ul class="entry_type_enum">
8387                   <li>
8388                     <span class="entry_type_enum_name">OFF</span>
8389                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8390 <p>All control by the device's metering and focusing (3A)
8391 routines is disabled,<wbr/> and no other settings in
8392 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8393 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8394 device to select post-processing values for processing
8395 blocks that do not allow for manual control,<wbr/> or are not
8396 exposed by the camera API.<wbr/></p>
8397 <p>However,<wbr/> the camera device's 3A routines may continue to
8398 collect statistics and update their internal state so that
8399 when control is switched to AUTO mode,<wbr/> good control values
8400 can be immediately applied.<wbr/></p></span>
8401                   </li>
8402                   <li>
8403                     <span class="entry_type_enum_name">AUTO</span>
8404                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8405 <p>Manual control of capture parameters is disabled.<wbr/> All
8406 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8407 effect.<wbr/></p></span>
8408                   </li>
8409                   <li>
8410                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8411                     <span class="entry_type_enum_optional">[optional]</span>
8412                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8413 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8414 control.<wbr/>afMode controls; the camera device will ignore
8415 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8416 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8417 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8418 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8419 contain some modes other than DISABLED).<wbr/></p></span>
8420                   </li>
8421                   <li>
8422                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8423                     <span class="entry_type_enum_optional">[optional]</span>
8424                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8425 used by camera device background auto-exposure,<wbr/> auto-white balance and
8426 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8427 <p>Specifically,<wbr/> the 3A routines are locked to the last
8428 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8429 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8430 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8431 discarded by the camera device.<wbr/></p></span>
8432                   </li>
8433                 </ul>
8434
8435             </td> <!-- entry_type -->
8436
8437             <td class="entry_description">
8438               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8439 routines.<wbr/></p>
8440             </td>
8441
8442             <td class="entry_units">
8443             </td>
8444
8445             <td class="entry_range">
8446               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8447             </td>
8448
8449             <td class="entry_tags">
8450               <ul class="entry_tags">
8451                   <li><a href="#tag_BC">BC</a></li>
8452               </ul>
8453             </td>
8454
8455           </tr>
8456           <tr class="entries_header">
8457             <th class="th_details" colspan="5">Details</th>
8458           </tr>
8459           <tr class="entry_cont">
8460             <td class="entry_details" colspan="5">
8461               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8462 by the camera device is disabled.<wbr/> The application must set the fields for
8463 capture parameters itself.<wbr/></p>
8464 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8465 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>
8466 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8467 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8468 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8469 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8470 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8471 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8472 is that this frame will not be used by camera device background 3A statistics
8473 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8474 where the application doesn't want a 3A manual control capture to affect
8475 the subsequent auto 3A capture results.<wbr/></p>
8476             </td>
8477           </tr>
8478
8479
8480           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8481            <!-- end of entry -->
8482         
8483                 
8484           <tr class="entry" id="dynamic_android.control.sceneMode">
8485             <td class="entry_name
8486              " rowspan="5">
8487               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8488             </td>
8489             <td class="entry_type">
8490                 <span class="entry_type_name entry_type_name_enum">byte</span>
8491
8492               <span class="entry_type_visibility"> [public]</span>
8493
8494
8495               <span class="entry_type_hwlevel">[legacy] </span>
8496
8497
8498
8499                 <ul class="entry_type_enum">
8500                   <li>
8501                     <span class="entry_type_enum_name">DISABLED</span>
8502                     <span class="entry_type_enum_value">0</span>
8503                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8504                   </li>
8505                   <li>
8506                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
8507                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8508 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8509 auto-exposure routines.<wbr/></p>
8510 <p>If face detection statistics are disabled
8511 (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/>
8512 this should still operate correctly (but will not return
8513 face detection statistics to the framework).<wbr/></p>
8514 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8515 <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>
8516 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8517                   </li>
8518                   <li>
8519                     <span class="entry_type_enum_name">ACTION</span>
8520                     <span class="entry_type_enum_optional">[optional]</span>
8521                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8522 <p>Similar to SPORTS.<wbr/></p></span>
8523                   </li>
8524                   <li>
8525                     <span class="entry_type_enum_name">PORTRAIT</span>
8526                     <span class="entry_type_enum_optional">[optional]</span>
8527                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8528                   </li>
8529                   <li>
8530                     <span class="entry_type_enum_name">LANDSCAPE</span>
8531                     <span class="entry_type_enum_optional">[optional]</span>
8532                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8533                   </li>
8534                   <li>
8535                     <span class="entry_type_enum_name">NIGHT</span>
8536                     <span class="entry_type_enum_optional">[optional]</span>
8537                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8538                   </li>
8539                   <li>
8540                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8541                     <span class="entry_type_enum_optional">[optional]</span>
8542                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8543 settings.<wbr/></p></span>
8544                   </li>
8545                   <li>
8546                     <span class="entry_type_enum_name">THEATRE</span>
8547                     <span class="entry_type_enum_optional">[optional]</span>
8548                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8549 remain off.<wbr/></p></span>
8550                   </li>
8551                   <li>
8552                     <span class="entry_type_enum_name">BEACH</span>
8553                     <span class="entry_type_enum_optional">[optional]</span>
8554                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8555                   </li>
8556                   <li>
8557                     <span class="entry_type_enum_name">SNOW</span>
8558                     <span class="entry_type_enum_optional">[optional]</span>
8559                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8560                   </li>
8561                   <li>
8562                     <span class="entry_type_enum_name">SUNSET</span>
8563                     <span class="entry_type_enum_optional">[optional]</span>
8564                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8565                   </li>
8566                   <li>
8567                     <span class="entry_type_enum_name">STEADYPHOTO</span>
8568                     <span class="entry_type_enum_optional">[optional]</span>
8569                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8570 device motion (for example: due to hand shake).<wbr/></p></span>
8571                   </li>
8572                   <li>
8573                     <span class="entry_type_enum_name">FIREWORKS</span>
8574                     <span class="entry_type_enum_optional">[optional]</span>
8575                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8576                   </li>
8577                   <li>
8578                     <span class="entry_type_enum_name">SPORTS</span>
8579                     <span class="entry_type_enum_optional">[optional]</span>
8580                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8581 <p>Similar to ACTION.<wbr/></p></span>
8582                   </li>
8583                   <li>
8584                     <span class="entry_type_enum_name">PARTY</span>
8585                     <span class="entry_type_enum_optional">[optional]</span>
8586                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8587 people.<wbr/></p></span>
8588                   </li>
8589                   <li>
8590                     <span class="entry_type_enum_name">CANDLELIGHT</span>
8591                     <span class="entry_type_enum_optional">[optional]</span>
8592                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8593 is a flame.<wbr/></p></span>
8594                   </li>
8595                   <li>
8596                     <span class="entry_type_enum_name">BARCODE</span>
8597                     <span class="entry_type_enum_optional">[optional]</span>
8598                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8599 for use by camera applications that wish to read the
8600 barcode value.<wbr/></p></span>
8601                   </li>
8602                   <li>
8603                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8604                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8605                     <span class="entry_type_enum_optional">[optional]</span>
8606                     <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>
8607 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8608 for high speed video recording.<wbr/></p>
8609 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8610 <p>The supported high speed video sizes and fps ranges are specified in
8611 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8612 output frame rates,<wbr/> the application is only allowed to select video size
8613 and fps range combinations listed in this static metadata.<wbr/> The fps range
8614 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8615 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8616 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8617 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8618 and post-processing parameters is possible.<wbr/> All other controls operate the
8619 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8620 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8621 <ul>
8622 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8623 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8624 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8625 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8626 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8627 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8628 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8629 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8630 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8631 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8632 </ul>
8633 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8634 <ul>
8635 <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>
8636 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8637 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8638 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8639 </ul>
8640 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8641 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8642 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8643 the application need check if the video encoder is capable of supporting the
8644 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8645 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8646 rate will be bounded by the screen refresh rate.<wbr/></p>
8647 <p>The camera device will only support up to 2 output high speed streams
8648 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8649 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8650 <ul>
8651 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8652 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8653 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>
8654 <li>The stream sizes are selected from the sizes reported by
8655 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8656 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8657 </ul>
8658 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8659 <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/>
8660 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8661 and the returned capture result metadata will give the fps range choosen
8662 by the camera device.<wbr/></p>
8663 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8664 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8665 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8666                   </li>
8667                   <li>
8668                     <span class="entry_type_enum_name">HDR</span>
8669                     <span class="entry_type_enum_optional">[optional]</span>
8670                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8671 <p>In this scene mode,<wbr/> the camera device captures images
8672 that keep a larger range of scene illumination levels
8673 visible in the final image.<wbr/> For example,<wbr/> when taking a
8674 picture of a object in front of a bright window,<wbr/> both
8675 the object and the scene through the window may be
8676 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8677 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8678 HDR mode generally takes much longer to capture a single
8679 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8680 depending on the HDR method used.<wbr/></p>
8681 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8682 than regular captures.<wbr/></p>
8683 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8684 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8685 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8686 using a high dynamic range capture technique.<wbr/>  On LEGACY
8687 devices,<wbr/> captures that target a JPEG-format output will
8688 be captured with HDR,<wbr/> and the capture intent is not
8689 relevant.<wbr/></p>
8690 <p>The HDR capture may involve the device capturing a burst
8691 of images internally and combining them into one,<wbr/> or it
8692 may involve the device using specialized high dynamic
8693 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8694 produced in response to a capture request submitted
8695 while in HDR mode.<wbr/></p>
8696 <p>Since substantial post-processing is generally needed to
8697 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8698 outputs are supported for LIMITED/<wbr/>FULL device HDR
8699 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8700 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8701 supported.<wbr/></p>
8702 <p>Some devices may also support always-on HDR,<wbr/> which
8703 applies HDR processing at full frame rate.<wbr/>  For these
8704 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8705 produce an HDR output with no frame rate impact compared
8706 to normal operation,<wbr/> though the quality may be lower
8707 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8708 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8709 or capture intents,<wbr/> the images captured will be as if
8710 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
8711                   </li>
8712                   <li>
8713                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8714                     <span class="entry_type_enum_optional">[optional]</span>
8715                     <span class="entry_type_enum_hidden">[hidden]</span>
8716                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8717 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8718 under low light conditions.<wbr/></p>
8719 <p>The camera device may be tuned to expose the images in a reduced
8720 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8721 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/>
8722 the camera device auto-exposure routine tuning process may limit the actual
8723 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8724 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8725 low light may be under-exposed when the sensor max exposure time (bounded by the
8726 <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
8727 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8728 camera device auto-exposure routine to increase the sensitivity up to the max
8729 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
8730 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8731 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8732 recommended that the application only use this scene mode when it is capable of
8733 reducing the noise level of the captured images.<wbr/></p>
8734 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8735 <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>
8736 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8737                   </li>
8738                   <li>
8739                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
8740                     <span class="entry_type_enum_optional">[optional]</span>
8741                     <span class="entry_type_enum_hidden">[hidden]</span>
8742                     <span class="entry_type_enum_value">100</span>
8743                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8744 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8745 customized scene modes.<wbr/></p></span>
8746                   </li>
8747                   <li>
8748                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
8749                     <span class="entry_type_enum_optional">[optional]</span>
8750                     <span class="entry_type_enum_hidden">[hidden]</span>
8751                     <span class="entry_type_enum_value">127</span>
8752                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8753 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8754 customized scene modes.<wbr/></p></span>
8755                   </li>
8756                 </ul>
8757
8758             </td> <!-- entry_type -->
8759
8760             <td class="entry_description">
8761               <p>Control for which scene mode is currently active.<wbr/></p>
8762             </td>
8763
8764             <td class="entry_units">
8765             </td>
8766
8767             <td class="entry_range">
8768               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8769             </td>
8770
8771             <td class="entry_tags">
8772               <ul class="entry_tags">
8773                   <li><a href="#tag_BC">BC</a></li>
8774               </ul>
8775             </td>
8776
8777           </tr>
8778           <tr class="entries_header">
8779             <th class="th_details" colspan="5">Details</th>
8780           </tr>
8781           <tr class="entry_cont">
8782             <td class="entry_details" colspan="5">
8783               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8784 capture settings.<wbr/></p>
8785 <p>This is the mode that that is active when
8786 <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
8787 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>
8788 while in use.<wbr/></p>
8789 <p>The interpretation and implementation of these scene modes is left
8790 to the implementor of the camera device.<wbr/> Their behavior will not be
8791 consistent across all devices,<wbr/> and any given device may only implement
8792 a subset of these modes.<wbr/></p>
8793             </td>
8794           </tr>
8795
8796           <tr class="entries_header">
8797             <th class="th_details" colspan="5">HAL Implementation Details</th>
8798           </tr>
8799           <tr class="entry_cont">
8800             <td class="entry_details" colspan="5">
8801               <p>HAL implementations that include scene modes are expected to provide
8802 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8803 <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
8804 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8805 <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/>
8806 the HAL must list supported video size and fps range in
8807 <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/>
8808 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8809 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8810 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8811 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8812 <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
8813 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8814             </td>
8815           </tr>
8816
8817           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8818            <!-- end of entry -->
8819         
8820                 
8821           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8822             <td class="entry_name
8823              " rowspan="3">
8824               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8825             </td>
8826             <td class="entry_type">
8827                 <span class="entry_type_name entry_type_name_enum">byte</span>
8828
8829               <span class="entry_type_visibility"> [public]</span>
8830
8831
8832               <span class="entry_type_hwlevel">[legacy] </span>
8833
8834
8835
8836                 <ul class="entry_type_enum">
8837                   <li>
8838                     <span class="entry_type_enum_name">OFF</span>
8839                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8840                   </li>
8841                   <li>
8842                     <span class="entry_type_enum_name">ON</span>
8843                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8844                   </li>
8845                 </ul>
8846
8847             </td> <!-- entry_type -->
8848
8849             <td class="entry_description">
8850               <p>Whether video stabilization is
8851 active.<wbr/></p>
8852             </td>
8853
8854             <td class="entry_units">
8855             </td>
8856
8857             <td class="entry_range">
8858             </td>
8859
8860             <td class="entry_tags">
8861               <ul class="entry_tags">
8862                   <li><a href="#tag_BC">BC</a></li>
8863               </ul>
8864             </td>
8865
8866           </tr>
8867           <tr class="entries_header">
8868             <th class="th_details" colspan="5">Details</th>
8869           </tr>
8870           <tr class="entry_cont">
8871             <td class="entry_details" colspan="5">
8872               <p>Video stabilization automatically warps images from
8873 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8874 <p>If enabled,<wbr/> video stabilization can modify the
8875 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8876 <p>Switching between different video stabilization modes may take several
8877 frames to initialize,<wbr/> the camera device will report the current mode
8878 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8879 the video stabilization modes in the first several capture results may
8880 still be "OFF",<wbr/> and it will become "ON" when the initialization is
8881 done.<wbr/></p>
8882 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8883 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8884 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8885 the recording resolution is less than or equal to 1920 x 1080 (width less than
8886 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8887 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8888 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8889 OFF if the recording output is not stabilized,<wbr/> or if there are no output
8890 Surface types that can be stabilized.<wbr/></p>
8891 <p>If a camera device supports both this mode and OIS
8892 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8893 produce undesirable interaction,<wbr/> so it is recommended not to enable
8894 both at the same time.<wbr/></p>
8895             </td>
8896           </tr>
8897
8898
8899           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8900            <!-- end of entry -->
8901         
8902                 
8903           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
8904             <td class="entry_name
8905              " rowspan="3">
8906               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
8907             </td>
8908             <td class="entry_type">
8909                 <span class="entry_type_name">int32</span>
8910
8911               <span class="entry_type_visibility"> [public]</span>
8912
8913
8914
8915
8916
8917
8918             </td> <!-- entry_type -->
8919
8920             <td class="entry_description">
8921               <p>The amount of additional sensitivity boost applied to output images
8922 after RAW sensor data is captured.<wbr/></p>
8923             </td>
8924
8925             <td class="entry_units">
8926               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
8927             </td>
8928
8929             <td class="entry_range">
8930               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
8931             </td>
8932
8933             <td class="entry_tags">
8934             </td>
8935
8936           </tr>
8937           <tr class="entries_header">
8938             <th class="th_details" colspan="5">Details</th>
8939           </tr>
8940           <tr class="entry_cont">
8941             <td class="entry_details" colspan="5">
8942               <p>Some camera devices support additional digital sensitivity boosting in the
8943 camera processing pipeline after sensor RAW image is captured.<wbr/>
8944 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
8945 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
8946 <p>This key will be <code>null</code> for devices that do not support any RAW format
8947 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
8948 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
8949 list <code>100</code> in this key.<wbr/></p>
8950 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
8951 boost to the nearest supported value.<wbr/>
8952 The final boost value used will be available in the output capture result.<wbr/></p>
8953 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
8954 of such device will have the total sensitivity of
8955 <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>
8956 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
8957 <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
8958 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
8959             </td>
8960           </tr>
8961
8962
8963           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8964            <!-- end of entry -->
8965         
8966                 
8967           <tr class="entry" id="dynamic_android.control.enableZsl">
8968             <td class="entry_name
8969              " rowspan="5">
8970               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
8971             </td>
8972             <td class="entry_type">
8973                 <span class="entry_type_name entry_type_name_enum">byte</span>
8974
8975               <span class="entry_type_visibility"> [public as boolean]</span>
8976
8977
8978
8979
8980
8981                 <ul class="entry_type_enum">
8982                   <li>
8983                     <span class="entry_type_enum_name">FALSE</span>
8984                     <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
8985 after previous requests.<wbr/></p></span>
8986                   </li>
8987                   <li>
8988                     <span class="entry_type_enum_name">TRUE</span>
8989                     <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
8990 captured before previous requests.<wbr/></p></span>
8991                   </li>
8992                 </ul>
8993
8994             </td> <!-- entry_type -->
8995
8996             <td class="entry_description">
8997               <p>Allow camera device to enable zero-shutter-lag mode for requests with
8998 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
8999             </td>
9000
9001             <td class="entry_units">
9002             </td>
9003
9004             <td class="entry_range">
9005             </td>
9006
9007             <td class="entry_tags">
9008             </td>
9009
9010           </tr>
9011           <tr class="entries_header">
9012             <th class="th_details" colspan="5">Details</th>
9013           </tr>
9014           <tr class="entry_cont">
9015             <td class="entry_details" colspan="5">
9016               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9017 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9018 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9019 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9020 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9021 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9022 capture intents.<wbr/></p>
9023 <p>For example,<wbr/> when requests are submitted in the following order:
9024   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9025   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>
9026 <p>The output images for request B may have contents captured before the output images for
9027 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9028 request A.<wbr/></p>
9029 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9030 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9031 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9032 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9033 <code>false</code> if present.<wbr/></p>
9034 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9035 capture templates is always <code>false</code> if present.<wbr/></p>
9036 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9037             </td>
9038           </tr>
9039
9040           <tr class="entries_header">
9041             <th class="th_details" colspan="5">HAL Implementation Details</th>
9042           </tr>
9043           <tr class="entry_cont">
9044             <td class="entry_details" colspan="5">
9045               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9046 capture intent.<wbr/></p>
9047             </td>
9048           </tr>
9049
9050           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9051            <!-- end of entry -->
9052         
9053         
9054
9055       <!-- end of kind -->
9056       </tbody>
9057
9058   <!-- end of section -->
9059   <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
9060
9061
9062       <tr><td colspan="6" class="kind">controls</td></tr>
9063
9064       <thead class="entries_header">
9065         <tr>
9066           <th class="th_name">Property Name</th>
9067           <th class="th_type">Type</th>
9068           <th class="th_description">Description</th>
9069           <th class="th_units">Units</th>
9070           <th class="th_range">Range</th>
9071           <th class="th_tags">Tags</th>
9072         </tr>
9073       </thead>
9074
9075       <tbody>
9076
9077         
9078
9079         
9080
9081         
9082
9083         
9084
9085                 
9086           <tr class="entry" id="controls_android.demosaic.mode">
9087             <td class="entry_name
9088              " rowspan="1">
9089               android.<wbr/>demosaic.<wbr/>mode
9090             </td>
9091             <td class="entry_type">
9092                 <span class="entry_type_name entry_type_name_enum">byte</span>
9093
9094               <span class="entry_type_visibility"> [system]</span>
9095
9096
9097
9098
9099
9100                 <ul class="entry_type_enum">
9101                   <li>
9102                     <span class="entry_type_enum_name">FAST</span>
9103                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9104 Bayer RAW output.<wbr/></p></span>
9105                   </li>
9106                   <li>
9107                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9108                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9109 relative to raw output.<wbr/></p></span>
9110                   </li>
9111                 </ul>
9112
9113             </td> <!-- entry_type -->
9114
9115             <td class="entry_description">
9116               <p>Controls the quality of the demosaicing
9117 processing.<wbr/></p>
9118             </td>
9119
9120             <td class="entry_units">
9121             </td>
9122
9123             <td class="entry_range">
9124             </td>
9125
9126             <td class="entry_tags">
9127               <ul class="entry_tags">
9128                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9129               </ul>
9130             </td>
9131
9132           </tr>
9133
9134
9135           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9136            <!-- end of entry -->
9137         
9138         
9139
9140       <!-- end of kind -->
9141       </tbody>
9142
9143   <!-- end of section -->
9144   <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
9145
9146
9147       <tr><td colspan="6" class="kind">controls</td></tr>
9148
9149       <thead class="entries_header">
9150         <tr>
9151           <th class="th_name">Property Name</th>
9152           <th class="th_type">Type</th>
9153           <th class="th_description">Description</th>
9154           <th class="th_units">Units</th>
9155           <th class="th_range">Range</th>
9156           <th class="th_tags">Tags</th>
9157         </tr>
9158       </thead>
9159
9160       <tbody>
9161
9162         
9163
9164         
9165
9166         
9167
9168         
9169
9170                 
9171           <tr class="entry" id="controls_android.edge.mode">
9172             <td class="entry_name
9173              " rowspan="5">
9174               android.<wbr/>edge.<wbr/>mode
9175             </td>
9176             <td class="entry_type">
9177                 <span class="entry_type_name entry_type_name_enum">byte</span>
9178
9179               <span class="entry_type_visibility"> [public]</span>
9180
9181
9182               <span class="entry_type_hwlevel">[full] </span>
9183
9184
9185
9186                 <ul class="entry_type_enum">
9187                   <li>
9188                     <span class="entry_type_enum_name">OFF</span>
9189                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9190                   </li>
9191                   <li>
9192                     <span class="entry_type_enum_name">FAST</span>
9193                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9194 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9195 slow down frame rate relative to sensor.<wbr/></p></span>
9196                   </li>
9197                   <li>
9198                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9199                     <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>
9200                   </li>
9201                   <li>
9202                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9203                     <span class="entry_type_enum_optional">[optional]</span>
9204                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9205 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>) or below have
9206 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9207 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9208 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9209 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9210 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9211 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9212 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9213 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9214 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9215 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9216 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9217 reasonable preview quality.<wbr/></p>
9218 <p>This mode is guaranteed to be supported by devices that support either the
9219 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9220 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9221 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9222                   </li>
9223                 </ul>
9224
9225             </td> <!-- entry_type -->
9226
9227             <td class="entry_description">
9228               <p>Operation mode for edge
9229 enhancement.<wbr/></p>
9230             </td>
9231
9232             <td class="entry_units">
9233             </td>
9234
9235             <td class="entry_range">
9236               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9237             </td>
9238
9239             <td class="entry_tags">
9240               <ul class="entry_tags">
9241                   <li><a href="#tag_V1">V1</a></li>
9242                   <li><a href="#tag_REPROC">REPROC</a></li>
9243               </ul>
9244             </td>
9245
9246           </tr>
9247           <tr class="entries_header">
9248             <th class="th_details" colspan="5">Details</th>
9249           </tr>
9250           <tr class="entry_cont">
9251             <td class="entry_details" colspan="5">
9252               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9253 no enhancement will be applied by the camera device.<wbr/></p>
9254 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9255 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9256 camera device will use the highest-quality enhancement algorithms,<wbr/>
9257 even if it slows down capture rate.<wbr/> FAST means the camera device will
9258 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9259 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9260 amount of enhancement applied.<wbr/></p>
9261 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9262 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9263 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9264 edge enhancement to low-resolution streams (below maximum recording resolution) to
9265 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9266 since those will be reprocessed later if necessary.<wbr/></p>
9267 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9268 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9269 The camera device may adjust its internal edge enhancement parameters for best
9270 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>
9271             </td>
9272           </tr>
9273
9274           <tr class="entries_header">
9275             <th class="th_details" colspan="5">HAL Implementation Details</th>
9276           </tr>
9277           <tr class="entry_cont">
9278             <td class="entry_details" colspan="5">
9279               <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
9280 adjust the internal edge enhancement reduction parameters appropriately to get the best
9281 quality images.<wbr/></p>
9282             </td>
9283           </tr>
9284
9285           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9286            <!-- end of entry -->
9287         
9288                 
9289           <tr class="entry" id="controls_android.edge.strength">
9290             <td class="entry_name
9291              " rowspan="1">
9292               android.<wbr/>edge.<wbr/>strength
9293             </td>
9294             <td class="entry_type">
9295                 <span class="entry_type_name">byte</span>
9296
9297               <span class="entry_type_visibility"> [system]</span>
9298
9299
9300
9301
9302
9303
9304             </td> <!-- entry_type -->
9305
9306             <td class="entry_description">
9307               <p>Control the amount of edge enhancement
9308 applied to the images</p>
9309             </td>
9310
9311             <td class="entry_units">
9312               1-10; 10 is maximum sharpening
9313             </td>
9314
9315             <td class="entry_range">
9316             </td>
9317
9318             <td class="entry_tags">
9319               <ul class="entry_tags">
9320                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9321               </ul>
9322             </td>
9323
9324           </tr>
9325
9326
9327           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9328            <!-- end of entry -->
9329         
9330         
9331
9332       <!-- end of kind -->
9333       </tbody>
9334       <tr><td colspan="6" class="kind">static</td></tr>
9335
9336       <thead class="entries_header">
9337         <tr>
9338           <th class="th_name">Property Name</th>
9339           <th class="th_type">Type</th>
9340           <th class="th_description">Description</th>
9341           <th class="th_units">Units</th>
9342           <th class="th_range">Range</th>
9343           <th class="th_tags">Tags</th>
9344         </tr>
9345       </thead>
9346
9347       <tbody>
9348
9349         
9350
9351         
9352
9353         
9354
9355         
9356
9357                 
9358           <tr class="entry" id="static_android.edge.availableEdgeModes">
9359             <td class="entry_name
9360              " rowspan="5">
9361               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9362             </td>
9363             <td class="entry_type">
9364                 <span class="entry_type_name">byte</span>
9365                 <span class="entry_type_container">x</span>
9366
9367                 <span class="entry_type_array">
9368                   n
9369                 </span>
9370               <span class="entry_type_visibility"> [public as enumList]</span>
9371
9372
9373               <span class="entry_type_hwlevel">[full] </span>
9374
9375
9376                 <div class="entry_type_notes">list of enums</div>
9377
9378
9379             </td> <!-- entry_type -->
9380
9381             <td class="entry_description">
9382               <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
9383 device.<wbr/></p>
9384             </td>
9385
9386             <td class="entry_units">
9387             </td>
9388
9389             <td class="entry_range">
9390               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9391             </td>
9392
9393             <td class="entry_tags">
9394               <ul class="entry_tags">
9395                   <li><a href="#tag_V1">V1</a></li>
9396                   <li><a href="#tag_REPROC">REPROC</a></li>
9397               </ul>
9398             </td>
9399
9400           </tr>
9401           <tr class="entries_header">
9402             <th class="th_details" colspan="5">Details</th>
9403           </tr>
9404           <tr class="entry_cont">
9405             <td class="entry_details" colspan="5">
9406               <p>Full-capability camera devices must always support OFF; camera devices that support
9407 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9408 list FAST.<wbr/></p>
9409             </td>
9410           </tr>
9411
9412           <tr class="entries_header">
9413             <th class="th_details" colspan="5">HAL Implementation Details</th>
9414           </tr>
9415           <tr class="entry_cont">
9416             <td class="entry_details" colspan="5">
9417               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9418 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9419 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9420 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9421             </td>
9422           </tr>
9423
9424           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9425            <!-- end of entry -->
9426         
9427         
9428
9429       <!-- end of kind -->
9430       </tbody>
9431       <tr><td colspan="6" class="kind">dynamic</td></tr>
9432
9433       <thead class="entries_header">
9434         <tr>
9435           <th class="th_name">Property Name</th>
9436           <th class="th_type">Type</th>
9437           <th class="th_description">Description</th>
9438           <th class="th_units">Units</th>
9439           <th class="th_range">Range</th>
9440           <th class="th_tags">Tags</th>
9441         </tr>
9442       </thead>
9443
9444       <tbody>
9445
9446         
9447
9448         
9449
9450         
9451
9452         
9453
9454                 
9455           <tr class="entry" id="dynamic_android.edge.mode">
9456             <td class="entry_name
9457              " rowspan="5">
9458               android.<wbr/>edge.<wbr/>mode
9459             </td>
9460             <td class="entry_type">
9461                 <span class="entry_type_name entry_type_name_enum">byte</span>
9462
9463               <span class="entry_type_visibility"> [public]</span>
9464
9465
9466               <span class="entry_type_hwlevel">[full] </span>
9467
9468
9469
9470                 <ul class="entry_type_enum">
9471                   <li>
9472                     <span class="entry_type_enum_name">OFF</span>
9473                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9474                   </li>
9475                   <li>
9476                     <span class="entry_type_enum_name">FAST</span>
9477                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9478 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9479 slow down frame rate relative to sensor.<wbr/></p></span>
9480                   </li>
9481                   <li>
9482                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9483                     <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>
9484                   </li>
9485                   <li>
9486                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9487                     <span class="entry_type_enum_optional">[optional]</span>
9488                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9489 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>) or below have
9490 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9491 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9492 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9493 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9494 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9495 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9496 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9497 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9498 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9499 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9500 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9501 reasonable preview quality.<wbr/></p>
9502 <p>This mode is guaranteed to be supported by devices that support either the
9503 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9504 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9505 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9506                   </li>
9507                 </ul>
9508
9509             </td> <!-- entry_type -->
9510
9511             <td class="entry_description">
9512               <p>Operation mode for edge
9513 enhancement.<wbr/></p>
9514             </td>
9515
9516             <td class="entry_units">
9517             </td>
9518
9519             <td class="entry_range">
9520               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9521             </td>
9522
9523             <td class="entry_tags">
9524               <ul class="entry_tags">
9525                   <li><a href="#tag_V1">V1</a></li>
9526                   <li><a href="#tag_REPROC">REPROC</a></li>
9527               </ul>
9528             </td>
9529
9530           </tr>
9531           <tr class="entries_header">
9532             <th class="th_details" colspan="5">Details</th>
9533           </tr>
9534           <tr class="entry_cont">
9535             <td class="entry_details" colspan="5">
9536               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9537 no enhancement will be applied by the camera device.<wbr/></p>
9538 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9539 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9540 camera device will use the highest-quality enhancement algorithms,<wbr/>
9541 even if it slows down capture rate.<wbr/> FAST means the camera device will
9542 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9543 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9544 amount of enhancement applied.<wbr/></p>
9545 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9546 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9547 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9548 edge enhancement to low-resolution streams (below maximum recording resolution) to
9549 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9550 since those will be reprocessed later if necessary.<wbr/></p>
9551 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9552 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9553 The camera device may adjust its internal edge enhancement parameters for best
9554 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>
9555             </td>
9556           </tr>
9557
9558           <tr class="entries_header">
9559             <th class="th_details" colspan="5">HAL Implementation Details</th>
9560           </tr>
9561           <tr class="entry_cont">
9562             <td class="entry_details" colspan="5">
9563               <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
9564 adjust the internal edge enhancement reduction parameters appropriately to get the best
9565 quality images.<wbr/></p>
9566             </td>
9567           </tr>
9568
9569           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9570            <!-- end of entry -->
9571         
9572         
9573
9574       <!-- end of kind -->
9575       </tbody>
9576
9577   <!-- end of section -->
9578   <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9579
9580
9581       <tr><td colspan="6" class="kind">controls</td></tr>
9582
9583       <thead class="entries_header">
9584         <tr>
9585           <th class="th_name">Property Name</th>
9586           <th class="th_type">Type</th>
9587           <th class="th_description">Description</th>
9588           <th class="th_units">Units</th>
9589           <th class="th_range">Range</th>
9590           <th class="th_tags">Tags</th>
9591         </tr>
9592       </thead>
9593
9594       <tbody>
9595
9596         
9597
9598         
9599
9600         
9601
9602         
9603
9604                 
9605           <tr class="entry" id="controls_android.flash.firingPower">
9606             <td class="entry_name
9607              " rowspan="3">
9608               android.<wbr/>flash.<wbr/>firing<wbr/>Power
9609             </td>
9610             <td class="entry_type">
9611                 <span class="entry_type_name">byte</span>
9612
9613               <span class="entry_type_visibility"> [system]</span>
9614
9615
9616
9617
9618
9619
9620             </td> <!-- entry_type -->
9621
9622             <td class="entry_description">
9623               <p>Power for flash firing/<wbr/>torch</p>
9624             </td>
9625
9626             <td class="entry_units">
9627               10 is max power; 0 is no flash.<wbr/> Linear
9628             </td>
9629
9630             <td class="entry_range">
9631               <p>0 - 10</p>
9632             </td>
9633
9634             <td class="entry_tags">
9635               <ul class="entry_tags">
9636                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9637               </ul>
9638             </td>
9639
9640           </tr>
9641           <tr class="entries_header">
9642             <th class="th_details" colspan="5">Details</th>
9643           </tr>
9644           <tr class="entry_cont">
9645             <td class="entry_details" colspan="5">
9646               <p>Power for snapshot may use a different scale than
9647 for torch mode.<wbr/> Only one entry for torch mode will be
9648 used</p>
9649             </td>
9650           </tr>
9651
9652
9653           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9654            <!-- end of entry -->
9655         
9656                 
9657           <tr class="entry" id="controls_android.flash.firingTime">
9658             <td class="entry_name
9659              " rowspan="3">
9660               android.<wbr/>flash.<wbr/>firing<wbr/>Time
9661             </td>
9662             <td class="entry_type">
9663                 <span class="entry_type_name">int64</span>
9664
9665               <span class="entry_type_visibility"> [system]</span>
9666
9667
9668
9669
9670
9671
9672             </td> <!-- entry_type -->
9673
9674             <td class="entry_description">
9675               <p>Firing time of flash relative to start of
9676 exposure</p>
9677             </td>
9678
9679             <td class="entry_units">
9680               nanoseconds
9681             </td>
9682
9683             <td class="entry_range">
9684               <p>0-(exposure time-flash duration)</p>
9685             </td>
9686
9687             <td class="entry_tags">
9688               <ul class="entry_tags">
9689                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9690               </ul>
9691             </td>
9692
9693           </tr>
9694           <tr class="entries_header">
9695             <th class="th_details" colspan="5">Details</th>
9696           </tr>
9697           <tr class="entry_cont">
9698             <td class="entry_details" colspan="5">
9699               <p>Clamped to (0,<wbr/> exposure time - flash
9700 duration).<wbr/></p>
9701             </td>
9702           </tr>
9703
9704
9705           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9706            <!-- end of entry -->
9707         
9708                 
9709           <tr class="entry" id="controls_android.flash.mode">
9710             <td class="entry_name
9711              " rowspan="3">
9712               android.<wbr/>flash.<wbr/>mode
9713             </td>
9714             <td class="entry_type">
9715                 <span class="entry_type_name entry_type_name_enum">byte</span>
9716
9717               <span class="entry_type_visibility"> [public]</span>
9718
9719
9720               <span class="entry_type_hwlevel">[legacy] </span>
9721
9722
9723
9724                 <ul class="entry_type_enum">
9725                   <li>
9726                     <span class="entry_type_enum_name">OFF</span>
9727                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9728                   </li>
9729                   <li>
9730                     <span class="entry_type_enum_name">SINGLE</span>
9731                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9732 for this capture.<wbr/></p></span>
9733                   </li>
9734                   <li>
9735                     <span class="entry_type_enum_name">TORCH</span>
9736                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9737                   </li>
9738                 </ul>
9739
9740             </td> <!-- entry_type -->
9741
9742             <td class="entry_description">
9743               <p>The desired mode for for the camera device's flash control.<wbr/></p>
9744             </td>
9745
9746             <td class="entry_units">
9747             </td>
9748
9749             <td class="entry_range">
9750             </td>
9751
9752             <td class="entry_tags">
9753               <ul class="entry_tags">
9754                   <li><a href="#tag_BC">BC</a></li>
9755               </ul>
9756             </td>
9757
9758           </tr>
9759           <tr class="entries_header">
9760             <th class="th_details" colspan="5">Details</th>
9761           </tr>
9762           <tr class="entry_cont">
9763             <td class="entry_details" colspan="5">
9764               <p>This control is only effective when flash unit is available
9765 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9766 <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/>
9767 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9768 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9769 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9770 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9771 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9772 control should be used along with auto-exposure (AE) precapture metering sequence
9773 (<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>
9774 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9775 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9776 <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>
9777             </td>
9778           </tr>
9779
9780
9781           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9782            <!-- end of entry -->
9783         
9784         
9785
9786       <!-- end of kind -->
9787       </tbody>
9788       <tr><td colspan="6" class="kind">static</td></tr>
9789
9790       <thead class="entries_header">
9791         <tr>
9792           <th class="th_name">Property Name</th>
9793           <th class="th_type">Type</th>
9794           <th class="th_description">Description</th>
9795           <th class="th_units">Units</th>
9796           <th class="th_range">Range</th>
9797           <th class="th_tags">Tags</th>
9798         </tr>
9799       </thead>
9800
9801       <tbody>
9802
9803         
9804
9805         
9806
9807         
9808
9809         
9810                 
9811             
9812
9813                 
9814           <tr class="entry" id="static_android.flash.info.available">
9815             <td class="entry_name
9816              " rowspan="3">
9817               android.<wbr/>flash.<wbr/>info.<wbr/>available
9818             </td>
9819             <td class="entry_type">
9820                 <span class="entry_type_name entry_type_name_enum">byte</span>
9821
9822               <span class="entry_type_visibility"> [public as boolean]</span>
9823
9824
9825               <span class="entry_type_hwlevel">[legacy] </span>
9826
9827
9828
9829                 <ul class="entry_type_enum">
9830                   <li>
9831                     <span class="entry_type_enum_name">FALSE</span>
9832                   </li>
9833                   <li>
9834                     <span class="entry_type_enum_name">TRUE</span>
9835                   </li>
9836                 </ul>
9837
9838             </td> <!-- entry_type -->
9839
9840             <td class="entry_description">
9841               <p>Whether this camera device has a
9842 flash unit.<wbr/></p>
9843             </td>
9844
9845             <td class="entry_units">
9846             </td>
9847
9848             <td class="entry_range">
9849             </td>
9850
9851             <td class="entry_tags">
9852               <ul class="entry_tags">
9853                   <li><a href="#tag_BC">BC</a></li>
9854               </ul>
9855             </td>
9856
9857           </tr>
9858           <tr class="entries_header">
9859             <th class="th_details" colspan="5">Details</th>
9860           </tr>
9861           <tr class="entry_cont">
9862             <td class="entry_details" colspan="5">
9863               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9864 <p>If there is no flash unit,<wbr/> none of the flash controls do
9865 anything.<wbr/></p>
9866             </td>
9867           </tr>
9868
9869
9870           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9871            <!-- end of entry -->
9872         
9873                 
9874           <tr class="entry" id="static_android.flash.info.chargeDuration">
9875             <td class="entry_name
9876              " rowspan="3">
9877               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9878             </td>
9879             <td class="entry_type">
9880                 <span class="entry_type_name">int64</span>
9881
9882               <span class="entry_type_visibility"> [system]</span>
9883
9884
9885
9886
9887
9888
9889             </td> <!-- entry_type -->
9890
9891             <td class="entry_description">
9892               <p>Time taken before flash can fire
9893 again</p>
9894             </td>
9895
9896             <td class="entry_units">
9897               nanoseconds
9898             </td>
9899
9900             <td class="entry_range">
9901               <p>0-1e9</p>
9902             </td>
9903
9904             <td class="entry_tags">
9905               <ul class="entry_tags">
9906                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9907               </ul>
9908             </td>
9909
9910           </tr>
9911           <tr class="entries_header">
9912             <th class="th_details" colspan="5">Details</th>
9913           </tr>
9914           <tr class="entry_cont">
9915             <td class="entry_details" colspan="5">
9916               <p>1 second too long/<wbr/>too short for recharge? Should
9917 this be power-dependent?</p>
9918             </td>
9919           </tr>
9920
9921
9922           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9923            <!-- end of entry -->
9924         
9925         
9926         
9927
9928                 
9929           <tr class="entry" id="static_android.flash.colorTemperature">
9930             <td class="entry_name
9931              " rowspan="1">
9932               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9933             </td>
9934             <td class="entry_type">
9935                 <span class="entry_type_name">byte</span>
9936
9937               <span class="entry_type_visibility"> [system]</span>
9938
9939
9940
9941
9942
9943
9944             </td> <!-- entry_type -->
9945
9946             <td class="entry_description">
9947               <p>The x,<wbr/>y whitepoint of the
9948 flash</p>
9949             </td>
9950
9951             <td class="entry_units">
9952               pair of floats
9953             </td>
9954
9955             <td class="entry_range">
9956               <p>0-1 for both</p>
9957             </td>
9958
9959             <td class="entry_tags">
9960               <ul class="entry_tags">
9961                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9962               </ul>
9963             </td>
9964
9965           </tr>
9966
9967
9968           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9969            <!-- end of entry -->
9970         
9971                 
9972           <tr class="entry" id="static_android.flash.maxEnergy">
9973             <td class="entry_name
9974              " rowspan="1">
9975               android.<wbr/>flash.<wbr/>max<wbr/>Energy
9976             </td>
9977             <td class="entry_type">
9978                 <span class="entry_type_name">byte</span>
9979
9980               <span class="entry_type_visibility"> [system]</span>
9981
9982
9983
9984
9985
9986
9987             </td> <!-- entry_type -->
9988
9989             <td class="entry_description">
9990               <p>Max energy output of the flash for a full
9991 power single flash</p>
9992             </td>
9993
9994             <td class="entry_units">
9995               lumen-seconds
9996             </td>
9997
9998             <td class="entry_range">
9999               <p>&gt;= 0</p>
10000             </td>
10001
10002             <td class="entry_tags">
10003               <ul class="entry_tags">
10004                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10005               </ul>
10006             </td>
10007
10008           </tr>
10009
10010
10011           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10012            <!-- end of entry -->
10013         
10014         
10015
10016       <!-- end of kind -->
10017       </tbody>
10018       <tr><td colspan="6" class="kind">dynamic</td></tr>
10019
10020       <thead class="entries_header">
10021         <tr>
10022           <th class="th_name">Property Name</th>
10023           <th class="th_type">Type</th>
10024           <th class="th_description">Description</th>
10025           <th class="th_units">Units</th>
10026           <th class="th_range">Range</th>
10027           <th class="th_tags">Tags</th>
10028         </tr>
10029       </thead>
10030
10031       <tbody>
10032
10033         
10034
10035         
10036
10037         
10038
10039         
10040
10041                 
10042           <tr class="entry" id="dynamic_android.flash.firingPower">
10043             <td class="entry_name
10044              " rowspan="3">
10045               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10046             </td>
10047             <td class="entry_type">
10048                 <span class="entry_type_name">byte</span>
10049
10050               <span class="entry_type_visibility"> [system]</span>
10051
10052
10053
10054
10055
10056
10057             </td> <!-- entry_type -->
10058
10059             <td class="entry_description">
10060               <p>Power for flash firing/<wbr/>torch</p>
10061             </td>
10062
10063             <td class="entry_units">
10064               10 is max power; 0 is no flash.<wbr/> Linear
10065             </td>
10066
10067             <td class="entry_range">
10068               <p>0 - 10</p>
10069             </td>
10070
10071             <td class="entry_tags">
10072               <ul class="entry_tags">
10073                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10074               </ul>
10075             </td>
10076
10077           </tr>
10078           <tr class="entries_header">
10079             <th class="th_details" colspan="5">Details</th>
10080           </tr>
10081           <tr class="entry_cont">
10082             <td class="entry_details" colspan="5">
10083               <p>Power for snapshot may use a different scale than
10084 for torch mode.<wbr/> Only one entry for torch mode will be
10085 used</p>
10086             </td>
10087           </tr>
10088
10089
10090           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10091            <!-- end of entry -->
10092         
10093                 
10094           <tr class="entry" id="dynamic_android.flash.firingTime">
10095             <td class="entry_name
10096              " rowspan="3">
10097               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10098             </td>
10099             <td class="entry_type">
10100                 <span class="entry_type_name">int64</span>
10101
10102               <span class="entry_type_visibility"> [system]</span>
10103
10104
10105
10106
10107
10108
10109             </td> <!-- entry_type -->
10110
10111             <td class="entry_description">
10112               <p>Firing time of flash relative to start of
10113 exposure</p>
10114             </td>
10115
10116             <td class="entry_units">
10117               nanoseconds
10118             </td>
10119
10120             <td class="entry_range">
10121               <p>0-(exposure time-flash duration)</p>
10122             </td>
10123
10124             <td class="entry_tags">
10125               <ul class="entry_tags">
10126                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10127               </ul>
10128             </td>
10129
10130           </tr>
10131           <tr class="entries_header">
10132             <th class="th_details" colspan="5">Details</th>
10133           </tr>
10134           <tr class="entry_cont">
10135             <td class="entry_details" colspan="5">
10136               <p>Clamped to (0,<wbr/> exposure time - flash
10137 duration).<wbr/></p>
10138             </td>
10139           </tr>
10140
10141
10142           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10143            <!-- end of entry -->
10144         
10145                 
10146           <tr class="entry" id="dynamic_android.flash.mode">
10147             <td class="entry_name
10148              " rowspan="3">
10149               android.<wbr/>flash.<wbr/>mode
10150             </td>
10151             <td class="entry_type">
10152                 <span class="entry_type_name entry_type_name_enum">byte</span>
10153
10154               <span class="entry_type_visibility"> [public]</span>
10155
10156
10157               <span class="entry_type_hwlevel">[legacy] </span>
10158
10159
10160
10161                 <ul class="entry_type_enum">
10162                   <li>
10163                     <span class="entry_type_enum_name">OFF</span>
10164                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10165                   </li>
10166                   <li>
10167                     <span class="entry_type_enum_name">SINGLE</span>
10168                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10169 for this capture.<wbr/></p></span>
10170                   </li>
10171                   <li>
10172                     <span class="entry_type_enum_name">TORCH</span>
10173                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10174                   </li>
10175                 </ul>
10176
10177             </td> <!-- entry_type -->
10178
10179             <td class="entry_description">
10180               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10181             </td>
10182
10183             <td class="entry_units">
10184             </td>
10185
10186             <td class="entry_range">
10187             </td>
10188
10189             <td class="entry_tags">
10190               <ul class="entry_tags">
10191                   <li><a href="#tag_BC">BC</a></li>
10192               </ul>
10193             </td>
10194
10195           </tr>
10196           <tr class="entries_header">
10197             <th class="th_details" colspan="5">Details</th>
10198           </tr>
10199           <tr class="entry_cont">
10200             <td class="entry_details" colspan="5">
10201               <p>This control is only effective when flash unit is available
10202 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10203 <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/>
10204 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10205 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10206 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10207 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10208 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10209 control should be used along with auto-exposure (AE) precapture metering sequence
10210 (<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>
10211 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10212 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10213 <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>
10214             </td>
10215           </tr>
10216
10217
10218           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10219            <!-- end of entry -->
10220         
10221                 
10222           <tr class="entry" id="dynamic_android.flash.state">
10223             <td class="entry_name
10224              " rowspan="3">
10225               android.<wbr/>flash.<wbr/>state
10226             </td>
10227             <td class="entry_type">
10228                 <span class="entry_type_name entry_type_name_enum">byte</span>
10229
10230               <span class="entry_type_visibility"> [public]</span>
10231
10232
10233               <span class="entry_type_hwlevel">[limited] </span>
10234
10235
10236
10237                 <ul class="entry_type_enum">
10238                   <li>
10239                     <span class="entry_type_enum_name">UNAVAILABLE</span>
10240                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10241                   </li>
10242                   <li>
10243                     <span class="entry_type_enum_name">CHARGING</span>
10244                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10245                   </li>
10246                   <li>
10247                     <span class="entry_type_enum_name">READY</span>
10248                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10249                   </li>
10250                   <li>
10251                     <span class="entry_type_enum_name">FIRED</span>
10252                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10253                   </li>
10254                   <li>
10255                     <span class="entry_type_enum_name">PARTIAL</span>
10256                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10257 <p>This is usually due to the next or previous frame having
10258 the flash fire,<wbr/> and the flash spilling into this capture
10259 due to hardware limitations.<wbr/></p></span>
10260                   </li>
10261                 </ul>
10262
10263             </td> <!-- entry_type -->
10264
10265             <td class="entry_description">
10266               <p>Current state of the flash
10267 unit.<wbr/></p>
10268             </td>
10269
10270             <td class="entry_units">
10271             </td>
10272
10273             <td class="entry_range">
10274             </td>
10275
10276             <td class="entry_tags">
10277             </td>
10278
10279           </tr>
10280           <tr class="entries_header">
10281             <th class="th_details" colspan="5">Details</th>
10282           </tr>
10283           <tr class="entry_cont">
10284             <td class="entry_details" colspan="5">
10285               <p>When the camera device doesn't have flash unit
10286 (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/>
10287 Other states indicate the current flash status.<wbr/></p>
10288 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10289 <ul>
10290 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10291 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10292    will always return FIRED.<wbr/></li>
10293 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10294    will always return FIRED.<wbr/></li>
10295 </ul>
10296 <p>In all other conditions the state will not be available on
10297 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10298             </td>
10299           </tr>
10300
10301
10302           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10303            <!-- end of entry -->
10304         
10305         
10306
10307       <!-- end of kind -->
10308       </tbody>
10309
10310   <!-- end of section -->
10311   <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
10312
10313
10314       <tr><td colspan="6" class="kind">controls</td></tr>
10315
10316       <thead class="entries_header">
10317         <tr>
10318           <th class="th_name">Property Name</th>
10319           <th class="th_type">Type</th>
10320           <th class="th_description">Description</th>
10321           <th class="th_units">Units</th>
10322           <th class="th_range">Range</th>
10323           <th class="th_tags">Tags</th>
10324         </tr>
10325       </thead>
10326
10327       <tbody>
10328
10329         
10330
10331         
10332
10333         
10334
10335         
10336
10337                 
10338           <tr class="entry" id="controls_android.hotPixel.mode">
10339             <td class="entry_name
10340              " rowspan="3">
10341               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10342             </td>
10343             <td class="entry_type">
10344                 <span class="entry_type_name entry_type_name_enum">byte</span>
10345
10346               <span class="entry_type_visibility"> [public]</span>
10347
10348
10349
10350
10351
10352                 <ul class="entry_type_enum">
10353                   <li>
10354                     <span class="entry_type_enum_name">OFF</span>
10355                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10356 <p>The frame rate must not be reduced relative to sensor raw output
10357 for this option.<wbr/></p>
10358 <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>
10359                   </li>
10360                   <li>
10361                     <span class="entry_type_enum_name">FAST</span>
10362                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10363 rate relative to sensor raw output.<wbr/></p>
10364 <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>
10365                   </li>
10366                   <li>
10367                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
10368                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10369 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10370 <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>
10371                   </li>
10372                 </ul>
10373
10374             </td> <!-- entry_type -->
10375
10376             <td class="entry_description">
10377               <p>Operational mode for hot pixel correction.<wbr/></p>
10378             </td>
10379
10380             <td class="entry_units">
10381             </td>
10382
10383             <td class="entry_range">
10384               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10385             </td>
10386
10387             <td class="entry_tags">
10388               <ul class="entry_tags">
10389                   <li><a href="#tag_V1">V1</a></li>
10390                   <li><a href="#tag_RAW">RAW</a></li>
10391               </ul>
10392             </td>
10393
10394           </tr>
10395           <tr class="entries_header">
10396             <th class="th_details" colspan="5">Details</th>
10397           </tr>
10398           <tr class="entry_cont">
10399             <td class="entry_details" colspan="5">
10400               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10401 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10402 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10403             </td>
10404           </tr>
10405
10406
10407           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10408            <!-- end of entry -->
10409         
10410         
10411
10412       <!-- end of kind -->
10413       </tbody>
10414       <tr><td colspan="6" class="kind">static</td></tr>
10415
10416       <thead class="entries_header">
10417         <tr>
10418           <th class="th_name">Property Name</th>
10419           <th class="th_type">Type</th>
10420           <th class="th_description">Description</th>
10421           <th class="th_units">Units</th>
10422           <th class="th_range">Range</th>
10423           <th class="th_tags">Tags</th>
10424         </tr>
10425       </thead>
10426
10427       <tbody>
10428
10429         
10430
10431         
10432
10433         
10434
10435         
10436
10437                 
10438           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10439             <td class="entry_name
10440              " rowspan="5">
10441               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10442             </td>
10443             <td class="entry_type">
10444                 <span class="entry_type_name">byte</span>
10445                 <span class="entry_type_container">x</span>
10446
10447                 <span class="entry_type_array">
10448                   n
10449                 </span>
10450               <span class="entry_type_visibility"> [public as enumList]</span>
10451
10452
10453
10454
10455                 <div class="entry_type_notes">list of enums</div>
10456
10457
10458             </td> <!-- entry_type -->
10459
10460             <td class="entry_description">
10461               <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
10462 camera device.<wbr/></p>
10463             </td>
10464
10465             <td class="entry_units">
10466             </td>
10467
10468             <td class="entry_range">
10469               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10470             </td>
10471
10472             <td class="entry_tags">
10473               <ul class="entry_tags">
10474                   <li><a href="#tag_V1">V1</a></li>
10475                   <li><a href="#tag_RAW">RAW</a></li>
10476               </ul>
10477             </td>
10478
10479           </tr>
10480           <tr class="entries_header">
10481             <th class="th_details" colspan="5">Details</th>
10482           </tr>
10483           <tr class="entry_cont">
10484             <td class="entry_details" colspan="5">
10485               <p>FULL mode camera devices will always support FAST.<wbr/></p>
10486             </td>
10487           </tr>
10488
10489           <tr class="entries_header">
10490             <th class="th_details" colspan="5">HAL Implementation Details</th>
10491           </tr>
10492           <tr class="entry_cont">
10493             <td class="entry_details" colspan="5">
10494               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10495 pixels than actual pixels on the camera sensor.<wbr/>
10496 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10497 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10498 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10499 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10500             </td>
10501           </tr>
10502
10503           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10504            <!-- end of entry -->
10505         
10506         
10507
10508       <!-- end of kind -->
10509       </tbody>
10510       <tr><td colspan="6" class="kind">dynamic</td></tr>
10511
10512       <thead class="entries_header">
10513         <tr>
10514           <th class="th_name">Property Name</th>
10515           <th class="th_type">Type</th>
10516           <th class="th_description">Description</th>
10517           <th class="th_units">Units</th>
10518           <th class="th_range">Range</th>
10519           <th class="th_tags">Tags</th>
10520         </tr>
10521       </thead>
10522
10523       <tbody>
10524
10525         
10526
10527         
10528
10529         
10530
10531         
10532
10533                 
10534           <tr class="entry" id="dynamic_android.hotPixel.mode">
10535             <td class="entry_name
10536              " rowspan="3">
10537               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10538             </td>
10539             <td class="entry_type">
10540                 <span class="entry_type_name entry_type_name_enum">byte</span>
10541
10542               <span class="entry_type_visibility"> [public]</span>
10543
10544
10545
10546
10547
10548                 <ul class="entry_type_enum">
10549                   <li>
10550                     <span class="entry_type_enum_name">OFF</span>
10551                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10552 <p>The frame rate must not be reduced relative to sensor raw output
10553 for this option.<wbr/></p>
10554 <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>
10555                   </li>
10556                   <li>
10557                     <span class="entry_type_enum_name">FAST</span>
10558                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10559 rate relative to sensor raw output.<wbr/></p>
10560 <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>
10561                   </li>
10562                   <li>
10563                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
10564                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10565 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10566 <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>
10567                   </li>
10568                 </ul>
10569
10570             </td> <!-- entry_type -->
10571
10572             <td class="entry_description">
10573               <p>Operational mode for hot pixel correction.<wbr/></p>
10574             </td>
10575
10576             <td class="entry_units">
10577             </td>
10578
10579             <td class="entry_range">
10580               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10581             </td>
10582
10583             <td class="entry_tags">
10584               <ul class="entry_tags">
10585                   <li><a href="#tag_V1">V1</a></li>
10586                   <li><a href="#tag_RAW">RAW</a></li>
10587               </ul>
10588             </td>
10589
10590           </tr>
10591           <tr class="entries_header">
10592             <th class="th_details" colspan="5">Details</th>
10593           </tr>
10594           <tr class="entry_cont">
10595             <td class="entry_details" colspan="5">
10596               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10597 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10598 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10599             </td>
10600           </tr>
10601
10602
10603           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10604            <!-- end of entry -->
10605         
10606         
10607
10608       <!-- end of kind -->
10609       </tbody>
10610
10611   <!-- end of section -->
10612   <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10613
10614
10615       <tr><td colspan="6" class="kind">controls</td></tr>
10616
10617       <thead class="entries_header">
10618         <tr>
10619           <th class="th_name">Property Name</th>
10620           <th class="th_type">Type</th>
10621           <th class="th_description">Description</th>
10622           <th class="th_units">Units</th>
10623           <th class="th_range">Range</th>
10624           <th class="th_tags">Tags</th>
10625         </tr>
10626       </thead>
10627
10628       <tbody>
10629
10630         
10631
10632         
10633
10634         
10635
10636         
10637
10638                 
10639           <tr class="entry" id="controls_android.jpeg.gpsLocation">
10640             <td class="entry_name
10641              " rowspan="3">
10642               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10643             </td>
10644             <td class="entry_type">
10645                 <span class="entry_type_name">byte</span>
10646
10647               <span class="entry_type_visibility"> [java_public as location]</span>
10648
10649               <span class="entry_type_synthetic">[synthetic] </span>
10650
10651               <span class="entry_type_hwlevel">[legacy] </span>
10652
10653
10654
10655
10656             </td> <!-- entry_type -->
10657
10658             <td class="entry_description">
10659               <p>A location object to use when generating image GPS metadata.<wbr/></p>
10660             </td>
10661
10662             <td class="entry_units">
10663             </td>
10664
10665             <td class="entry_range">
10666             </td>
10667
10668             <td class="entry_tags">
10669             </td>
10670
10671           </tr>
10672           <tr class="entries_header">
10673             <th class="th_details" colspan="5">Details</th>
10674           </tr>
10675           <tr class="entry_cont">
10676             <td class="entry_details" colspan="5">
10677               <p>Setting a location object in a request will include the GPS coordinates of the location
10678 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10679 viewed by anyone who receives the JPEG image.<wbr/></p>
10680             </td>
10681           </tr>
10682
10683
10684           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10685            <!-- end of entry -->
10686         
10687                 
10688           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10689             <td class="entry_name
10690              " rowspan="1">
10691               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10692             </td>
10693             <td class="entry_type">
10694                 <span class="entry_type_name">double</span>
10695                 <span class="entry_type_container">x</span>
10696
10697                 <span class="entry_type_array">
10698                   3
10699                 </span>
10700               <span class="entry_type_visibility"> [ndk_public]</span>
10701
10702
10703               <span class="entry_type_hwlevel">[legacy] </span>
10704
10705
10706                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10707
10708
10709             </td> <!-- entry_type -->
10710
10711             <td class="entry_description">
10712               <p>GPS coordinates to include in output JPEG
10713 EXIF.<wbr/></p>
10714             </td>
10715
10716             <td class="entry_units">
10717             </td>
10718
10719             <td class="entry_range">
10720               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10721             </td>
10722
10723             <td class="entry_tags">
10724               <ul class="entry_tags">
10725                   <li><a href="#tag_BC">BC</a></li>
10726               </ul>
10727             </td>
10728
10729           </tr>
10730
10731
10732           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10733            <!-- end of entry -->
10734         
10735                 
10736           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10737             <td class="entry_name
10738              " rowspan="1">
10739               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10740             </td>
10741             <td class="entry_type">
10742                 <span class="entry_type_name">byte</span>
10743
10744               <span class="entry_type_visibility"> [ndk_public as string]</span>
10745
10746
10747               <span class="entry_type_hwlevel">[legacy] </span>
10748
10749
10750
10751
10752             </td> <!-- entry_type -->
10753
10754             <td class="entry_description">
10755               <p>32 characters describing GPS algorithm to
10756 include in EXIF.<wbr/></p>
10757             </td>
10758
10759             <td class="entry_units">
10760               UTF-8 null-terminated string
10761             </td>
10762
10763             <td class="entry_range">
10764             </td>
10765
10766             <td class="entry_tags">
10767               <ul class="entry_tags">
10768                   <li><a href="#tag_BC">BC</a></li>
10769               </ul>
10770             </td>
10771
10772           </tr>
10773
10774
10775           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10776            <!-- end of entry -->
10777         
10778                 
10779           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10780             <td class="entry_name
10781              " rowspan="1">
10782               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10783             </td>
10784             <td class="entry_type">
10785                 <span class="entry_type_name">int64</span>
10786
10787               <span class="entry_type_visibility"> [ndk_public]</span>
10788
10789
10790               <span class="entry_type_hwlevel">[legacy] </span>
10791
10792
10793
10794
10795             </td> <!-- entry_type -->
10796
10797             <td class="entry_description">
10798               <p>Time GPS fix was made to include in
10799 EXIF.<wbr/></p>
10800             </td>
10801
10802             <td class="entry_units">
10803               UTC in seconds since January 1,<wbr/> 1970
10804             </td>
10805
10806             <td class="entry_range">
10807             </td>
10808
10809             <td class="entry_tags">
10810               <ul class="entry_tags">
10811                   <li><a href="#tag_BC">BC</a></li>
10812               </ul>
10813             </td>
10814
10815           </tr>
10816
10817
10818           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10819            <!-- end of entry -->
10820         
10821                 
10822           <tr class="entry" id="controls_android.jpeg.orientation">
10823             <td class="entry_name
10824              " rowspan="3">
10825               android.<wbr/>jpeg.<wbr/>orientation
10826             </td>
10827             <td class="entry_type">
10828                 <span class="entry_type_name">int32</span>
10829
10830               <span class="entry_type_visibility"> [public]</span>
10831
10832
10833               <span class="entry_type_hwlevel">[legacy] </span>
10834
10835
10836
10837
10838             </td> <!-- entry_type -->
10839
10840             <td class="entry_description">
10841               <p>The orientation for a JPEG image.<wbr/></p>
10842             </td>
10843
10844             <td class="entry_units">
10845               Degrees in multiples of 90
10846             </td>
10847
10848             <td class="entry_range">
10849               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10850             </td>
10851
10852             <td class="entry_tags">
10853               <ul class="entry_tags">
10854                   <li><a href="#tag_BC">BC</a></li>
10855               </ul>
10856             </td>
10857
10858           </tr>
10859           <tr class="entries_header">
10860             <th class="th_details" colspan="5">Details</th>
10861           </tr>
10862           <tr class="entry_cont">
10863             <td class="entry_details" colspan="5">
10864               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10865 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10866 upright.<wbr/></p>
10867 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10868 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10869 the thumbnail data will also be rotated.<wbr/></p>
10870 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10871 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10872 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10873 sample code may be used:</p>
10874 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10875     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10876     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10877
10878     //<wbr/> Round device orientation to a multiple of 90
10879     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10880
10881     //<wbr/> Reverse device orientation for front-facing cameras
10882     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10883     if (facingFront) deviceOrientation = -deviceOrientation;
10884
10885     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10886     //<wbr/> the image upright relative to the device orientation
10887     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10888
10889     return jpegOrientation;
10890 }
10891 </code></pre>
10892             </td>
10893           </tr>
10894
10895
10896           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10897            <!-- end of entry -->
10898         
10899                 
10900           <tr class="entry" id="controls_android.jpeg.quality">
10901             <td class="entry_name
10902              " rowspan="3">
10903               android.<wbr/>jpeg.<wbr/>quality
10904             </td>
10905             <td class="entry_type">
10906                 <span class="entry_type_name">byte</span>
10907
10908               <span class="entry_type_visibility"> [public]</span>
10909
10910
10911               <span class="entry_type_hwlevel">[legacy] </span>
10912
10913
10914
10915
10916             </td> <!-- entry_type -->
10917
10918             <td class="entry_description">
10919               <p>Compression quality of the final JPEG
10920 image.<wbr/></p>
10921             </td>
10922
10923             <td class="entry_units">
10924             </td>
10925
10926             <td class="entry_range">
10927               <p>1-100; larger is higher quality</p>
10928             </td>
10929
10930             <td class="entry_tags">
10931               <ul class="entry_tags">
10932                   <li><a href="#tag_BC">BC</a></li>
10933               </ul>
10934             </td>
10935
10936           </tr>
10937           <tr class="entries_header">
10938             <th class="th_details" colspan="5">Details</th>
10939           </tr>
10940           <tr class="entry_cont">
10941             <td class="entry_details" colspan="5">
10942               <p>85-95 is typical usage range.<wbr/></p>
10943             </td>
10944           </tr>
10945
10946
10947           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10948            <!-- end of entry -->
10949         
10950                 
10951           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10952             <td class="entry_name
10953              " rowspan="1">
10954               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10955             </td>
10956             <td class="entry_type">
10957                 <span class="entry_type_name">byte</span>
10958
10959               <span class="entry_type_visibility"> [public]</span>
10960
10961
10962               <span class="entry_type_hwlevel">[legacy] </span>
10963
10964
10965
10966
10967             </td> <!-- entry_type -->
10968
10969             <td class="entry_description">
10970               <p>Compression quality of JPEG
10971 thumbnail.<wbr/></p>
10972             </td>
10973
10974             <td class="entry_units">
10975             </td>
10976
10977             <td class="entry_range">
10978               <p>1-100; larger is higher quality</p>
10979             </td>
10980
10981             <td class="entry_tags">
10982               <ul class="entry_tags">
10983                   <li><a href="#tag_BC">BC</a></li>
10984               </ul>
10985             </td>
10986
10987           </tr>
10988
10989
10990           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10991            <!-- end of entry -->
10992         
10993                 
10994           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10995             <td class="entry_name
10996              " rowspan="5">
10997               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10998             </td>
10999             <td class="entry_type">
11000                 <span class="entry_type_name">int32</span>
11001                 <span class="entry_type_container">x</span>
11002
11003                 <span class="entry_type_array">
11004                   2
11005                 </span>
11006               <span class="entry_type_visibility"> [public as size]</span>
11007
11008
11009               <span class="entry_type_hwlevel">[legacy] </span>
11010
11011
11012
11013
11014             </td> <!-- entry_type -->
11015
11016             <td class="entry_description">
11017               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11018             </td>
11019
11020             <td class="entry_units">
11021             </td>
11022
11023             <td class="entry_range">
11024               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11025             </td>
11026
11027             <td class="entry_tags">
11028               <ul class="entry_tags">
11029                   <li><a href="#tag_BC">BC</a></li>
11030               </ul>
11031             </td>
11032
11033           </tr>
11034           <tr class="entries_header">
11035             <th class="th_details" colspan="5">Details</th>
11036           </tr>
11037           <tr class="entry_cont">
11038             <td class="entry_details" colspan="5">
11039               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11040 but the captured JPEG will still be a valid image.<wbr/></p>
11041 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11042 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11043 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11044 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11045 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11046 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11047 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11048 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11049 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11050 the camera device will handle thumbnail rotation in one of the following ways:</p>
11051 <ul>
11052 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11053   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11054 <li>Rotate the jpeg and thumbnail image data and not set
11055   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11056   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11057   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11058   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11059   size.<wbr/></li>
11060 </ul>
11061             </td>
11062           </tr>
11063
11064           <tr class="entries_header">
11065             <th class="th_details" colspan="5">HAL Implementation Details</th>
11066           </tr>
11067           <tr class="entry_cont">
11068             <td class="entry_details" colspan="5">
11069               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11070 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11071 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11072 thumbnail image cropping.<wbr/></p>
11073             </td>
11074           </tr>
11075
11076           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11077            <!-- end of entry -->
11078         
11079         
11080
11081       <!-- end of kind -->
11082       </tbody>
11083       <tr><td colspan="6" class="kind">static</td></tr>
11084
11085       <thead class="entries_header">
11086         <tr>
11087           <th class="th_name">Property Name</th>
11088           <th class="th_type">Type</th>
11089           <th class="th_description">Description</th>
11090           <th class="th_units">Units</th>
11091           <th class="th_range">Range</th>
11092           <th class="th_tags">Tags</th>
11093         </tr>
11094       </thead>
11095
11096       <tbody>
11097
11098         
11099
11100         
11101
11102         
11103
11104         
11105
11106                 
11107           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11108             <td class="entry_name
11109              " rowspan="3">
11110               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11111             </td>
11112             <td class="entry_type">
11113                 <span class="entry_type_name">int32</span>
11114                 <span class="entry_type_container">x</span>
11115
11116                 <span class="entry_type_array">
11117                   2 x n
11118                 </span>
11119               <span class="entry_type_visibility"> [public as size]</span>
11120
11121
11122               <span class="entry_type_hwlevel">[legacy] </span>
11123
11124
11125
11126
11127             </td> <!-- entry_type -->
11128
11129             <td class="entry_description">
11130               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11131 camera device.<wbr/></p>
11132             </td>
11133
11134             <td class="entry_units">
11135             </td>
11136
11137             <td class="entry_range">
11138             </td>
11139
11140             <td class="entry_tags">
11141               <ul class="entry_tags">
11142                   <li><a href="#tag_BC">BC</a></li>
11143               </ul>
11144             </td>
11145
11146           </tr>
11147           <tr class="entries_header">
11148             <th class="th_details" colspan="5">Details</th>
11149           </tr>
11150           <tr class="entry_cont">
11151             <td class="entry_details" colspan="5">
11152               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11153 thumbnail should be generated.<wbr/></p>
11154 <p>Below condiditions will be satisfied for this size list:</p>
11155 <ul>
11156 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11157 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11158 <li>The aspect ratio of the largest thumbnail size will be same as the
11159 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/>
11160 The largest size is defined as the size that has the largest pixel area
11161 in a given size list.<wbr/></li>
11162 <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
11163 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11164 and vice versa.<wbr/></li>
11165 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11166 </ul>
11167             </td>
11168           </tr>
11169
11170
11171           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11172            <!-- end of entry -->
11173         
11174                 
11175           <tr class="entry" id="static_android.jpeg.maxSize">
11176             <td class="entry_name
11177              " rowspan="3">
11178               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11179             </td>
11180             <td class="entry_type">
11181                 <span class="entry_type_name">int32</span>
11182
11183               <span class="entry_type_visibility"> [system]</span>
11184
11185
11186
11187
11188
11189
11190             </td> <!-- entry_type -->
11191
11192             <td class="entry_description">
11193               <p>Maximum size in bytes for the compressed
11194 JPEG buffer</p>
11195             </td>
11196
11197             <td class="entry_units">
11198             </td>
11199
11200             <td class="entry_range">
11201               <p>Must be large enough to fit any JPEG produced by
11202 the camera</p>
11203             </td>
11204
11205             <td class="entry_tags">
11206             </td>
11207
11208           </tr>
11209           <tr class="entries_header">
11210             <th class="th_details" colspan="5">Details</th>
11211           </tr>
11212           <tr class="entry_cont">
11213             <td class="entry_details" colspan="5">
11214               <p>This is used for sizing the gralloc buffers for
11215 JPEG</p>
11216             </td>
11217           </tr>
11218
11219
11220           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11221            <!-- end of entry -->
11222         
11223         
11224
11225       <!-- end of kind -->
11226       </tbody>
11227       <tr><td colspan="6" class="kind">dynamic</td></tr>
11228
11229       <thead class="entries_header">
11230         <tr>
11231           <th class="th_name">Property Name</th>
11232           <th class="th_type">Type</th>
11233           <th class="th_description">Description</th>
11234           <th class="th_units">Units</th>
11235           <th class="th_range">Range</th>
11236           <th class="th_tags">Tags</th>
11237         </tr>
11238       </thead>
11239
11240       <tbody>
11241
11242         
11243
11244         
11245
11246         
11247
11248         
11249
11250                 
11251           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11252             <td class="entry_name
11253              " rowspan="3">
11254               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11255             </td>
11256             <td class="entry_type">
11257                 <span class="entry_type_name">byte</span>
11258
11259               <span class="entry_type_visibility"> [java_public as location]</span>
11260
11261               <span class="entry_type_synthetic">[synthetic] </span>
11262
11263               <span class="entry_type_hwlevel">[legacy] </span>
11264
11265
11266
11267
11268             </td> <!-- entry_type -->
11269
11270             <td class="entry_description">
11271               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11272             </td>
11273
11274             <td class="entry_units">
11275             </td>
11276
11277             <td class="entry_range">
11278             </td>
11279
11280             <td class="entry_tags">
11281             </td>
11282
11283           </tr>
11284           <tr class="entries_header">
11285             <th class="th_details" colspan="5">Details</th>
11286           </tr>
11287           <tr class="entry_cont">
11288             <td class="entry_details" colspan="5">
11289               <p>Setting a location object in a request will include the GPS coordinates of the location
11290 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11291 viewed by anyone who receives the JPEG image.<wbr/></p>
11292             </td>
11293           </tr>
11294
11295
11296           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11297            <!-- end of entry -->
11298         
11299                 
11300           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11301             <td class="entry_name
11302              " rowspan="1">
11303               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11304             </td>
11305             <td class="entry_type">
11306                 <span class="entry_type_name">double</span>
11307                 <span class="entry_type_container">x</span>
11308
11309                 <span class="entry_type_array">
11310                   3
11311                 </span>
11312               <span class="entry_type_visibility"> [ndk_public]</span>
11313
11314
11315               <span class="entry_type_hwlevel">[legacy] </span>
11316
11317
11318                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11319
11320
11321             </td> <!-- entry_type -->
11322
11323             <td class="entry_description">
11324               <p>GPS coordinates to include in output JPEG
11325 EXIF.<wbr/></p>
11326             </td>
11327
11328             <td class="entry_units">
11329             </td>
11330
11331             <td class="entry_range">
11332               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11333             </td>
11334
11335             <td class="entry_tags">
11336               <ul class="entry_tags">
11337                   <li><a href="#tag_BC">BC</a></li>
11338               </ul>
11339             </td>
11340
11341           </tr>
11342
11343
11344           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11345            <!-- end of entry -->
11346         
11347                 
11348           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11349             <td class="entry_name
11350              " rowspan="1">
11351               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11352             </td>
11353             <td class="entry_type">
11354                 <span class="entry_type_name">byte</span>
11355
11356               <span class="entry_type_visibility"> [ndk_public as string]</span>
11357
11358
11359               <span class="entry_type_hwlevel">[legacy] </span>
11360
11361
11362
11363
11364             </td> <!-- entry_type -->
11365
11366             <td class="entry_description">
11367               <p>32 characters describing GPS algorithm to
11368 include in EXIF.<wbr/></p>
11369             </td>
11370
11371             <td class="entry_units">
11372               UTF-8 null-terminated string
11373             </td>
11374
11375             <td class="entry_range">
11376             </td>
11377
11378             <td class="entry_tags">
11379               <ul class="entry_tags">
11380                   <li><a href="#tag_BC">BC</a></li>
11381               </ul>
11382             </td>
11383
11384           </tr>
11385
11386
11387           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11388            <!-- end of entry -->
11389         
11390                 
11391           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11392             <td class="entry_name
11393              " rowspan="1">
11394               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11395             </td>
11396             <td class="entry_type">
11397                 <span class="entry_type_name">int64</span>
11398
11399               <span class="entry_type_visibility"> [ndk_public]</span>
11400
11401
11402               <span class="entry_type_hwlevel">[legacy] </span>
11403
11404
11405
11406
11407             </td> <!-- entry_type -->
11408
11409             <td class="entry_description">
11410               <p>Time GPS fix was made to include in
11411 EXIF.<wbr/></p>
11412             </td>
11413
11414             <td class="entry_units">
11415               UTC in seconds since January 1,<wbr/> 1970
11416             </td>
11417
11418             <td class="entry_range">
11419             </td>
11420
11421             <td class="entry_tags">
11422               <ul class="entry_tags">
11423                   <li><a href="#tag_BC">BC</a></li>
11424               </ul>
11425             </td>
11426
11427           </tr>
11428
11429
11430           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11431            <!-- end of entry -->
11432         
11433                 
11434           <tr class="entry" id="dynamic_android.jpeg.orientation">
11435             <td class="entry_name
11436              " rowspan="3">
11437               android.<wbr/>jpeg.<wbr/>orientation
11438             </td>
11439             <td class="entry_type">
11440                 <span class="entry_type_name">int32</span>
11441
11442               <span class="entry_type_visibility"> [public]</span>
11443
11444
11445               <span class="entry_type_hwlevel">[legacy] </span>
11446
11447
11448
11449
11450             </td> <!-- entry_type -->
11451
11452             <td class="entry_description">
11453               <p>The orientation for a JPEG image.<wbr/></p>
11454             </td>
11455
11456             <td class="entry_units">
11457               Degrees in multiples of 90
11458             </td>
11459
11460             <td class="entry_range">
11461               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11462             </td>
11463
11464             <td class="entry_tags">
11465               <ul class="entry_tags">
11466                   <li><a href="#tag_BC">BC</a></li>
11467               </ul>
11468             </td>
11469
11470           </tr>
11471           <tr class="entries_header">
11472             <th class="th_details" colspan="5">Details</th>
11473           </tr>
11474           <tr class="entry_cont">
11475             <td class="entry_details" colspan="5">
11476               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11477 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11478 upright.<wbr/></p>
11479 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11480 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11481 the thumbnail data will also be rotated.<wbr/></p>
11482 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11483 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11484 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11485 sample code may be used:</p>
11486 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11487     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11488     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11489
11490     //<wbr/> Round device orientation to a multiple of 90
11491     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11492
11493     //<wbr/> Reverse device orientation for front-facing cameras
11494     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11495     if (facingFront) deviceOrientation = -deviceOrientation;
11496
11497     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11498     //<wbr/> the image upright relative to the device orientation
11499     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11500
11501     return jpegOrientation;
11502 }
11503 </code></pre>
11504             </td>
11505           </tr>
11506
11507
11508           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11509            <!-- end of entry -->
11510         
11511                 
11512           <tr class="entry" id="dynamic_android.jpeg.quality">
11513             <td class="entry_name
11514              " rowspan="3">
11515               android.<wbr/>jpeg.<wbr/>quality
11516             </td>
11517             <td class="entry_type">
11518                 <span class="entry_type_name">byte</span>
11519
11520               <span class="entry_type_visibility"> [public]</span>
11521
11522
11523               <span class="entry_type_hwlevel">[legacy] </span>
11524
11525
11526
11527
11528             </td> <!-- entry_type -->
11529
11530             <td class="entry_description">
11531               <p>Compression quality of the final JPEG
11532 image.<wbr/></p>
11533             </td>
11534
11535             <td class="entry_units">
11536             </td>
11537
11538             <td class="entry_range">
11539               <p>1-100; larger is higher quality</p>
11540             </td>
11541
11542             <td class="entry_tags">
11543               <ul class="entry_tags">
11544                   <li><a href="#tag_BC">BC</a></li>
11545               </ul>
11546             </td>
11547
11548           </tr>
11549           <tr class="entries_header">
11550             <th class="th_details" colspan="5">Details</th>
11551           </tr>
11552           <tr class="entry_cont">
11553             <td class="entry_details" colspan="5">
11554               <p>85-95 is typical usage range.<wbr/></p>
11555             </td>
11556           </tr>
11557
11558
11559           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11560            <!-- end of entry -->
11561         
11562                 
11563           <tr class="entry" id="dynamic_android.jpeg.size">
11564             <td class="entry_name
11565              " rowspan="3">
11566               android.<wbr/>jpeg.<wbr/>size
11567             </td>
11568             <td class="entry_type">
11569                 <span class="entry_type_name">int32</span>
11570
11571               <span class="entry_type_visibility"> [system]</span>
11572
11573
11574
11575
11576
11577
11578             </td> <!-- entry_type -->
11579
11580             <td class="entry_description">
11581               <p>The size of the compressed JPEG image,<wbr/> in
11582 bytes</p>
11583             </td>
11584
11585             <td class="entry_units">
11586             </td>
11587
11588             <td class="entry_range">
11589               <p>&gt;= 0</p>
11590             </td>
11591
11592             <td class="entry_tags">
11593               <ul class="entry_tags">
11594                   <li><a href="#tag_FUTURE">FUTURE</a></li>
11595               </ul>
11596             </td>
11597
11598           </tr>
11599           <tr class="entries_header">
11600             <th class="th_details" colspan="5">Details</th>
11601           </tr>
11602           <tr class="entry_cont">
11603             <td class="entry_details" colspan="5">
11604               <p>If no JPEG output is produced for the request,<wbr/>
11605 this must be 0.<wbr/></p>
11606 <p>Otherwise,<wbr/> this describes the real size of the compressed
11607 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11608 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11609 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11610 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11611 500000 make up the real data.<wbr/></p>
11612             </td>
11613           </tr>
11614
11615
11616           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11617            <!-- end of entry -->
11618         
11619                 
11620           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11621             <td class="entry_name
11622              " rowspan="1">
11623               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11624             </td>
11625             <td class="entry_type">
11626                 <span class="entry_type_name">byte</span>
11627
11628               <span class="entry_type_visibility"> [public]</span>
11629
11630
11631               <span class="entry_type_hwlevel">[legacy] </span>
11632
11633
11634
11635
11636             </td> <!-- entry_type -->
11637
11638             <td class="entry_description">
11639               <p>Compression quality of JPEG
11640 thumbnail.<wbr/></p>
11641             </td>
11642
11643             <td class="entry_units">
11644             </td>
11645
11646             <td class="entry_range">
11647               <p>1-100; larger is higher quality</p>
11648             </td>
11649
11650             <td class="entry_tags">
11651               <ul class="entry_tags">
11652                   <li><a href="#tag_BC">BC</a></li>
11653               </ul>
11654             </td>
11655
11656           </tr>
11657
11658
11659           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11660            <!-- end of entry -->
11661         
11662                 
11663           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11664             <td class="entry_name
11665              " rowspan="5">
11666               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11667             </td>
11668             <td class="entry_type">
11669                 <span class="entry_type_name">int32</span>
11670                 <span class="entry_type_container">x</span>
11671
11672                 <span class="entry_type_array">
11673                   2
11674                 </span>
11675               <span class="entry_type_visibility"> [public as size]</span>
11676
11677
11678               <span class="entry_type_hwlevel">[legacy] </span>
11679
11680
11681
11682
11683             </td> <!-- entry_type -->
11684
11685             <td class="entry_description">
11686               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11687             </td>
11688
11689             <td class="entry_units">
11690             </td>
11691
11692             <td class="entry_range">
11693               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11694             </td>
11695
11696             <td class="entry_tags">
11697               <ul class="entry_tags">
11698                   <li><a href="#tag_BC">BC</a></li>
11699               </ul>
11700             </td>
11701
11702           </tr>
11703           <tr class="entries_header">
11704             <th class="th_details" colspan="5">Details</th>
11705           </tr>
11706           <tr class="entry_cont">
11707             <td class="entry_details" colspan="5">
11708               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11709 but the captured JPEG will still be a valid image.<wbr/></p>
11710 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11711 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11712 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11713 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11714 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11715 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11716 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11717 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11718 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11719 the camera device will handle thumbnail rotation in one of the following ways:</p>
11720 <ul>
11721 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11722   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11723 <li>Rotate the jpeg and thumbnail image data and not set
11724   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11725   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11726   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11727   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11728   size.<wbr/></li>
11729 </ul>
11730             </td>
11731           </tr>
11732
11733           <tr class="entries_header">
11734             <th class="th_details" colspan="5">HAL Implementation Details</th>
11735           </tr>
11736           <tr class="entry_cont">
11737             <td class="entry_details" colspan="5">
11738               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11739 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11740 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11741 thumbnail image cropping.<wbr/></p>
11742             </td>
11743           </tr>
11744
11745           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11746            <!-- end of entry -->
11747         
11748         
11749
11750       <!-- end of kind -->
11751       </tbody>
11752
11753   <!-- end of section -->
11754   <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11755
11756
11757       <tr><td colspan="6" class="kind">controls</td></tr>
11758
11759       <thead class="entries_header">
11760         <tr>
11761           <th class="th_name">Property Name</th>
11762           <th class="th_type">Type</th>
11763           <th class="th_description">Description</th>
11764           <th class="th_units">Units</th>
11765           <th class="th_range">Range</th>
11766           <th class="th_tags">Tags</th>
11767         </tr>
11768       </thead>
11769
11770       <tbody>
11771
11772         
11773
11774         
11775
11776         
11777
11778         
11779
11780                 
11781           <tr class="entry" id="controls_android.lens.aperture">
11782             <td class="entry_name
11783              " rowspan="3">
11784               android.<wbr/>lens.<wbr/>aperture
11785             </td>
11786             <td class="entry_type">
11787                 <span class="entry_type_name">float</span>
11788
11789               <span class="entry_type_visibility"> [public]</span>
11790
11791
11792               <span class="entry_type_hwlevel">[full] </span>
11793
11794
11795
11796
11797             </td> <!-- entry_type -->
11798
11799             <td class="entry_description">
11800               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11801 effective aperture diameter.<wbr/></p>
11802             </td>
11803
11804             <td class="entry_units">
11805               The f-number (f/<wbr/>N)
11806             </td>
11807
11808             <td class="entry_range">
11809               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11810             </td>
11811
11812             <td class="entry_tags">
11813               <ul class="entry_tags">
11814                   <li><a href="#tag_V1">V1</a></li>
11815               </ul>
11816             </td>
11817
11818           </tr>
11819           <tr class="entries_header">
11820             <th class="th_details" colspan="5">Details</th>
11821           </tr>
11822           <tr class="entry_cont">
11823             <td class="entry_details" colspan="5">
11824               <p>Setting this value is only supported on the camera devices that have a variable
11825 aperture lens.<wbr/></p>
11826 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11827 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11828 <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>
11829 to achieve manual exposure control.<wbr/></p>
11830 <p>The requested aperture value may take several frames to reach the
11831 requested value; the camera device will report the current (intermediate)
11832 aperture size in capture result metadata while the aperture is changing.<wbr/>
11833 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>
11834 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11835 the ON modes,<wbr/> this will be overridden by the camera device
11836 auto-exposure algorithm,<wbr/> the overridden values are then provided
11837 back to the user in the corresponding result.<wbr/></p>
11838             </td>
11839           </tr>
11840
11841
11842           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11843            <!-- end of entry -->
11844         
11845                 
11846           <tr class="entry" id="controls_android.lens.filterDensity">
11847             <td class="entry_name
11848              " rowspan="3">
11849               android.<wbr/>lens.<wbr/>filter<wbr/>Density
11850             </td>
11851             <td class="entry_type">
11852                 <span class="entry_type_name">float</span>
11853
11854               <span class="entry_type_visibility"> [public]</span>
11855
11856
11857               <span class="entry_type_hwlevel">[full] </span>
11858
11859
11860
11861
11862             </td> <!-- entry_type -->
11863
11864             <td class="entry_description">
11865               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11866             </td>
11867
11868             <td class="entry_units">
11869               Exposure Value (EV)
11870             </td>
11871
11872             <td class="entry_range">
11873               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11874             </td>
11875
11876             <td class="entry_tags">
11877               <ul class="entry_tags">
11878                   <li><a href="#tag_V1">V1</a></li>
11879               </ul>
11880             </td>
11881
11882           </tr>
11883           <tr class="entries_header">
11884             <th class="th_details" colspan="5">Details</th>
11885           </tr>
11886           <tr class="entry_cont">
11887             <td class="entry_details" colspan="5">
11888               <p>This control will not be supported on most camera devices.<wbr/></p>
11889 <p>Lens filters are typically used to lower the amount of light the
11890 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11891 step is the standard logarithmic representation,<wbr/> which are
11892 non-negative,<wbr/> and inversely proportional to the amount of light
11893 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11894 in no reduction of the incoming light,<wbr/> and setting this to 2 would
11895 mean that the filter is set to reduce incoming light by two stops
11896 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11897 <p>It may take several frames before the lens filter density changes
11898 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11899 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11900             </td>
11901           </tr>
11902
11903
11904           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11905            <!-- end of entry -->
11906         
11907                 
11908           <tr class="entry" id="controls_android.lens.focalLength">
11909             <td class="entry_name
11910              " rowspan="3">
11911               android.<wbr/>lens.<wbr/>focal<wbr/>Length
11912             </td>
11913             <td class="entry_type">
11914                 <span class="entry_type_name">float</span>
11915
11916               <span class="entry_type_visibility"> [public]</span>
11917
11918
11919               <span class="entry_type_hwlevel">[legacy] </span>
11920
11921
11922
11923
11924             </td> <!-- entry_type -->
11925
11926             <td class="entry_description">
11927               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11928             </td>
11929
11930             <td class="entry_units">
11931               Millimeters
11932             </td>
11933
11934             <td class="entry_range">
11935               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11936             </td>
11937
11938             <td class="entry_tags">
11939               <ul class="entry_tags">
11940                   <li><a href="#tag_V1">V1</a></li>
11941               </ul>
11942             </td>
11943
11944           </tr>
11945           <tr class="entries_header">
11946             <th class="th_details" colspan="5">Details</th>
11947           </tr>
11948           <tr class="entry_cont">
11949             <td class="entry_details" colspan="5">
11950               <p>This setting controls the physical focal length of the camera
11951 device's lens.<wbr/> Changing the focal length changes the field of
11952 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11953 <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
11954 setting won't be applied instantaneously,<wbr/> and it may take several
11955 frames before the lens can change to the requested focal length.<wbr/>
11956 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11957 be set to MOVING.<wbr/></p>
11958 <p>Optical zoom will not be supported on most devices.<wbr/></p>
11959             </td>
11960           </tr>
11961
11962
11963           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11964            <!-- end of entry -->
11965         
11966                 
11967           <tr class="entry" id="controls_android.lens.focusDistance">
11968             <td class="entry_name
11969              " rowspan="3">
11970               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11971             </td>
11972             <td class="entry_type">
11973                 <span class="entry_type_name">float</span>
11974
11975               <span class="entry_type_visibility"> [public]</span>
11976
11977
11978               <span class="entry_type_hwlevel">[full] </span>
11979
11980
11981
11982
11983             </td> <!-- entry_type -->
11984
11985             <td class="entry_description">
11986               <p>Desired distance to plane of sharpest focus,<wbr/>
11987 measured from frontmost surface of the lens.<wbr/></p>
11988             </td>
11989
11990             <td class="entry_units">
11991               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11992             </td>
11993
11994             <td class="entry_range">
11995               <p>&gt;= 0</p>
11996             </td>
11997
11998             <td class="entry_tags">
11999               <ul class="entry_tags">
12000                   <li><a href="#tag_BC">BC</a></li>
12001                   <li><a href="#tag_V1">V1</a></li>
12002               </ul>
12003             </td>
12004
12005           </tr>
12006           <tr class="entries_header">
12007             <th class="th_details" colspan="5">Details</th>
12008           </tr>
12009           <tr class="entry_cont">
12010             <td class="entry_details" colspan="5">
12011               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12012 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12013 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12014 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12015 <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>
12016 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12017 instantaneously,<wbr/> and it may take several frames before the lens
12018 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12019 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12020 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12021 for infinity focus.<wbr/></p>
12022             </td>
12023           </tr>
12024
12025
12026           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12027            <!-- end of entry -->
12028         
12029                 
12030           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12031             <td class="entry_name
12032              " rowspan="3">
12033               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12034             </td>
12035             <td class="entry_type">
12036                 <span class="entry_type_name entry_type_name_enum">byte</span>
12037
12038               <span class="entry_type_visibility"> [public]</span>
12039
12040
12041               <span class="entry_type_hwlevel">[limited] </span>
12042
12043
12044
12045                 <ul class="entry_type_enum">
12046                   <li>
12047                     <span class="entry_type_enum_name">OFF</span>
12048                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12049                   </li>
12050                   <li>
12051                     <span class="entry_type_enum_name">ON</span>
12052                     <span class="entry_type_enum_optional">[optional]</span>
12053                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12054                   </li>
12055                 </ul>
12056
12057             </td> <!-- entry_type -->
12058
12059             <td class="entry_description">
12060               <p>Sets whether the camera device uses optical image stabilization (OIS)
12061 when capturing images.<wbr/></p>
12062             </td>
12063
12064             <td class="entry_units">
12065             </td>
12066
12067             <td class="entry_range">
12068               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12069             </td>
12070
12071             <td class="entry_tags">
12072               <ul class="entry_tags">
12073                   <li><a href="#tag_V1">V1</a></li>
12074               </ul>
12075             </td>
12076
12077           </tr>
12078           <tr class="entries_header">
12079             <th class="th_details" colspan="5">Details</th>
12080           </tr>
12081           <tr class="entry_cont">
12082             <td class="entry_details" colspan="5">
12083               <p>OIS is used to compensate for motion blur due to small
12084 movements of the camera during capture.<wbr/> Unlike digital image
12085 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12086 makes use of mechanical elements to stabilize the camera
12087 sensor,<wbr/> and thus allows for longer exposure times before
12088 camera shake becomes apparent.<wbr/></p>
12089 <p>Switching between different optical stabilization modes may take several
12090 frames to initialize,<wbr/> the camera device will report the current mode in
12091 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12092 optical stabilization modes in the first several capture results may still
12093 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12094 <p>If a camera device supports both OIS and digital image stabilization
12095 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12096 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12097 <p>Not all devices will support OIS; see
12098 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12099 available controls.<wbr/></p>
12100             </td>
12101           </tr>
12102
12103
12104           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12105            <!-- end of entry -->
12106         
12107         
12108
12109       <!-- end of kind -->
12110       </tbody>
12111       <tr><td colspan="6" class="kind">static</td></tr>
12112
12113       <thead class="entries_header">
12114         <tr>
12115           <th class="th_name">Property Name</th>
12116           <th class="th_type">Type</th>
12117           <th class="th_description">Description</th>
12118           <th class="th_units">Units</th>
12119           <th class="th_range">Range</th>
12120           <th class="th_tags">Tags</th>
12121         </tr>
12122       </thead>
12123
12124       <tbody>
12125
12126         
12127
12128         
12129
12130         
12131
12132         
12133                 
12134             
12135
12136                 
12137           <tr class="entry" id="static_android.lens.info.availableApertures">
12138             <td class="entry_name
12139              " rowspan="3">
12140               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12141             </td>
12142             <td class="entry_type">
12143                 <span class="entry_type_name">float</span>
12144                 <span class="entry_type_container">x</span>
12145
12146                 <span class="entry_type_array">
12147                   n
12148                 </span>
12149               <span class="entry_type_visibility"> [public]</span>
12150
12151
12152               <span class="entry_type_hwlevel">[full] </span>
12153
12154
12155
12156
12157             </td> <!-- entry_type -->
12158
12159             <td class="entry_description">
12160               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12161 supported by this camera device.<wbr/></p>
12162             </td>
12163
12164             <td class="entry_units">
12165               The aperture f-number
12166             </td>
12167
12168             <td class="entry_range">
12169             </td>
12170
12171             <td class="entry_tags">
12172               <ul class="entry_tags">
12173                   <li><a href="#tag_V1">V1</a></li>
12174               </ul>
12175             </td>
12176
12177           </tr>
12178           <tr class="entries_header">
12179             <th class="th_details" colspan="5">Details</th>
12180           </tr>
12181           <tr class="entry_cont">
12182             <td class="entry_details" colspan="5">
12183               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12184 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12185 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12186 in this list will be sorted in ascending order.<wbr/></p>
12187             </td>
12188           </tr>
12189
12190
12191           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12192            <!-- end of entry -->
12193         
12194                 
12195           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12196             <td class="entry_name
12197              " rowspan="3">
12198               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12199             </td>
12200             <td class="entry_type">
12201                 <span class="entry_type_name">float</span>
12202                 <span class="entry_type_container">x</span>
12203
12204                 <span class="entry_type_array">
12205                   n
12206                 </span>
12207               <span class="entry_type_visibility"> [public]</span>
12208
12209
12210               <span class="entry_type_hwlevel">[full] </span>
12211
12212
12213
12214
12215             </td> <!-- entry_type -->
12216
12217             <td class="entry_description">
12218               <p>List of neutral density filter values for
12219 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12220             </td>
12221
12222             <td class="entry_units">
12223               Exposure value (EV)
12224             </td>
12225
12226             <td class="entry_range">
12227               <p>Values are &gt;= 0</p>
12228             </td>
12229
12230             <td class="entry_tags">
12231               <ul class="entry_tags">
12232                   <li><a href="#tag_V1">V1</a></li>
12233               </ul>
12234             </td>
12235
12236           </tr>
12237           <tr class="entries_header">
12238             <th class="th_details" colspan="5">Details</th>
12239           </tr>
12240           <tr class="entry_cont">
12241             <td class="entry_details" colspan="5">
12242               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12243 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12244 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12245             </td>
12246           </tr>
12247
12248
12249           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12250            <!-- end of entry -->
12251         
12252                 
12253           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12254             <td class="entry_name
12255              " rowspan="3">
12256               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12257             </td>
12258             <td class="entry_type">
12259                 <span class="entry_type_name">float</span>
12260                 <span class="entry_type_container">x</span>
12261
12262                 <span class="entry_type_array">
12263                   n
12264                 </span>
12265               <span class="entry_type_visibility"> [public]</span>
12266
12267
12268               <span class="entry_type_hwlevel">[legacy] </span>
12269
12270
12271                 <div class="entry_type_notes">The list of available focal lengths</div>
12272
12273
12274             </td> <!-- entry_type -->
12275
12276             <td class="entry_description">
12277               <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
12278 device.<wbr/></p>
12279             </td>
12280
12281             <td class="entry_units">
12282               Millimeters
12283             </td>
12284
12285             <td class="entry_range">
12286               <p>Values are &gt; 0</p>
12287             </td>
12288
12289             <td class="entry_tags">
12290               <ul class="entry_tags">
12291                   <li><a href="#tag_BC">BC</a></li>
12292                   <li><a href="#tag_V1">V1</a></li>
12293               </ul>
12294             </td>
12295
12296           </tr>
12297           <tr class="entries_header">
12298             <th class="th_details" colspan="5">Details</th>
12299           </tr>
12300           <tr class="entry_cont">
12301             <td class="entry_details" colspan="5">
12302               <p>If optical zoom is not supported,<wbr/> this list will only contain
12303 a single value corresponding to the fixed focal length of the
12304 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12305 by the camera device,<wbr/> in ascending order.<wbr/></p>
12306             </td>
12307           </tr>
12308
12309
12310           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12311            <!-- end of entry -->
12312         
12313                 
12314           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12315             <td class="entry_name
12316              " rowspan="3">
12317               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12318             </td>
12319             <td class="entry_type">
12320                 <span class="entry_type_name">byte</span>
12321                 <span class="entry_type_container">x</span>
12322
12323                 <span class="entry_type_array">
12324                   n
12325                 </span>
12326               <span class="entry_type_visibility"> [public as enumList]</span>
12327
12328
12329               <span class="entry_type_hwlevel">[limited] </span>
12330
12331
12332                 <div class="entry_type_notes">list of enums</div>
12333
12334
12335             </td> <!-- entry_type -->
12336
12337             <td class="entry_description">
12338               <p>List of optical image stabilization (OIS) modes for
12339 <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>
12340             </td>
12341
12342             <td class="entry_units">
12343             </td>
12344
12345             <td class="entry_range">
12346               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12347             </td>
12348
12349             <td class="entry_tags">
12350               <ul class="entry_tags">
12351                   <li><a href="#tag_V1">V1</a></li>
12352               </ul>
12353             </td>
12354
12355           </tr>
12356           <tr class="entries_header">
12357             <th class="th_details" colspan="5">Details</th>
12358           </tr>
12359           <tr class="entry_cont">
12360             <td class="entry_details" colspan="5">
12361               <p>If OIS is not supported by a given camera device,<wbr/> this list will
12362 contain only OFF.<wbr/></p>
12363             </td>
12364           </tr>
12365
12366
12367           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12368            <!-- end of entry -->
12369         
12370                 
12371           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12372             <td class="entry_name
12373              " rowspan="3">
12374               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12375             </td>
12376             <td class="entry_type">
12377                 <span class="entry_type_name">float</span>
12378
12379               <span class="entry_type_visibility"> [public]</span>
12380
12381
12382               <span class="entry_type_hwlevel">[limited] </span>
12383
12384
12385
12386
12387             </td> <!-- entry_type -->
12388
12389             <td class="entry_description">
12390               <p>Hyperfocal distance for this lens.<wbr/></p>
12391             </td>
12392
12393             <td class="entry_units">
12394               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12395             </td>
12396
12397             <td class="entry_range">
12398               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12399 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>
12400             </td>
12401
12402             <td class="entry_tags">
12403             </td>
12404
12405           </tr>
12406           <tr class="entries_header">
12407             <th class="th_details" colspan="5">Details</th>
12408           </tr>
12409           <tr class="entry_cont">
12410             <td class="entry_details" colspan="5">
12411               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12412 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>
12413             </td>
12414           </tr>
12415
12416
12417           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12418            <!-- end of entry -->
12419         
12420                 
12421           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
12422             <td class="entry_name
12423              " rowspan="5">
12424               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
12425             </td>
12426             <td class="entry_type">
12427                 <span class="entry_type_name">float</span>
12428
12429               <span class="entry_type_visibility"> [public]</span>
12430
12431
12432               <span class="entry_type_hwlevel">[limited] </span>
12433
12434
12435
12436
12437             </td> <!-- entry_type -->
12438
12439             <td class="entry_description">
12440               <p>Shortest distance from frontmost surface
12441 of the lens that can be brought into sharp focus.<wbr/></p>
12442             </td>
12443
12444             <td class="entry_units">
12445               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12446             </td>
12447
12448             <td class="entry_range">
12449               <p>&gt;= 0</p>
12450             </td>
12451
12452             <td class="entry_tags">
12453               <ul class="entry_tags">
12454                   <li><a href="#tag_V1">V1</a></li>
12455               </ul>
12456             </td>
12457
12458           </tr>
12459           <tr class="entries_header">
12460             <th class="th_details" colspan="5">Details</th>
12461           </tr>
12462           <tr class="entry_cont">
12463             <td class="entry_details" colspan="5">
12464               <p>If the lens is fixed-focus,<wbr/> this will be
12465 0.<wbr/></p>
12466             </td>
12467           </tr>
12468
12469           <tr class="entries_header">
12470             <th class="th_details" colspan="5">HAL Implementation Details</th>
12471           </tr>
12472           <tr class="entry_cont">
12473             <td class="entry_details" colspan="5">
12474               <p>Mandatory for FULL devices; LIMITED devices
12475 must always set this value to 0 for fixed-focus; and may omit
12476 the minimum focus distance otherwise.<wbr/></p>
12477 <p>This field is also mandatory for all devices advertising
12478 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12479             </td>
12480           </tr>
12481
12482           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12483            <!-- end of entry -->
12484         
12485                 
12486           <tr class="entry" id="static_android.lens.info.shadingMapSize">
12487             <td class="entry_name
12488              " rowspan="3">
12489               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12490             </td>
12491             <td class="entry_type">
12492                 <span class="entry_type_name">int32</span>
12493                 <span class="entry_type_container">x</span>
12494
12495                 <span class="entry_type_array">
12496                   2
12497                 </span>
12498               <span class="entry_type_visibility"> [ndk_public as size]</span>
12499
12500
12501               <span class="entry_type_hwlevel">[full] </span>
12502
12503
12504                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12505
12506
12507             </td> <!-- entry_type -->
12508
12509             <td class="entry_description">
12510               <p>Dimensions of lens shading map.<wbr/></p>
12511             </td>
12512
12513             <td class="entry_units">
12514             </td>
12515
12516             <td class="entry_range">
12517               <p>Both values &gt;= 1</p>
12518             </td>
12519
12520             <td class="entry_tags">
12521               <ul class="entry_tags">
12522                   <li><a href="#tag_V1">V1</a></li>
12523               </ul>
12524             </td>
12525
12526           </tr>
12527           <tr class="entries_header">
12528             <th class="th_details" colspan="5">Details</th>
12529           </tr>
12530           <tr class="entry_cont">
12531             <td class="entry_details" colspan="5">
12532               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12533 must be smaller than 64x64.<wbr/></p>
12534             </td>
12535           </tr>
12536
12537
12538           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12539            <!-- end of entry -->
12540         
12541                 
12542           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12543             <td class="entry_name
12544              " rowspan="5">
12545               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12546             </td>
12547             <td class="entry_type">
12548                 <span class="entry_type_name entry_type_name_enum">byte</span>
12549
12550               <span class="entry_type_visibility"> [public]</span>
12551
12552
12553               <span class="entry_type_hwlevel">[limited] </span>
12554
12555
12556
12557                 <ul class="entry_type_enum">
12558                   <li>
12559                     <span class="entry_type_enum_name">UNCALIBRATED</span>
12560                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12561 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12562 <p>Setting the lens to the same focus distance on separate occasions may
12563 result in a different real focus distance,<wbr/> depending on factors such
12564 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12565 and the device temperature.<wbr/> The focus distance value will still be
12566 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
12567 represents the farthest focus.<wbr/></p></span>
12568                   </li>
12569                   <li>
12570                     <span class="entry_type_enum_name">APPROXIMATE</span>
12571                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12572 <p>However,<wbr/> setting the lens to the same focus distance
12573 on separate occasions may result in a different real
12574 focus distance,<wbr/> depending on factors such as the
12575 orientation of the device,<wbr/> the age of the focusing
12576 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12577                   </li>
12578                   <li>
12579                     <span class="entry_type_enum_name">CALIBRATED</span>
12580                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12581 is calibrated.<wbr/></p>
12582 <p>The lens mechanism is calibrated so that setting the
12583 same focus distance is repeatable on multiple
12584 occasions with good accuracy,<wbr/> and the focus distance
12585 corresponds to the real physical distance to the plane
12586 of best focus.<wbr/></p></span>
12587                   </li>
12588                 </ul>
12589
12590             </td> <!-- entry_type -->
12591
12592             <td class="entry_description">
12593               <p>The lens focus distance calibration quality.<wbr/></p>
12594             </td>
12595
12596             <td class="entry_units">
12597             </td>
12598
12599             <td class="entry_range">
12600             </td>
12601
12602             <td class="entry_tags">
12603               <ul class="entry_tags">
12604                   <li><a href="#tag_V1">V1</a></li>
12605               </ul>
12606             </td>
12607
12608           </tr>
12609           <tr class="entries_header">
12610             <th class="th_details" colspan="5">Details</th>
12611           </tr>
12612           <tr class="entry_cont">
12613             <td class="entry_details" colspan="5">
12614               <p>The lens focus distance calibration quality determines the reliability of
12615 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12616 <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
12617 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12618 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12619 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12620 and increasing positive numbers represent focusing closer and closer
12621 to the camera device.<wbr/> The focus distance control also uses diopters
12622 on these devices.<wbr/></p>
12623 <p>UNCALIBRATED devices do not use units that are directly comparable
12624 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12625 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12626 nearest focus the device can achieve.<wbr/></p>
12627             </td>
12628           </tr>
12629
12630           <tr class="entries_header">
12631             <th class="th_details" colspan="5">HAL Implementation Details</th>
12632           </tr>
12633           <tr class="entry_cont">
12634             <td class="entry_details" colspan="5">
12635               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12636 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12637 and the lens focus distance is set to 0 diopters
12638 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12639 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12640 lens some time to move; during the move the lens state should be MOVING and
12641 the output diopter value should be changing toward 0.<wbr/></p>
12642             </td>
12643           </tr>
12644
12645           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12646            <!-- end of entry -->
12647         
12648         
12649         
12650
12651                 
12652           <tr class="entry" id="static_android.lens.facing">
12653             <td class="entry_name
12654              " rowspan="1">
12655               android.<wbr/>lens.<wbr/>facing
12656             </td>
12657             <td class="entry_type">
12658                 <span class="entry_type_name entry_type_name_enum">byte</span>
12659
12660               <span class="entry_type_visibility"> [public]</span>
12661
12662
12663               <span class="entry_type_hwlevel">[legacy] </span>
12664
12665
12666
12667                 <ul class="entry_type_enum">
12668                   <li>
12669                     <span class="entry_type_enum_name">FRONT</span>
12670                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12671                   </li>
12672                   <li>
12673                     <span class="entry_type_enum_name">BACK</span>
12674                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12675                   </li>
12676                   <li>
12677                     <span class="entry_type_enum_name">EXTERNAL</span>
12678                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12679 device's screen.<wbr/></p></span>
12680                   </li>
12681                 </ul>
12682
12683             </td> <!-- entry_type -->
12684
12685             <td class="entry_description">
12686               <p>Direction the camera faces relative to
12687 device screen.<wbr/></p>
12688             </td>
12689
12690             <td class="entry_units">
12691             </td>
12692
12693             <td class="entry_range">
12694             </td>
12695
12696             <td class="entry_tags">
12697             </td>
12698
12699           </tr>
12700
12701
12702           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12703            <!-- end of entry -->
12704         
12705                 
12706           <tr class="entry" id="static_android.lens.poseRotation">
12707             <td class="entry_name
12708              " rowspan="3">
12709               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12710             </td>
12711             <td class="entry_type">
12712                 <span class="entry_type_name">float</span>
12713                 <span class="entry_type_container">x</span>
12714
12715                 <span class="entry_type_array">
12716                   4
12717                 </span>
12718               <span class="entry_type_visibility"> [public]</span>
12719
12720
12721
12722
12723
12724
12725             </td> <!-- entry_type -->
12726
12727             <td class="entry_description">
12728               <p>The orientation of the camera relative to the sensor
12729 coordinate system.<wbr/></p>
12730             </td>
12731
12732             <td class="entry_units">
12733               
12734             Quaternion coefficients
12735           
12736             </td>
12737
12738             <td class="entry_range">
12739             </td>
12740
12741             <td class="entry_tags">
12742               <ul class="entry_tags">
12743                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12744               </ul>
12745             </td>
12746
12747           </tr>
12748           <tr class="entries_header">
12749             <th class="th_details" colspan="5">Details</th>
12750           </tr>
12751           <tr class="entry_cont">
12752             <td class="entry_details" colspan="5">
12753               <p>The four coefficients that describe the quaternion
12754 rotation from the Android sensor coordinate system to a
12755 camera-aligned coordinate system where the X-axis is
12756 aligned with the long side of the image sensor,<wbr/> the Y-axis
12757 is aligned with the short side of the image sensor,<wbr/> and
12758 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12759 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12760 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12761 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12762 <pre><code> theta = 2 * acos(w)
12763 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12764 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12765 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12766 </code></pre>
12767 <p>To create a 3x3 rotation matrix that applies the rotation
12768 defined by this quaternion,<wbr/> the following matrix can be
12769 used:</p>
12770 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12771            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12772            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12773 </code></pre>
12774 <p>This matrix can then be used to apply the rotation to a
12775  column vector point with</p>
12776 <p><code>p' = Rp</code></p>
12777 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12778  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12779             </td>
12780           </tr>
12781
12782
12783           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12784            <!-- end of entry -->
12785         
12786                 
12787           <tr class="entry" id="static_android.lens.poseTranslation">
12788             <td class="entry_name
12789              " rowspan="3">
12790               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12791             </td>
12792             <td class="entry_type">
12793                 <span class="entry_type_name">float</span>
12794                 <span class="entry_type_container">x</span>
12795
12796                 <span class="entry_type_array">
12797                   3
12798                 </span>
12799               <span class="entry_type_visibility"> [public]</span>
12800
12801
12802
12803
12804
12805
12806             </td> <!-- entry_type -->
12807
12808             <td class="entry_description">
12809               <p>Position of the camera optical center.<wbr/></p>
12810             </td>
12811
12812             <td class="entry_units">
12813               Meters
12814             </td>
12815
12816             <td class="entry_range">
12817             </td>
12818
12819             <td class="entry_tags">
12820               <ul class="entry_tags">
12821                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12822               </ul>
12823             </td>
12824
12825           </tr>
12826           <tr class="entries_header">
12827             <th class="th_details" colspan="5">Details</th>
12828           </tr>
12829           <tr class="entry_cont">
12830             <td class="entry_details" colspan="5">
12831               <p>The position of the camera device's lens optical center,<wbr/>
12832 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12833 optical center of the largest camera device facing in the
12834 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12835 axes</a>.<wbr/> Note that only the axis definitions are shared with
12836 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12837 <p>If this device is the largest or only camera device with a
12838 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12839 camera device with a lens optical center located 3 cm from
12840 the main sensor along the +X axis (to the right from the
12841 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12842 <p>To transform a pixel coordinates between two cameras
12843 facing the same direction,<wbr/> first the source camera
12844 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12845 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12846 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12847 of the source camera,<wbr/> the translation of the source camera
12848 relative to the destination camera,<wbr/> the
12849 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12850 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12851 of the destination camera.<wbr/> This obtains a
12852 radial-distortion-free coordinate in the destination
12853 camera pixel coordinates.<wbr/></p>
12854 <p>To compare this against a real image from the destination
12855 camera,<wbr/> the destination camera image then needs to be
12856 corrected for radial distortion before comparison or
12857 sampling.<wbr/></p>
12858             </td>
12859           </tr>
12860
12861
12862           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12863            <!-- end of entry -->
12864         
12865                 
12866           <tr class="entry" id="static_android.lens.intrinsicCalibration">
12867             <td class="entry_name
12868              " rowspan="3">
12869               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12870             </td>
12871             <td class="entry_type">
12872                 <span class="entry_type_name">float</span>
12873                 <span class="entry_type_container">x</span>
12874
12875                 <span class="entry_type_array">
12876                   5
12877                 </span>
12878               <span class="entry_type_visibility"> [public]</span>
12879
12880
12881
12882
12883
12884
12885             </td> <!-- entry_type -->
12886
12887             <td class="entry_description">
12888               <p>The parameters for this camera device's intrinsic
12889 calibration.<wbr/></p>
12890             </td>
12891
12892             <td class="entry_units">
12893               
12894             Pixels in the
12895             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12896             coordinate system.<wbr/>
12897           
12898             </td>
12899
12900             <td class="entry_range">
12901             </td>
12902
12903             <td class="entry_tags">
12904               <ul class="entry_tags">
12905                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12906               </ul>
12907             </td>
12908
12909           </tr>
12910           <tr class="entries_header">
12911             <th class="th_details" colspan="5">Details</th>
12912           </tr>
12913           <tr class="entry_cont">
12914             <td class="entry_details" colspan="5">
12915               <p>The five calibration parameters that describe the
12916 transform from camera-centric 3D coordinates to sensor
12917 pixel coordinates:</p>
12918 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12919 </code></pre>
12920 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12921 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12922 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12923 being aligned with the lens plane.<wbr/></p>
12924 <p>These are typically used within a transformation matrix K:</p>
12925 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12926        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12927        0    0,<wbr/>   1 ]
12928 </code></pre>
12929 <p>which can then be combined with the camera pose rotation
12930 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12931 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12932 complete transform from world coordinates to pixel
12933 coordinates:</p>
12934 <pre><code>P = [ K 0   * [ R t
12935      0 1 ]     0 1 ]
12936 </code></pre>
12937 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12938 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12939 coordinate system,<wbr/> and with the mapping including the
12940 homogeneous division by z:</p>
12941 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12942 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12943 </code></pre>
12944 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12945 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12946 (depth) in pixel coordinates.<wbr/></p>
12947 <p>Note that the coordinate system for this transform is the
12948 <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/>
12949 where <code>(0,<wbr/>0)</code> is the top-left of the
12950 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12951 intrinsic calibration transforms have been applied to a
12952 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12953 transform needs to be applied,<wbr/> and the result adjusted to
12954 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12955 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12956 activeArraySize rectangle),<wbr/> to determine the final pixel
12957 coordinate of the world point for processed (non-RAW)
12958 output buffers.<wbr/></p>
12959             </td>
12960           </tr>
12961
12962
12963           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12964            <!-- end of entry -->
12965         
12966                 
12967           <tr class="entry" id="static_android.lens.radialDistortion">
12968             <td class="entry_name
12969              " rowspan="3">
12970               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12971             </td>
12972             <td class="entry_type">
12973                 <span class="entry_type_name">float</span>
12974                 <span class="entry_type_container">x</span>
12975
12976                 <span class="entry_type_array">
12977                   6
12978                 </span>
12979               <span class="entry_type_visibility"> [public]</span>
12980
12981
12982
12983
12984
12985
12986             </td> <!-- entry_type -->
12987
12988             <td class="entry_description">
12989               <p>The correction coefficients to correct for this camera device's
12990 radial and tangential lens distortion.<wbr/></p>
12991             </td>
12992
12993             <td class="entry_units">
12994               
12995             Unitless coefficients.<wbr/>
12996           
12997             </td>
12998
12999             <td class="entry_range">
13000             </td>
13001
13002             <td class="entry_tags">
13003               <ul class="entry_tags">
13004                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13005               </ul>
13006             </td>
13007
13008           </tr>
13009           <tr class="entries_header">
13010             <th class="th_details" colspan="5">Details</th>
13011           </tr>
13012           <tr class="entry_cont">
13013             <td class="entry_details" colspan="5">
13014               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13015 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13016 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13017 lens's geometric distortion with the mapping equations:</p>
13018 <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 ) +
13019        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13020  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13021        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13022 </code></pre>
13023 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13024 input image that correspond to the pixel values in the
13025 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13026 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13027 </code></pre>
13028 <p>The pixel coordinates are defined in a normalized
13029 coordinate system related to the
13030 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13031 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
13032 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13033 of both x and y coordinates are normalized to be 1 at the
13034 edge further from the optical center,<wbr/> so the range
13035 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13036 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13037 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13038 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13039 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13040             </td>
13041           </tr>
13042
13043
13044           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13045            <!-- end of entry -->
13046         
13047         
13048
13049       <!-- end of kind -->
13050       </tbody>
13051       <tr><td colspan="6" class="kind">dynamic</td></tr>
13052
13053       <thead class="entries_header">
13054         <tr>
13055           <th class="th_name">Property Name</th>
13056           <th class="th_type">Type</th>
13057           <th class="th_description">Description</th>
13058           <th class="th_units">Units</th>
13059           <th class="th_range">Range</th>
13060           <th class="th_tags">Tags</th>
13061         </tr>
13062       </thead>
13063
13064       <tbody>
13065
13066         
13067
13068         
13069
13070         
13071
13072         
13073
13074                 
13075           <tr class="entry" id="dynamic_android.lens.aperture">
13076             <td class="entry_name
13077              " rowspan="3">
13078               android.<wbr/>lens.<wbr/>aperture
13079             </td>
13080             <td class="entry_type">
13081                 <span class="entry_type_name">float</span>
13082
13083               <span class="entry_type_visibility"> [public]</span>
13084
13085
13086               <span class="entry_type_hwlevel">[full] </span>
13087
13088
13089
13090
13091             </td> <!-- entry_type -->
13092
13093             <td class="entry_description">
13094               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13095 effective aperture diameter.<wbr/></p>
13096             </td>
13097
13098             <td class="entry_units">
13099               The f-number (f/<wbr/>N)
13100             </td>
13101
13102             <td class="entry_range">
13103               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13104             </td>
13105
13106             <td class="entry_tags">
13107               <ul class="entry_tags">
13108                   <li><a href="#tag_V1">V1</a></li>
13109               </ul>
13110             </td>
13111
13112           </tr>
13113           <tr class="entries_header">
13114             <th class="th_details" colspan="5">Details</th>
13115           </tr>
13116           <tr class="entry_cont">
13117             <td class="entry_details" colspan="5">
13118               <p>Setting this value is only supported on the camera devices that have a variable
13119 aperture lens.<wbr/></p>
13120 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13121 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13122 <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>
13123 to achieve manual exposure control.<wbr/></p>
13124 <p>The requested aperture value may take several frames to reach the
13125 requested value; the camera device will report the current (intermediate)
13126 aperture size in capture result metadata while the aperture is changing.<wbr/>
13127 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>
13128 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13129 the ON modes,<wbr/> this will be overridden by the camera device
13130 auto-exposure algorithm,<wbr/> the overridden values are then provided
13131 back to the user in the corresponding result.<wbr/></p>
13132             </td>
13133           </tr>
13134
13135
13136           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13137            <!-- end of entry -->
13138         
13139                 
13140           <tr class="entry" id="dynamic_android.lens.filterDensity">
13141             <td class="entry_name
13142              " rowspan="3">
13143               android.<wbr/>lens.<wbr/>filter<wbr/>Density
13144             </td>
13145             <td class="entry_type">
13146                 <span class="entry_type_name">float</span>
13147
13148               <span class="entry_type_visibility"> [public]</span>
13149
13150
13151               <span class="entry_type_hwlevel">[full] </span>
13152
13153
13154
13155
13156             </td> <!-- entry_type -->
13157
13158             <td class="entry_description">
13159               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13160             </td>
13161
13162             <td class="entry_units">
13163               Exposure Value (EV)
13164             </td>
13165
13166             <td class="entry_range">
13167               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13168             </td>
13169
13170             <td class="entry_tags">
13171               <ul class="entry_tags">
13172                   <li><a href="#tag_V1">V1</a></li>
13173               </ul>
13174             </td>
13175
13176           </tr>
13177           <tr class="entries_header">
13178             <th class="th_details" colspan="5">Details</th>
13179           </tr>
13180           <tr class="entry_cont">
13181             <td class="entry_details" colspan="5">
13182               <p>This control will not be supported on most camera devices.<wbr/></p>
13183 <p>Lens filters are typically used to lower the amount of light the
13184 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13185 step is the standard logarithmic representation,<wbr/> which are
13186 non-negative,<wbr/> and inversely proportional to the amount of light
13187 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13188 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13189 mean that the filter is set to reduce incoming light by two stops
13190 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13191 <p>It may take several frames before the lens filter density changes
13192 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13193 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13194             </td>
13195           </tr>
13196
13197
13198           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13199            <!-- end of entry -->
13200         
13201                 
13202           <tr class="entry" id="dynamic_android.lens.focalLength">
13203             <td class="entry_name
13204              " rowspan="3">
13205               android.<wbr/>lens.<wbr/>focal<wbr/>Length
13206             </td>
13207             <td class="entry_type">
13208                 <span class="entry_type_name">float</span>
13209
13210               <span class="entry_type_visibility"> [public]</span>
13211
13212
13213               <span class="entry_type_hwlevel">[legacy] </span>
13214
13215
13216
13217
13218             </td> <!-- entry_type -->
13219
13220             <td class="entry_description">
13221               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13222             </td>
13223
13224             <td class="entry_units">
13225               Millimeters
13226             </td>
13227
13228             <td class="entry_range">
13229               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13230             </td>
13231
13232             <td class="entry_tags">
13233               <ul class="entry_tags">
13234                   <li><a href="#tag_BC">BC</a></li>
13235               </ul>
13236             </td>
13237
13238           </tr>
13239           <tr class="entries_header">
13240             <th class="th_details" colspan="5">Details</th>
13241           </tr>
13242           <tr class="entry_cont">
13243             <td class="entry_details" colspan="5">
13244               <p>This setting controls the physical focal length of the camera
13245 device's lens.<wbr/> Changing the focal length changes the field of
13246 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13247 <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
13248 setting won't be applied instantaneously,<wbr/> and it may take several
13249 frames before the lens can change to the requested focal length.<wbr/>
13250 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13251 be set to MOVING.<wbr/></p>
13252 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13253             </td>
13254           </tr>
13255
13256
13257           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13258            <!-- end of entry -->
13259         
13260                 
13261           <tr class="entry" id="dynamic_android.lens.focusDistance">
13262             <td class="entry_name
13263              " rowspan="3">
13264               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13265             </td>
13266             <td class="entry_type">
13267                 <span class="entry_type_name">float</span>
13268
13269               <span class="entry_type_visibility"> [public]</span>
13270
13271
13272               <span class="entry_type_hwlevel">[full] </span>
13273
13274
13275
13276
13277             </td> <!-- entry_type -->
13278
13279             <td class="entry_description">
13280               <p>Desired distance to plane of sharpest focus,<wbr/>
13281 measured from frontmost surface of the lens.<wbr/></p>
13282             </td>
13283
13284             <td class="entry_units">
13285               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13286             </td>
13287
13288             <td class="entry_range">
13289               <p>&gt;= 0</p>
13290             </td>
13291
13292             <td class="entry_tags">
13293               <ul class="entry_tags">
13294                   <li><a href="#tag_BC">BC</a></li>
13295               </ul>
13296             </td>
13297
13298           </tr>
13299           <tr class="entries_header">
13300             <th class="th_details" colspan="5">Details</th>
13301           </tr>
13302           <tr class="entry_cont">
13303             <td class="entry_details" colspan="5">
13304               <p>Should be zero for fixed-focus cameras</p>
13305             </td>
13306           </tr>
13307
13308
13309           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13310            <!-- end of entry -->
13311         
13312                 
13313           <tr class="entry" id="dynamic_android.lens.focusRange">
13314             <td class="entry_name
13315              " rowspan="3">
13316               android.<wbr/>lens.<wbr/>focus<wbr/>Range
13317             </td>
13318             <td class="entry_type">
13319                 <span class="entry_type_name">float</span>
13320                 <span class="entry_type_container">x</span>
13321
13322                 <span class="entry_type_array">
13323                   2
13324                 </span>
13325               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13326
13327
13328               <span class="entry_type_hwlevel">[limited] </span>
13329
13330
13331                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13332
13333
13334             </td> <!-- entry_type -->
13335
13336             <td class="entry_description">
13337               <p>The range of scene distances that are in
13338 sharp focus (depth of field).<wbr/></p>
13339             </td>
13340
13341             <td class="entry_units">
13342               A pair of focus distances in diopters: (near,<wbr/>
13343           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13344             </td>
13345
13346             <td class="entry_range">
13347               <p>&gt;=0</p>
13348             </td>
13349
13350             <td class="entry_tags">
13351               <ul class="entry_tags">
13352                   <li><a href="#tag_BC">BC</a></li>
13353               </ul>
13354             </td>
13355
13356           </tr>
13357           <tr class="entries_header">
13358             <th class="th_details" colspan="5">Details</th>
13359           </tr>
13360           <tr class="entry_cont">
13361             <td class="entry_details" colspan="5">
13362               <p>If variable focus not supported,<wbr/> can still report
13363 fixed depth of field range</p>
13364             </td>
13365           </tr>
13366
13367
13368           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13369            <!-- end of entry -->
13370         
13371                 
13372           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
13373             <td class="entry_name
13374              " rowspan="3">
13375               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
13376             </td>
13377             <td class="entry_type">
13378                 <span class="entry_type_name entry_type_name_enum">byte</span>
13379
13380               <span class="entry_type_visibility"> [public]</span>
13381
13382
13383               <span class="entry_type_hwlevel">[limited] </span>
13384
13385
13386
13387                 <ul class="entry_type_enum">
13388                   <li>
13389                     <span class="entry_type_enum_name">OFF</span>
13390                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
13391                   </li>
13392                   <li>
13393                     <span class="entry_type_enum_name">ON</span>
13394                     <span class="entry_type_enum_optional">[optional]</span>
13395                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
13396                   </li>
13397                 </ul>
13398
13399             </td> <!-- entry_type -->
13400
13401             <td class="entry_description">
13402               <p>Sets whether the camera device uses optical image stabilization (OIS)
13403 when capturing images.<wbr/></p>
13404             </td>
13405
13406             <td class="entry_units">
13407             </td>
13408
13409             <td class="entry_range">
13410               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
13411             </td>
13412
13413             <td class="entry_tags">
13414               <ul class="entry_tags">
13415                   <li><a href="#tag_V1">V1</a></li>
13416               </ul>
13417             </td>
13418
13419           </tr>
13420           <tr class="entries_header">
13421             <th class="th_details" colspan="5">Details</th>
13422           </tr>
13423           <tr class="entry_cont">
13424             <td class="entry_details" colspan="5">
13425               <p>OIS is used to compensate for motion blur due to small
13426 movements of the camera during capture.<wbr/> Unlike digital image
13427 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
13428 makes use of mechanical elements to stabilize the camera
13429 sensor,<wbr/> and thus allows for longer exposure times before
13430 camera shake becomes apparent.<wbr/></p>
13431 <p>Switching between different optical stabilization modes may take several
13432 frames to initialize,<wbr/> the camera device will report the current mode in
13433 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
13434 optical stabilization modes in the first several capture results may still
13435 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13436 <p>If a camera device supports both OIS and digital image stabilization
13437 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13438 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13439 <p>Not all devices will support OIS; see
13440 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13441 available controls.<wbr/></p>
13442             </td>
13443           </tr>
13444
13445
13446           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13447            <!-- end of entry -->
13448         
13449                 
13450           <tr class="entry" id="dynamic_android.lens.state">
13451             <td class="entry_name
13452              " rowspan="3">
13453               android.<wbr/>lens.<wbr/>state
13454             </td>
13455             <td class="entry_type">
13456                 <span class="entry_type_name entry_type_name_enum">byte</span>
13457
13458               <span class="entry_type_visibility"> [public]</span>
13459
13460
13461               <span class="entry_type_hwlevel">[limited] </span>
13462
13463
13464
13465                 <ul class="entry_type_enum">
13466                   <li>
13467                     <span class="entry_type_enum_name">STATIONARY</span>
13468                     <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/>
13469 <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>
13470                   </li>
13471                   <li>
13472                     <span class="entry_type_enum_name">MOVING</span>
13473                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13474 (<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/>
13475 <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
13476 currently changing.<wbr/></p></span>
13477                   </li>
13478                 </ul>
13479
13480             </td> <!-- entry_type -->
13481
13482             <td class="entry_description">
13483               <p>Current lens status.<wbr/></p>
13484             </td>
13485
13486             <td class="entry_units">
13487             </td>
13488
13489             <td class="entry_range">
13490             </td>
13491
13492             <td class="entry_tags">
13493               <ul class="entry_tags">
13494                   <li><a href="#tag_V1">V1</a></li>
13495               </ul>
13496             </td>
13497
13498           </tr>
13499           <tr class="entries_header">
13500             <th class="th_details" colspan="5">Details</th>
13501           </tr>
13502           <tr class="entry_cont">
13503             <td class="entry_details" colspan="5">
13504               <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/>
13505 <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/>
13506 they may take several frames to reach the requested values.<wbr/> This state indicates
13507 the current status of the lens parameters.<wbr/></p>
13508 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13509 either because the parameters are all fixed,<wbr/> or because the lens has had enough
13510 time to reach the most recently-requested values.<wbr/>
13511 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13512 <ul>
13513 <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
13514 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13515 <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/>
13516 which means the optical zoom is not supported.<wbr/></li>
13517 <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>
13518 <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>
13519 </ul>
13520 <p>Then this state will always be STATIONARY.<wbr/></p>
13521 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13522 is changing.<wbr/></p>
13523             </td>
13524           </tr>
13525
13526
13527           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13528            <!-- end of entry -->
13529         
13530                 
13531           <tr class="entry" id="dynamic_android.lens.poseRotation">
13532             <td class="entry_name
13533              " rowspan="3">
13534               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13535             </td>
13536             <td class="entry_type">
13537                 <span class="entry_type_name">float</span>
13538                 <span class="entry_type_container">x</span>
13539
13540                 <span class="entry_type_array">
13541                   4
13542                 </span>
13543               <span class="entry_type_visibility"> [public]</span>
13544
13545
13546
13547
13548
13549
13550             </td> <!-- entry_type -->
13551
13552             <td class="entry_description">
13553               <p>The orientation of the camera relative to the sensor
13554 coordinate system.<wbr/></p>
13555             </td>
13556
13557             <td class="entry_units">
13558               
13559             Quaternion coefficients
13560           
13561             </td>
13562
13563             <td class="entry_range">
13564             </td>
13565
13566             <td class="entry_tags">
13567               <ul class="entry_tags">
13568                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13569               </ul>
13570             </td>
13571
13572           </tr>
13573           <tr class="entries_header">
13574             <th class="th_details" colspan="5">Details</th>
13575           </tr>
13576           <tr class="entry_cont">
13577             <td class="entry_details" colspan="5">
13578               <p>The four coefficients that describe the quaternion
13579 rotation from the Android sensor coordinate system to a
13580 camera-aligned coordinate system where the X-axis is
13581 aligned with the long side of the image sensor,<wbr/> the Y-axis
13582 is aligned with the short side of the image sensor,<wbr/> and
13583 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13584 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13585 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13586 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13587 <pre><code> theta = 2 * acos(w)
13588 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13589 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13590 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13591 </code></pre>
13592 <p>To create a 3x3 rotation matrix that applies the rotation
13593 defined by this quaternion,<wbr/> the following matrix can be
13594 used:</p>
13595 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13596            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13597            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13598 </code></pre>
13599 <p>This matrix can then be used to apply the rotation to a
13600  column vector point with</p>
13601 <p><code>p' = Rp</code></p>
13602 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13603  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13604             </td>
13605           </tr>
13606
13607
13608           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13609            <!-- end of entry -->
13610         
13611                 
13612           <tr class="entry" id="dynamic_android.lens.poseTranslation">
13613             <td class="entry_name
13614              " rowspan="3">
13615               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13616             </td>
13617             <td class="entry_type">
13618                 <span class="entry_type_name">float</span>
13619                 <span class="entry_type_container">x</span>
13620
13621                 <span class="entry_type_array">
13622                   3
13623                 </span>
13624               <span class="entry_type_visibility"> [public]</span>
13625
13626
13627
13628
13629
13630
13631             </td> <!-- entry_type -->
13632
13633             <td class="entry_description">
13634               <p>Position of the camera optical center.<wbr/></p>
13635             </td>
13636
13637             <td class="entry_units">
13638               Meters
13639             </td>
13640
13641             <td class="entry_range">
13642             </td>
13643
13644             <td class="entry_tags">
13645               <ul class="entry_tags">
13646                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13647               </ul>
13648             </td>
13649
13650           </tr>
13651           <tr class="entries_header">
13652             <th class="th_details" colspan="5">Details</th>
13653           </tr>
13654           <tr class="entry_cont">
13655             <td class="entry_details" colspan="5">
13656               <p>The position of the camera device's lens optical center,<wbr/>
13657 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13658 optical center of the largest camera device facing in the
13659 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13660 axes</a>.<wbr/> Note that only the axis definitions are shared with
13661 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13662 <p>If this device is the largest or only camera device with a
13663 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13664 camera device with a lens optical center located 3 cm from
13665 the main sensor along the +X axis (to the right from the
13666 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13667 <p>To transform a pixel coordinates between two cameras
13668 facing the same direction,<wbr/> first the source camera
13669 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13670 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13671 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13672 of the source camera,<wbr/> the translation of the source camera
13673 relative to the destination camera,<wbr/> the
13674 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13675 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13676 of the destination camera.<wbr/> This obtains a
13677 radial-distortion-free coordinate in the destination
13678 camera pixel coordinates.<wbr/></p>
13679 <p>To compare this against a real image from the destination
13680 camera,<wbr/> the destination camera image then needs to be
13681 corrected for radial distortion before comparison or
13682 sampling.<wbr/></p>
13683             </td>
13684           </tr>
13685
13686
13687           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13688            <!-- end of entry -->
13689         
13690                 
13691           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13692             <td class="entry_name
13693              " rowspan="3">
13694               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13695             </td>
13696             <td class="entry_type">
13697                 <span class="entry_type_name">float</span>
13698                 <span class="entry_type_container">x</span>
13699
13700                 <span class="entry_type_array">
13701                   5
13702                 </span>
13703               <span class="entry_type_visibility"> [public]</span>
13704
13705
13706
13707
13708
13709
13710             </td> <!-- entry_type -->
13711
13712             <td class="entry_description">
13713               <p>The parameters for this camera device's intrinsic
13714 calibration.<wbr/></p>
13715             </td>
13716
13717             <td class="entry_units">
13718               
13719             Pixels in the
13720             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13721             coordinate system.<wbr/>
13722           
13723             </td>
13724
13725             <td class="entry_range">
13726             </td>
13727
13728             <td class="entry_tags">
13729               <ul class="entry_tags">
13730                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13731               </ul>
13732             </td>
13733
13734           </tr>
13735           <tr class="entries_header">
13736             <th class="th_details" colspan="5">Details</th>
13737           </tr>
13738           <tr class="entry_cont">
13739             <td class="entry_details" colspan="5">
13740               <p>The five calibration parameters that describe the
13741 transform from camera-centric 3D coordinates to sensor
13742 pixel coordinates:</p>
13743 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13744 </code></pre>
13745 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13746 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13747 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13748 being aligned with the lens plane.<wbr/></p>
13749 <p>These are typically used within a transformation matrix K:</p>
13750 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13751        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13752        0    0,<wbr/>   1 ]
13753 </code></pre>
13754 <p>which can then be combined with the camera pose rotation
13755 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13756 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13757 complete transform from world coordinates to pixel
13758 coordinates:</p>
13759 <pre><code>P = [ K 0   * [ R t
13760      0 1 ]     0 1 ]
13761 </code></pre>
13762 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13763 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13764 coordinate system,<wbr/> and with the mapping including the
13765 homogeneous division by z:</p>
13766 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13767 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13768 </code></pre>
13769 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13770 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13771 (depth) in pixel coordinates.<wbr/></p>
13772 <p>Note that the coordinate system for this transform is the
13773 <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/>
13774 where <code>(0,<wbr/>0)</code> is the top-left of the
13775 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13776 intrinsic calibration transforms have been applied to a
13777 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13778 transform needs to be applied,<wbr/> and the result adjusted to
13779 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13780 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13781 activeArraySize rectangle),<wbr/> to determine the final pixel
13782 coordinate of the world point for processed (non-RAW)
13783 output buffers.<wbr/></p>
13784             </td>
13785           </tr>
13786
13787
13788           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13789            <!-- end of entry -->
13790         
13791                 
13792           <tr class="entry" id="dynamic_android.lens.radialDistortion">
13793             <td class="entry_name
13794              " rowspan="3">
13795               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13796             </td>
13797             <td class="entry_type">
13798                 <span class="entry_type_name">float</span>
13799                 <span class="entry_type_container">x</span>
13800
13801                 <span class="entry_type_array">
13802                   6
13803                 </span>
13804               <span class="entry_type_visibility"> [public]</span>
13805
13806
13807
13808
13809
13810
13811             </td> <!-- entry_type -->
13812
13813             <td class="entry_description">
13814               <p>The correction coefficients to correct for this camera device's
13815 radial and tangential lens distortion.<wbr/></p>
13816             </td>
13817
13818             <td class="entry_units">
13819               
13820             Unitless coefficients.<wbr/>
13821           
13822             </td>
13823
13824             <td class="entry_range">
13825             </td>
13826
13827             <td class="entry_tags">
13828               <ul class="entry_tags">
13829                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13830               </ul>
13831             </td>
13832
13833           </tr>
13834           <tr class="entries_header">
13835             <th class="th_details" colspan="5">Details</th>
13836           </tr>
13837           <tr class="entry_cont">
13838             <td class="entry_details" colspan="5">
13839               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13840 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13841 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13842 lens's geometric distortion with the mapping equations:</p>
13843 <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 ) +
13844        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13845  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13846        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13847 </code></pre>
13848 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13849 input image that correspond to the pixel values in the
13850 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13851 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13852 </code></pre>
13853 <p>The pixel coordinates are defined in a normalized
13854 coordinate system related to the
13855 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13856 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
13857 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13858 of both x and y coordinates are normalized to be 1 at the
13859 edge further from the optical center,<wbr/> so the range
13860 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13861 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13862 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13863 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13864 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13865             </td>
13866           </tr>
13867
13868
13869           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13870            <!-- end of entry -->
13871         
13872         
13873
13874       <!-- end of kind -->
13875       </tbody>
13876
13877   <!-- end of section -->
13878   <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13879
13880
13881       <tr><td colspan="6" class="kind">controls</td></tr>
13882
13883       <thead class="entries_header">
13884         <tr>
13885           <th class="th_name">Property Name</th>
13886           <th class="th_type">Type</th>
13887           <th class="th_description">Description</th>
13888           <th class="th_units">Units</th>
13889           <th class="th_range">Range</th>
13890           <th class="th_tags">Tags</th>
13891         </tr>
13892       </thead>
13893
13894       <tbody>
13895
13896         
13897
13898         
13899
13900         
13901
13902         
13903
13904                 
13905           <tr class="entry" id="controls_android.noiseReduction.mode">
13906             <td class="entry_name
13907              " rowspan="5">
13908               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13909             </td>
13910             <td class="entry_type">
13911                 <span class="entry_type_name entry_type_name_enum">byte</span>
13912
13913               <span class="entry_type_visibility"> [public]</span>
13914
13915
13916               <span class="entry_type_hwlevel">[full] </span>
13917
13918
13919
13920                 <ul class="entry_type_enum">
13921                   <li>
13922                     <span class="entry_type_enum_name">OFF</span>
13923                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13924                   </li>
13925                   <li>
13926                     <span class="entry_type_enum_name">FAST</span>
13927                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13928 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13929 relative to sensor.<wbr/></p></span>
13930                   </li>
13931                   <li>
13932                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
13933                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13934 rate relative to sensor output.<wbr/></p></span>
13935                   </li>
13936                   <li>
13937                     <span class="entry_type_enum_name">MINIMAL</span>
13938                     <span class="entry_type_enum_optional">[optional]</span>
13939                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13940 sensor output.<wbr/> </p></span>
13941                   </li>
13942                   <li>
13943                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13944                     <span class="entry_type_enum_optional">[optional]</span>
13945                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13946 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>) or below have noise
13947 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13948 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13949 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13950 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13951 quality may improve from FAST).<wbr/></p>
13952 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13953 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13954 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13955 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13956 high-resolution buffers must not have noise reduction applied to maximize efficiency of
13957 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13958 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13959 applied for reasonable preview quality.<wbr/></p>
13960 <p>This mode is guaranteed to be supported by devices that support either the
13961 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13962 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13963 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13964                   </li>
13965                 </ul>
13966
13967             </td> <!-- entry_type -->
13968
13969             <td class="entry_description">
13970               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13971             </td>
13972
13973             <td class="entry_units">
13974             </td>
13975
13976             <td class="entry_range">
13977               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13978             </td>
13979
13980             <td class="entry_tags">
13981               <ul class="entry_tags">
13982                   <li><a href="#tag_V1">V1</a></li>
13983                   <li><a href="#tag_REPROC">REPROC</a></li>
13984               </ul>
13985             </td>
13986
13987           </tr>
13988           <tr class="entries_header">
13989             <th class="th_details" colspan="5">Details</th>
13990           </tr>
13991           <tr class="entry_cont">
13992             <td class="entry_details" colspan="5">
13993               <p>The noise reduction algorithm attempts to improve image quality by removing
13994 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13995 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13996 YUV domain.<wbr/></p>
13997 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13998 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13999 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14000 <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>
14001 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14002 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14003 will use the highest-quality noise filtering algorithms,<wbr/>
14004 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14005 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14006 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14007 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14008 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14009 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14010 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14011 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14012 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14013 those will be reprocessed later if necessary.<wbr/></p>
14014 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14015 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14016 may adjust the noise reduction parameters for best image quality based on the
14017 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14018             </td>
14019           </tr>
14020
14021           <tr class="entries_header">
14022             <th class="th_details" colspan="5">HAL Implementation Details</th>
14023           </tr>
14024           <tr class="entry_cont">
14025             <td class="entry_details" colspan="5">
14026               <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
14027 adjust the internal noise reduction parameters appropriately to get the best quality
14028 images.<wbr/></p>
14029             </td>
14030           </tr>
14031
14032           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14033            <!-- end of entry -->
14034         
14035                 
14036           <tr class="entry" id="controls_android.noiseReduction.strength">
14037             <td class="entry_name
14038              " rowspan="1">
14039               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14040             </td>
14041             <td class="entry_type">
14042                 <span class="entry_type_name">byte</span>
14043
14044               <span class="entry_type_visibility"> [system]</span>
14045
14046
14047
14048
14049
14050
14051             </td> <!-- entry_type -->
14052
14053             <td class="entry_description">
14054               <p>Control the amount of noise reduction
14055 applied to the images</p>
14056             </td>
14057
14058             <td class="entry_units">
14059               1-10; 10 is max noise reduction
14060             </td>
14061
14062             <td class="entry_range">
14063               <p>1 - 10</p>
14064             </td>
14065
14066             <td class="entry_tags">
14067               <ul class="entry_tags">
14068                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14069               </ul>
14070             </td>
14071
14072           </tr>
14073
14074
14075           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14076            <!-- end of entry -->
14077         
14078         
14079
14080       <!-- end of kind -->
14081       </tbody>
14082       <tr><td colspan="6" class="kind">static</td></tr>
14083
14084       <thead class="entries_header">
14085         <tr>
14086           <th class="th_name">Property Name</th>
14087           <th class="th_type">Type</th>
14088           <th class="th_description">Description</th>
14089           <th class="th_units">Units</th>
14090           <th class="th_range">Range</th>
14091           <th class="th_tags">Tags</th>
14092         </tr>
14093       </thead>
14094
14095       <tbody>
14096
14097         
14098
14099         
14100
14101         
14102
14103         
14104
14105                 
14106           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14107             <td class="entry_name
14108              " rowspan="5">
14109               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14110             </td>
14111             <td class="entry_type">
14112                 <span class="entry_type_name">byte</span>
14113                 <span class="entry_type_container">x</span>
14114
14115                 <span class="entry_type_array">
14116                   n
14117                 </span>
14118               <span class="entry_type_visibility"> [public as enumList]</span>
14119
14120
14121               <span class="entry_type_hwlevel">[limited] </span>
14122
14123
14124                 <div class="entry_type_notes">list of enums</div>
14125
14126
14127             </td> <!-- entry_type -->
14128
14129             <td class="entry_description">
14130               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14131 by this camera device.<wbr/></p>
14132             </td>
14133
14134             <td class="entry_units">
14135             </td>
14136
14137             <td class="entry_range">
14138               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14139             </td>
14140
14141             <td class="entry_tags">
14142               <ul class="entry_tags">
14143                   <li><a href="#tag_V1">V1</a></li>
14144                   <li><a href="#tag_REPROC">REPROC</a></li>
14145               </ul>
14146             </td>
14147
14148           </tr>
14149           <tr class="entries_header">
14150             <th class="th_details" colspan="5">Details</th>
14151           </tr>
14152           <tr class="entry_cont">
14153             <td class="entry_details" colspan="5">
14154               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14155 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14156 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14157 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14158             </td>
14159           </tr>
14160
14161           <tr class="entries_header">
14162             <th class="th_details" colspan="5">HAL Implementation Details</th>
14163           </tr>
14164           <tr class="entry_cont">
14165             <td class="entry_details" colspan="5">
14166               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14167 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14168 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14169 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14170             </td>
14171           </tr>
14172
14173           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14174            <!-- end of entry -->
14175         
14176         
14177
14178       <!-- end of kind -->
14179       </tbody>
14180       <tr><td colspan="6" class="kind">dynamic</td></tr>
14181
14182       <thead class="entries_header">
14183         <tr>
14184           <th class="th_name">Property Name</th>
14185           <th class="th_type">Type</th>
14186           <th class="th_description">Description</th>
14187           <th class="th_units">Units</th>
14188           <th class="th_range">Range</th>
14189           <th class="th_tags">Tags</th>
14190         </tr>
14191       </thead>
14192
14193       <tbody>
14194
14195         
14196
14197         
14198
14199         
14200
14201         
14202
14203                 
14204           <tr class="entry" id="dynamic_android.noiseReduction.mode">
14205             <td class="entry_name
14206              " rowspan="5">
14207               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14208             </td>
14209             <td class="entry_type">
14210                 <span class="entry_type_name entry_type_name_enum">byte</span>
14211
14212               <span class="entry_type_visibility"> [public]</span>
14213
14214
14215               <span class="entry_type_hwlevel">[full] </span>
14216
14217
14218
14219                 <ul class="entry_type_enum">
14220                   <li>
14221                     <span class="entry_type_enum_name">OFF</span>
14222                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14223                   </li>
14224                   <li>
14225                     <span class="entry_type_enum_name">FAST</span>
14226                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14227 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14228 relative to sensor.<wbr/></p></span>
14229                   </li>
14230                   <li>
14231                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
14232                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14233 rate relative to sensor output.<wbr/></p></span>
14234                   </li>
14235                   <li>
14236                     <span class="entry_type_enum_name">MINIMAL</span>
14237                     <span class="entry_type_enum_optional">[optional]</span>
14238                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14239 sensor output.<wbr/> </p></span>
14240                   </li>
14241                   <li>
14242                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14243                     <span class="entry_type_enum_optional">[optional]</span>
14244                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14245 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>) or below have noise
14246 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
14247 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
14248 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
14249 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
14250 quality may improve from FAST).<wbr/></p>
14251 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14252 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14253 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14254 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14255 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14256 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14257 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14258 applied for reasonable preview quality.<wbr/></p>
14259 <p>This mode is guaranteed to be supported by devices that support either the
14260 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14261 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14262 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14263                   </li>
14264                 </ul>
14265
14266             </td> <!-- entry_type -->
14267
14268             <td class="entry_description">
14269               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14270             </td>
14271
14272             <td class="entry_units">
14273             </td>
14274
14275             <td class="entry_range">
14276               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14277             </td>
14278
14279             <td class="entry_tags">
14280               <ul class="entry_tags">
14281                   <li><a href="#tag_V1">V1</a></li>
14282                   <li><a href="#tag_REPROC">REPROC</a></li>
14283               </ul>
14284             </td>
14285
14286           </tr>
14287           <tr class="entries_header">
14288             <th class="th_details" colspan="5">Details</th>
14289           </tr>
14290           <tr class="entry_cont">
14291             <td class="entry_details" colspan="5">
14292               <p>The noise reduction algorithm attempts to improve image quality by removing
14293 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14294 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14295 YUV domain.<wbr/></p>
14296 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14297 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14298 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14299 <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>
14300 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14301 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14302 will use the highest-quality noise filtering algorithms,<wbr/>
14303 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14304 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14305 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14306 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14307 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14308 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14309 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14310 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14311 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14312 those will be reprocessed later if necessary.<wbr/></p>
14313 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14314 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14315 may adjust the noise reduction parameters for best image quality based on the
14316 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14317             </td>
14318           </tr>
14319
14320           <tr class="entries_header">
14321             <th class="th_details" colspan="5">HAL Implementation Details</th>
14322           </tr>
14323           <tr class="entry_cont">
14324             <td class="entry_details" colspan="5">
14325               <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
14326 adjust the internal noise reduction parameters appropriately to get the best quality
14327 images.<wbr/></p>
14328             </td>
14329           </tr>
14330
14331           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14332            <!-- end of entry -->
14333         
14334         
14335
14336       <!-- end of kind -->
14337       </tbody>
14338
14339   <!-- end of section -->
14340   <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
14341
14342
14343       <tr><td colspan="6" class="kind">static</td></tr>
14344
14345       <thead class="entries_header">
14346         <tr>
14347           <th class="th_name">Property Name</th>
14348           <th class="th_type">Type</th>
14349           <th class="th_description">Description</th>
14350           <th class="th_units">Units</th>
14351           <th class="th_range">Range</th>
14352           <th class="th_tags">Tags</th>
14353         </tr>
14354       </thead>
14355
14356       <tbody>
14357
14358         
14359
14360         
14361
14362         
14363
14364         
14365
14366                 
14367           <tr class="entry" id="static_android.quirks.meteringCropRegion">
14368             <td class="entry_name
14369                 entry_name_deprecated
14370              " rowspan="3">
14371               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
14372             </td>
14373             <td class="entry_type">
14374                 <span class="entry_type_name">byte</span>
14375
14376               <span class="entry_type_visibility"> [system]</span>
14377
14378
14379
14380               <span class="entry_type_deprecated">[deprecated] </span>
14381
14382
14383
14384             </td> <!-- entry_type -->
14385
14386             <td class="entry_description">
14387               <p>If set to 1,<wbr/> the camera service does not
14388 scale 'normalized' coordinates with respect to the crop
14389 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
14390 and output (face rectangles).<wbr/></p>
14391             </td>
14392
14393             <td class="entry_units">
14394             </td>
14395
14396             <td class="entry_range">
14397               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14398             </td>
14399
14400             <td class="entry_tags">
14401             </td>
14402
14403           </tr>
14404           <tr class="entries_header">
14405             <th class="th_details" colspan="5">Details</th>
14406           </tr>
14407           <tr class="entry_cont">
14408             <td class="entry_details" colspan="5">
14409               <p>Normalized coordinates refer to those in the
14410 (-1000,<wbr/>1000) range mentioned in the
14411 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
14412 <p>HAL implementations should instead always use and emit
14413 sensor array-relative coordinates for all region data.<wbr/> Does
14414 not need to be listed in static metadata.<wbr/> Support will be
14415 removed in future versions of camera service.<wbr/></p>
14416             </td>
14417           </tr>
14418
14419
14420           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14421            <!-- end of entry -->
14422         
14423                 
14424           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
14425             <td class="entry_name
14426                 entry_name_deprecated
14427              " rowspan="3">
14428               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
14429             </td>
14430             <td class="entry_type">
14431                 <span class="entry_type_name">byte</span>
14432
14433               <span class="entry_type_visibility"> [system]</span>
14434
14435
14436
14437               <span class="entry_type_deprecated">[deprecated] </span>
14438
14439
14440
14441             </td> <!-- entry_type -->
14442
14443             <td class="entry_description">
14444               <p>If set to 1,<wbr/> then the camera service always
14445 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14446 trigger.<wbr/></p>
14447             </td>
14448
14449             <td class="entry_units">
14450             </td>
14451
14452             <td class="entry_range">
14453               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14454             </td>
14455
14456             <td class="entry_tags">
14457             </td>
14458
14459           </tr>
14460           <tr class="entries_header">
14461             <th class="th_details" colspan="5">Details</th>
14462           </tr>
14463           <tr class="entry_cont">
14464             <td class="entry_details" colspan="5">
14465               <p>HAL implementations should implement AF trigger
14466 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14467 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14468 not need to be listed in static metadata.<wbr/> Support will be
14469 removed in future versions of camera service</p>
14470             </td>
14471           </tr>
14472
14473
14474           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14475            <!-- end of entry -->
14476         
14477                 
14478           <tr class="entry" id="static_android.quirks.useZslFormat">
14479             <td class="entry_name
14480                 entry_name_deprecated
14481              " rowspan="3">
14482               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14483             </td>
14484             <td class="entry_type">
14485                 <span class="entry_type_name">byte</span>
14486
14487               <span class="entry_type_visibility"> [system]</span>
14488
14489
14490
14491               <span class="entry_type_deprecated">[deprecated] </span>
14492
14493
14494
14495             </td> <!-- entry_type -->
14496
14497             <td class="entry_description">
14498               <p>If set to 1,<wbr/> the camera service uses
14499 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14500 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14501 shutter lag stream</p>
14502             </td>
14503
14504             <td class="entry_units">
14505             </td>
14506
14507             <td class="entry_range">
14508               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14509             </td>
14510
14511             <td class="entry_tags">
14512             </td>
14513
14514           </tr>
14515           <tr class="entries_header">
14516             <th class="th_details" colspan="5">Details</th>
14517           </tr>
14518           <tr class="entry_cont">
14519             <td class="entry_details" colspan="5">
14520               <p>HAL implementations should use gralloc usage flags
14521 to determine that a stream will be used for
14522 zero-shutter-lag,<wbr/> instead of relying on an explicit
14523 format setting.<wbr/> Does not need to be listed in static
14524 metadata.<wbr/> Support will be removed in future versions of
14525 camera service.<wbr/></p>
14526             </td>
14527           </tr>
14528
14529
14530           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14531            <!-- end of entry -->
14532         
14533                 
14534           <tr class="entry" id="static_android.quirks.usePartialResult">
14535             <td class="entry_name
14536                 entry_name_deprecated
14537              " rowspan="5">
14538               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14539             </td>
14540             <td class="entry_type">
14541                 <span class="entry_type_name">byte</span>
14542
14543               <span class="entry_type_visibility"> [hidden]</span>
14544
14545
14546
14547               <span class="entry_type_deprecated">[deprecated] </span>
14548
14549
14550
14551             </td> <!-- entry_type -->
14552
14553             <td class="entry_description">
14554               <p>If set to 1,<wbr/> the HAL will always split result
14555 metadata for a single capture into multiple buffers,<wbr/>
14556 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14557             </td>
14558
14559             <td class="entry_units">
14560             </td>
14561
14562             <td class="entry_range">
14563               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14564             </td>
14565
14566             <td class="entry_tags">
14567             </td>
14568
14569           </tr>
14570           <tr class="entries_header">
14571             <th class="th_details" colspan="5">Details</th>
14572           </tr>
14573           <tr class="entry_cont">
14574             <td class="entry_details" colspan="5">
14575               <p>Does not need to be listed in static
14576 metadata.<wbr/> Support for partial results will be reworked in
14577 future versions of camera service.<wbr/> This quirk will stop
14578 working at that point; DO NOT USE without careful
14579 consideration of future support.<wbr/></p>
14580             </td>
14581           </tr>
14582
14583           <tr class="entries_header">
14584             <th class="th_details" colspan="5">HAL Implementation Details</th>
14585           </tr>
14586           <tr class="entry_cont">
14587             <td class="entry_details" colspan="5">
14588               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14589 for information on how to implement partial results.<wbr/></p>
14590             </td>
14591           </tr>
14592
14593           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14594            <!-- end of entry -->
14595         
14596         
14597
14598       <!-- end of kind -->
14599       </tbody>
14600       <tr><td colspan="6" class="kind">dynamic</td></tr>
14601
14602       <thead class="entries_header">
14603         <tr>
14604           <th class="th_name">Property Name</th>
14605           <th class="th_type">Type</th>
14606           <th class="th_description">Description</th>
14607           <th class="th_units">Units</th>
14608           <th class="th_range">Range</th>
14609           <th class="th_tags">Tags</th>
14610         </tr>
14611       </thead>
14612
14613       <tbody>
14614
14615         
14616
14617         
14618
14619         
14620
14621         
14622
14623                 
14624           <tr class="entry" id="dynamic_android.quirks.partialResult">
14625             <td class="entry_name
14626                 entry_name_deprecated
14627              " rowspan="5">
14628               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14629             </td>
14630             <td class="entry_type">
14631                 <span class="entry_type_name entry_type_name_enum">byte</span>
14632
14633               <span class="entry_type_visibility"> [hidden as boolean]</span>
14634
14635
14636
14637               <span class="entry_type_deprecated">[deprecated] </span>
14638
14639
14640                 <ul class="entry_type_enum">
14641                   <li>
14642                     <span class="entry_type_enum_name">FINAL</span>
14643                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14644 for this capture.<wbr/></p></span>
14645                   </li>
14646                   <li>
14647                     <span class="entry_type_enum_name">PARTIAL</span>
14648                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14649 capture.<wbr/> More result buffers for this capture will be sent
14650 by the camera device,<wbr/> the last of which will be marked
14651 FINAL.<wbr/></p></span>
14652                   </li>
14653                 </ul>
14654
14655             </td> <!-- entry_type -->
14656
14657             <td class="entry_description">
14658               <p>Whether a result given to the framework is the
14659 final one for the capture,<wbr/> or only a partial that contains a
14660 subset of the full set of dynamic metadata
14661 values.<wbr/></p>
14662             </td>
14663
14664             <td class="entry_units">
14665             </td>
14666
14667             <td class="entry_range">
14668               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14669               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14670             </td>
14671
14672             <td class="entry_tags">
14673             </td>
14674
14675           </tr>
14676           <tr class="entries_header">
14677             <th class="th_details" colspan="5">Details</th>
14678           </tr>
14679           <tr class="entry_cont">
14680             <td class="entry_details" colspan="5">
14681               <p>The entries in the result metadata buffers for a
14682 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14683 FINAL buffers must retain FIFO ordering relative to the
14684 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14685 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14686 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14687 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14688 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14689 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14690             </td>
14691           </tr>
14692
14693           <tr class="entries_header">
14694             <th class="th_details" colspan="5">HAL Implementation Details</th>
14695           </tr>
14696           <tr class="entry_cont">
14697             <td class="entry_details" colspan="5">
14698               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14699 for information on how to implement partial results.<wbr/></p>
14700             </td>
14701           </tr>
14702
14703           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14704            <!-- end of entry -->
14705         
14706         
14707
14708       <!-- end of kind -->
14709       </tbody>
14710
14711   <!-- end of section -->
14712   <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14713
14714
14715       <tr><td colspan="6" class="kind">controls</td></tr>
14716
14717       <thead class="entries_header">
14718         <tr>
14719           <th class="th_name">Property Name</th>
14720           <th class="th_type">Type</th>
14721           <th class="th_description">Description</th>
14722           <th class="th_units">Units</th>
14723           <th class="th_range">Range</th>
14724           <th class="th_tags">Tags</th>
14725         </tr>
14726       </thead>
14727
14728       <tbody>
14729
14730         
14731
14732         
14733
14734         
14735
14736         
14737
14738                 
14739           <tr class="entry" id="controls_android.request.frameCount">
14740             <td class="entry_name
14741                 entry_name_deprecated
14742              " rowspan="1">
14743               android.<wbr/>request.<wbr/>frame<wbr/>Count
14744             </td>
14745             <td class="entry_type">
14746                 <span class="entry_type_name">int32</span>
14747
14748               <span class="entry_type_visibility"> [system]</span>
14749
14750
14751
14752               <span class="entry_type_deprecated">[deprecated] </span>
14753
14754
14755
14756             </td> <!-- entry_type -->
14757
14758             <td class="entry_description">
14759               <p>A frame counter set by the framework.<wbr/> Must
14760 be maintained unchanged in output frame.<wbr/> This value monotonically
14761 increases with every new result (that is,<wbr/> each new result has a unique
14762 frameCount value).<wbr/></p>
14763             </td>
14764
14765             <td class="entry_units">
14766               incrementing integer
14767             </td>
14768
14769             <td class="entry_range">
14770               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14771               <p>Any int.<wbr/></p>
14772             </td>
14773
14774             <td class="entry_tags">
14775             </td>
14776
14777           </tr>
14778
14779
14780           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14781            <!-- end of entry -->
14782         
14783                 
14784           <tr class="entry" id="controls_android.request.id">
14785             <td class="entry_name
14786              " rowspan="1">
14787               android.<wbr/>request.<wbr/>id
14788             </td>
14789             <td class="entry_type">
14790                 <span class="entry_type_name">int32</span>
14791
14792               <span class="entry_type_visibility"> [hidden]</span>
14793
14794
14795
14796
14797
14798
14799             </td> <!-- entry_type -->
14800
14801             <td class="entry_description">
14802               <p>An application-specified ID for the current
14803 request.<wbr/> Must be maintained unchanged in output
14804 frame</p>
14805             </td>
14806
14807             <td class="entry_units">
14808               arbitrary integer assigned by application
14809             </td>
14810
14811             <td class="entry_range">
14812               <p>Any int</p>
14813             </td>
14814
14815             <td class="entry_tags">
14816               <ul class="entry_tags">
14817                   <li><a href="#tag_V1">V1</a></li>
14818               </ul>
14819             </td>
14820
14821           </tr>
14822
14823
14824           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14825            <!-- end of entry -->
14826         
14827                 
14828           <tr class="entry" id="controls_android.request.inputStreams">
14829             <td class="entry_name
14830                 entry_name_deprecated
14831              " rowspan="3">
14832               android.<wbr/>request.<wbr/>input<wbr/>Streams
14833             </td>
14834             <td class="entry_type">
14835                 <span class="entry_type_name">int32</span>
14836                 <span class="entry_type_container">x</span>
14837
14838                 <span class="entry_type_array">
14839                   n
14840                 </span>
14841               <span class="entry_type_visibility"> [system]</span>
14842
14843
14844
14845               <span class="entry_type_deprecated">[deprecated] </span>
14846
14847
14848
14849             </td> <!-- entry_type -->
14850
14851             <td class="entry_description">
14852               <p>List which camera reprocess stream is used
14853 for the source of reprocessing data.<wbr/></p>
14854             </td>
14855
14856             <td class="entry_units">
14857               List of camera reprocess stream IDs
14858             </td>
14859
14860             <td class="entry_range">
14861               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14862               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14863             </td>
14864
14865             <td class="entry_tags">
14866               <ul class="entry_tags">
14867                   <li><a href="#tag_HAL2">HAL2</a></li>
14868               </ul>
14869             </td>
14870
14871           </tr>
14872           <tr class="entries_header">
14873             <th class="th_details" colspan="5">Details</th>
14874           </tr>
14875           <tr class="entry_cont">
14876             <td class="entry_details" colspan="5">
14877               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14878 REPROCESS.<wbr/> Ignored otherwise</p>
14879             </td>
14880           </tr>
14881
14882
14883           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14884            <!-- end of entry -->
14885         
14886                 
14887           <tr class="entry" id="controls_android.request.metadataMode">
14888             <td class="entry_name
14889              " rowspan="1">
14890               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14891             </td>
14892             <td class="entry_type">
14893                 <span class="entry_type_name entry_type_name_enum">byte</span>
14894
14895               <span class="entry_type_visibility"> [system]</span>
14896
14897
14898
14899
14900
14901                 <ul class="entry_type_enum">
14902                   <li>
14903                     <span class="entry_type_enum_name">NONE</span>
14904                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14905 for application-bound buffer data.<wbr/> If no
14906 application-bound streams exist,<wbr/> no frame should be
14907 placed in the output frame queue.<wbr/> If such streams
14908 exist,<wbr/> a frame should be placed on the output queue
14909 with null metadata but with the necessary output buffer
14910 information.<wbr/> Timestamp information should still be
14911 included with any output stream buffers</p></span>
14912                   </li>
14913                   <li>
14914                     <span class="entry_type_enum_name">FULL</span>
14915                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14916 only be produced if they are separately
14917 enabled</p></span>
14918                   </li>
14919                 </ul>
14920
14921             </td> <!-- entry_type -->
14922
14923             <td class="entry_description">
14924               <p>How much metadata to produce on
14925 output</p>
14926             </td>
14927
14928             <td class="entry_units">
14929             </td>
14930
14931             <td class="entry_range">
14932             </td>
14933
14934             <td class="entry_tags">
14935               <ul class="entry_tags">
14936                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14937               </ul>
14938             </td>
14939
14940           </tr>
14941
14942
14943           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14944            <!-- end of entry -->
14945         
14946                 
14947           <tr class="entry" id="controls_android.request.outputStreams">
14948             <td class="entry_name
14949                 entry_name_deprecated
14950              " rowspan="3">
14951               android.<wbr/>request.<wbr/>output<wbr/>Streams
14952             </td>
14953             <td class="entry_type">
14954                 <span class="entry_type_name">int32</span>
14955                 <span class="entry_type_container">x</span>
14956
14957                 <span class="entry_type_array">
14958                   n
14959                 </span>
14960               <span class="entry_type_visibility"> [system]</span>
14961
14962
14963
14964               <span class="entry_type_deprecated">[deprecated] </span>
14965
14966
14967
14968             </td> <!-- entry_type -->
14969
14970             <td class="entry_description">
14971               <p>Lists which camera output streams image data
14972 from this capture must be sent to</p>
14973             </td>
14974
14975             <td class="entry_units">
14976               List of camera stream IDs
14977             </td>
14978
14979             <td class="entry_range">
14980               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14981               <p>List must only include streams that have been
14982 created</p>
14983             </td>
14984
14985             <td class="entry_tags">
14986               <ul class="entry_tags">
14987                   <li><a href="#tag_HAL2">HAL2</a></li>
14988               </ul>
14989             </td>
14990
14991           </tr>
14992           <tr class="entries_header">
14993             <th class="th_details" colspan="5">Details</th>
14994           </tr>
14995           <tr class="entry_cont">
14996             <td class="entry_details" colspan="5">
14997               <p>If no output streams are listed,<wbr/> then the image
14998 data should simply be discarded.<wbr/> The image data must
14999 still be captured for metadata and statistics production,<wbr/>
15000 and the lens and flash must operate as requested.<wbr/></p>
15001             </td>
15002           </tr>
15003
15004
15005           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15006            <!-- end of entry -->
15007         
15008                 
15009           <tr class="entry" id="controls_android.request.type">
15010             <td class="entry_name
15011                 entry_name_deprecated
15012              " rowspan="1">
15013               android.<wbr/>request.<wbr/>type
15014             </td>
15015             <td class="entry_type">
15016                 <span class="entry_type_name entry_type_name_enum">byte</span>
15017
15018               <span class="entry_type_visibility"> [system]</span>
15019
15020
15021
15022               <span class="entry_type_deprecated">[deprecated] </span>
15023
15024
15025                 <ul class="entry_type_enum">
15026                   <li>
15027                     <span class="entry_type_enum_name">CAPTURE</span>
15028                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15029 and process it according to the
15030 settings</p></span>
15031                   </li>
15032                   <li>
15033                     <span class="entry_type_enum_name">REPROCESS</span>
15034                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
15035 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15036 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15037 needed for reprocessing with [RP]</p></span>
15038                   </li>
15039                 </ul>
15040
15041             </td> <!-- entry_type -->
15042
15043             <td class="entry_description">
15044               <p>The type of the request; either CAPTURE or
15045 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
15046             </td>
15047
15048             <td class="entry_units">
15049             </td>
15050
15051             <td class="entry_range">
15052               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15053             </td>
15054
15055             <td class="entry_tags">
15056               <ul class="entry_tags">
15057                   <li><a href="#tag_HAL2">HAL2</a></li>
15058               </ul>
15059             </td>
15060
15061           </tr>
15062
15063
15064           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15065            <!-- end of entry -->
15066         
15067         
15068
15069       <!-- end of kind -->
15070       </tbody>
15071       <tr><td colspan="6" class="kind">static</td></tr>
15072
15073       <thead class="entries_header">
15074         <tr>
15075           <th class="th_name">Property Name</th>
15076           <th class="th_type">Type</th>
15077           <th class="th_description">Description</th>
15078           <th class="th_units">Units</th>
15079           <th class="th_range">Range</th>
15080           <th class="th_tags">Tags</th>
15081         </tr>
15082       </thead>
15083
15084       <tbody>
15085
15086         
15087
15088         
15089
15090         
15091
15092         
15093
15094                 
15095           <tr class="entry" id="static_android.request.maxNumOutputStreams">
15096             <td class="entry_name
15097              " rowspan="3">
15098               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15099             </td>
15100             <td class="entry_type">
15101                 <span class="entry_type_name">int32</span>
15102                 <span class="entry_type_container">x</span>
15103
15104                 <span class="entry_type_array">
15105                   3
15106                 </span>
15107               <span class="entry_type_visibility"> [ndk_public]</span>
15108
15109
15110               <span class="entry_type_hwlevel">[legacy] </span>
15111
15112
15113
15114
15115             </td> <!-- entry_type -->
15116
15117             <td class="entry_description">
15118               <p>The maximum numbers of different types of output streams
15119 that can be configured and used simultaneously by a camera device.<wbr/></p>
15120             </td>
15121
15122             <td class="entry_units">
15123             </td>
15124
15125             <td class="entry_range">
15126               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15127 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15128 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15129 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15130 &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>
15131             </td>
15132
15133             <td class="entry_tags">
15134               <ul class="entry_tags">
15135                   <li><a href="#tag_BC">BC</a></li>
15136               </ul>
15137             </td>
15138
15139           </tr>
15140           <tr class="entries_header">
15141             <th class="th_details" colspan="5">Details</th>
15142           </tr>
15143           <tr class="entry_cont">
15144             <td class="entry_details" colspan="5">
15145               <p>This is a 3 element tuple that contains the max number of output simultaneous
15146 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15147 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15148 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15149 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>
15150 <p>This lists the upper bound of the number of output streams supported by
15151 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15152 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15153 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15154 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15155 into the 3 stream types as below:</p>
15156 <ul>
15157 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
15158   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15159 <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 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15160 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
15161   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15162   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
15163   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
15164 </ul>
15165             </td>
15166           </tr>
15167
15168
15169           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15170            <!-- end of entry -->
15171         
15172                 
15173           <tr class="entry" id="static_android.request.maxNumOutputRaw">
15174             <td class="entry_name
15175              " rowspan="3">
15176               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15177             </td>
15178             <td class="entry_type">
15179                 <span class="entry_type_name">int32</span>
15180
15181               <span class="entry_type_visibility"> [java_public]</span>
15182
15183               <span class="entry_type_synthetic">[synthetic] </span>
15184
15185               <span class="entry_type_hwlevel">[legacy] </span>
15186
15187
15188
15189
15190             </td> <!-- entry_type -->
15191
15192             <td class="entry_description">
15193               <p>The maximum numbers of different types of output streams
15194 that can be configured and used simultaneously by a camera device
15195 for any <code>RAW</code> formats.<wbr/></p>
15196             </td>
15197
15198             <td class="entry_units">
15199             </td>
15200
15201             <td class="entry_range">
15202               <p>&gt;= 0</p>
15203             </td>
15204
15205             <td class="entry_tags">
15206             </td>
15207
15208           </tr>
15209           <tr class="entries_header">
15210             <th class="th_details" colspan="5">Details</th>
15211           </tr>
15212           <tr class="entry_cont">
15213             <td class="entry_details" colspan="5">
15214               <p>This value contains the max number of output simultaneous
15215 streams from the raw sensor.<wbr/></p>
15216 <p>This lists the upper bound of the number of output streams supported by
15217 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15218 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15219 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>
15220 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15221 <ul>
15222 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15223 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15224 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15225 </ul>
15226 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15227 never support raw streams.<wbr/></p>
15228             </td>
15229           </tr>
15230
15231
15232           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15233            <!-- end of entry -->
15234         
15235                 
15236           <tr class="entry" id="static_android.request.maxNumOutputProc">
15237             <td class="entry_name
15238              " rowspan="3">
15239               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15240             </td>
15241             <td class="entry_type">
15242                 <span class="entry_type_name">int32</span>
15243
15244               <span class="entry_type_visibility"> [java_public]</span>
15245
15246               <span class="entry_type_synthetic">[synthetic] </span>
15247
15248               <span class="entry_type_hwlevel">[legacy] </span>
15249
15250
15251
15252
15253             </td> <!-- entry_type -->
15254
15255             <td class="entry_description">
15256               <p>The maximum numbers of different types of output streams
15257 that can be configured and used simultaneously by a camera device
15258 for any processed (but not-stalling) formats.<wbr/></p>
15259             </td>
15260
15261             <td class="entry_units">
15262             </td>
15263
15264             <td class="entry_range">
15265               <p>&gt;= 3
15266 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15267 &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>
15268             </td>
15269
15270             <td class="entry_tags">
15271             </td>
15272
15273           </tr>
15274           <tr class="entries_header">
15275             <th class="th_details" colspan="5">Details</th>
15276           </tr>
15277           <tr class="entry_cont">
15278             <td class="entry_details" colspan="5">
15279               <p>This value contains the max number of output simultaneous
15280 streams for any processed (but not-stalling) formats.<wbr/></p>
15281 <p>This lists the upper bound of the number of output streams supported by
15282 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15283 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15284 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>
15285 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
15286 Typically:</p>
15287 <ul>
15288 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
15289 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
15290 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
15291 <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>
15292 </ul>
15293 <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
15294 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
15295 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
15296             </td>
15297           </tr>
15298
15299
15300           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15301            <!-- end of entry -->
15302         
15303                 
15304           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
15305             <td class="entry_name
15306              " rowspan="3">
15307               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
15308             </td>
15309             <td class="entry_type">
15310                 <span class="entry_type_name">int32</span>
15311
15312               <span class="entry_type_visibility"> [java_public]</span>
15313
15314               <span class="entry_type_synthetic">[synthetic] </span>
15315
15316               <span class="entry_type_hwlevel">[legacy] </span>
15317
15318
15319
15320
15321             </td> <!-- entry_type -->
15322
15323             <td class="entry_description">
15324               <p>The maximum numbers of different types of output streams
15325 that can be configured and used simultaneously by a camera device
15326 for any processed (and stalling) formats.<wbr/></p>
15327             </td>
15328
15329             <td class="entry_units">
15330             </td>
15331
15332             <td class="entry_range">
15333               <p>&gt;= 1</p>
15334             </td>
15335
15336             <td class="entry_tags">
15337             </td>
15338
15339           </tr>
15340           <tr class="entries_header">
15341             <th class="th_details" colspan="5">Details</th>
15342           </tr>
15343           <tr class="entry_cont">
15344             <td class="entry_details" colspan="5">
15345               <p>This value contains the max number of output simultaneous
15346 streams for any processed (but not-stalling) formats.<wbr/></p>
15347 <p>This lists the upper bound of the number of output streams supported by
15348 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15349 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15350 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>
15351 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
15352 &gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
15353 stalling format.<wbr/></p>
15354 <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
15355 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
15356 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
15357             </td>
15358           </tr>
15359
15360
15361           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15362            <!-- end of entry -->
15363         
15364                 
15365           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
15366             <td class="entry_name
15367                 entry_name_deprecated
15368              " rowspan="3">
15369               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
15370             </td>
15371             <td class="entry_type">
15372                 <span class="entry_type_name">int32</span>
15373                 <span class="entry_type_container">x</span>
15374
15375                 <span class="entry_type_array">
15376                   1
15377                 </span>
15378               <span class="entry_type_visibility"> [system]</span>
15379
15380
15381
15382               <span class="entry_type_deprecated">[deprecated] </span>
15383
15384
15385
15386             </td> <!-- entry_type -->
15387
15388             <td class="entry_description">
15389               <p>How many reprocessing streams of any type
15390 can be allocated at the same time.<wbr/></p>
15391             </td>
15392
15393             <td class="entry_units">
15394             </td>
15395
15396             <td class="entry_range">
15397               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15398               <p>&gt;= 0</p>
15399             </td>
15400
15401             <td class="entry_tags">
15402               <ul class="entry_tags">
15403                   <li><a href="#tag_HAL2">HAL2</a></li>
15404               </ul>
15405             </td>
15406
15407           </tr>
15408           <tr class="entries_header">
15409             <th class="th_details" colspan="5">Details</th>
15410           </tr>
15411           <tr class="entry_cont">
15412             <td class="entry_details" colspan="5">
15413               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
15414 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
15415             </td>
15416           </tr>
15417
15418
15419           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15420            <!-- end of entry -->
15421         
15422                 
15423           <tr class="entry" id="static_android.request.maxNumInputStreams">
15424             <td class="entry_name
15425              " rowspan="5">
15426               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
15427             </td>
15428             <td class="entry_type">
15429                 <span class="entry_type_name">int32</span>
15430
15431               <span class="entry_type_visibility"> [public]</span>
15432
15433
15434               <span class="entry_type_hwlevel">[full] </span>
15435
15436
15437
15438
15439             </td> <!-- entry_type -->
15440
15441             <td class="entry_description">
15442               <p>The maximum numbers of any type of input streams
15443 that can be configured and used simultaneously by a camera device.<wbr/></p>
15444             </td>
15445
15446             <td class="entry_units">
15447             </td>
15448
15449             <td class="entry_range">
15450               <p>0 or 1.<wbr/></p>
15451             </td>
15452
15453             <td class="entry_tags">
15454               <ul class="entry_tags">
15455                   <li><a href="#tag_REPROC">REPROC</a></li>
15456               </ul>
15457             </td>
15458
15459           </tr>
15460           <tr class="entries_header">
15461             <th class="th_details" colspan="5">Details</th>
15462           </tr>
15463           <tr class="entry_cont">
15464             <td class="entry_details" colspan="5">
15465               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15466 <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
15467 input stream,<wbr/> there must be at least one output stream configured to to receive the
15468 reprocessed images.<wbr/></p>
15469 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15470 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15471 new sensor image will not be captured.<wbr/></p>
15472 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15473 stream image format will be PRIVATE,<wbr/> the associated output stream image format
15474 should be JPEG.<wbr/></p>
15475             </td>
15476           </tr>
15477
15478           <tr class="entries_header">
15479             <th class="th_details" colspan="5">HAL Implementation Details</th>
15480           </tr>
15481           <tr class="entry_cont">
15482             <td class="entry_details" colspan="5">
15483               <p>For the reprocessing flow and controls,<wbr/> see
15484 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15485             </td>
15486           </tr>
15487
15488           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15489            <!-- end of entry -->
15490         
15491                 
15492           <tr class="entry" id="static_android.request.pipelineMaxDepth">
15493             <td class="entry_name
15494              " rowspan="5">
15495               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15496             </td>
15497             <td class="entry_type">
15498                 <span class="entry_type_name">byte</span>
15499
15500               <span class="entry_type_visibility"> [public]</span>
15501
15502
15503               <span class="entry_type_hwlevel">[legacy] </span>
15504
15505
15506
15507
15508             </td> <!-- entry_type -->
15509
15510             <td class="entry_description">
15511               <p>Specifies the number of maximum pipeline stages a frame
15512 has to go through from when it's exposed to when it's available
15513 to the framework.<wbr/></p>
15514             </td>
15515
15516             <td class="entry_units">
15517             </td>
15518
15519             <td class="entry_range">
15520             </td>
15521
15522             <td class="entry_tags">
15523             </td>
15524
15525           </tr>
15526           <tr class="entries_header">
15527             <th class="th_details" colspan="5">Details</th>
15528           </tr>
15529           <tr class="entry_cont">
15530             <td class="entry_details" colspan="5">
15531               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15532 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15533 its own stages to do custom HW processing.<wbr/> Further stages may be
15534 added by SW processing.<wbr/></p>
15535 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15536 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15537 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15538 the max pipeline depth.<wbr/></p>
15539 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
15540 X frame intervals.<wbr/></p>
15541 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15542 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15543             </td>
15544           </tr>
15545
15546           <tr class="entries_header">
15547             <th class="th_details" colspan="5">HAL Implementation Details</th>
15548           </tr>
15549           <tr class="entry_cont">
15550             <td class="entry_details" colspan="5">
15551               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15552 max batch sizes may be larger than 1.<wbr/></p>
15553             </td>
15554           </tr>
15555
15556           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15557            <!-- end of entry -->
15558         
15559                 
15560           <tr class="entry" id="static_android.request.partialResultCount">
15561             <td class="entry_name
15562              " rowspan="3">
15563               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15564             </td>
15565             <td class="entry_type">
15566                 <span class="entry_type_name">int32</span>
15567
15568               <span class="entry_type_visibility"> [public]</span>
15569
15570
15571
15572
15573
15574
15575             </td> <!-- entry_type -->
15576
15577             <td class="entry_description">
15578               <p>Defines how many sub-components
15579 a result will be composed of.<wbr/></p>
15580             </td>
15581
15582             <td class="entry_units">
15583             </td>
15584
15585             <td class="entry_range">
15586               <p>&gt;= 1</p>
15587             </td>
15588
15589             <td class="entry_tags">
15590             </td>
15591
15592           </tr>
15593           <tr class="entries_header">
15594             <th class="th_details" colspan="5">Details</th>
15595           </tr>
15596           <tr class="entry_cont">
15597             <td class="entry_details" colspan="5">
15598               <p>In order to combat the pipeline latency,<wbr/> partial results
15599 may be delivered to the application layer from the camera device as
15600 soon as they are available.<wbr/></p>
15601 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15602 results are not supported,<wbr/> and only the final TotalCaptureResult will
15603 be produced by the camera device.<wbr/></p>
15604 <p>A typical use case for this might be: after requesting an
15605 auto-focus (AF) lock the new AF state might be available 50%
15606 of the way through the pipeline.<wbr/>  The camera device could
15607 then immediately dispatch this state via a partial result to
15608 the application,<wbr/> and the rest of the metadata via later
15609 partial results.<wbr/></p>
15610             </td>
15611           </tr>
15612
15613
15614           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15615            <!-- end of entry -->
15616         
15617                 
15618           <tr class="entry" id="static_android.request.availableCapabilities">
15619             <td class="entry_name
15620              " rowspan="5">
15621               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15622             </td>
15623             <td class="entry_type">
15624                 <span class="entry_type_name entry_type_name_enum">byte</span>
15625                 <span class="entry_type_container">x</span>
15626
15627                 <span class="entry_type_array">
15628                   n
15629                 </span>
15630               <span class="entry_type_visibility"> [public]</span>
15631
15632
15633               <span class="entry_type_hwlevel">[legacy] </span>
15634
15635
15636
15637                 <ul class="entry_type_enum">
15638                   <li>
15639                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15640                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15641 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15642 supports.<wbr/></p>
15643 <p>This capability is listed by all normal devices,<wbr/> and
15644 indicates that the camera device has a feature set
15645 that's comparable to the baseline requirements for the
15646 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15647 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15648 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15649 not standard color output.<wbr/></p></span>
15650                   </li>
15651                   <li>
15652                     <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15653                     <span class="entry_type_enum_optional">[optional]</span>
15654                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15655 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15656 The camera device supports basic manual control of the sensor image
15657 acquisition related stages.<wbr/> This means the following controls are
15658 guaranteed to be supported:</p>
15659 <ul>
15660 <li>Manual frame duration control<ul>
15661 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15662 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15663 </ul>
15664 </li>
15665 <li>Manual exposure control<ul>
15666 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15667 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15668 </ul>
15669 </li>
15670 <li>Manual sensitivity control<ul>
15671 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15672 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15673 </ul>
15674 </li>
15675 <li>Manual lens control (if the lens is adjustable)<ul>
15676 <li>android.<wbr/>lens.<wbr/>*</li>
15677 </ul>
15678 </li>
15679 <li>Manual flash control (if a flash unit is present)<ul>
15680 <li>android.<wbr/>flash.<wbr/>*</li>
15681 </ul>
15682 </li>
15683 <li>Manual black level locking<ul>
15684 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15685 </ul>
15686 </li>
15687 <li>Auto exposure lock<ul>
15688 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15689 </ul>
15690 </li>
15691 </ul>
15692 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15693 device will accurately report the values applied by 3A in the
15694 result.<wbr/></p>
15695 <p>A given camera device may also support additional manual sensor controls,<wbr/>
15696 but this capability only covers the above list of controls.<wbr/></p>
15697 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15698 additionally return a min frame duration that is greater than
15699 zero for each supported size-format combination.<wbr/></p></span>
15700                   </li>
15701                   <li>
15702                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15703                     <span class="entry_type_enum_optional">[optional]</span>
15704                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15705 The camera device supports basic manual control of the image post-processing
15706 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15707 <ul>
15708 <li>
15709 <p>Manual tonemap control</p>
15710 <ul>
15711 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15712 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15713 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15714 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15715 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15716 </ul>
15717 </li>
15718 <li>
15719 <p>Manual white balance control</p>
15720 <ul>
15721 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15722 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15723 </ul>
15724 </li>
15725 <li>Manual lens shading map control<ul>
15726 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15727 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15728 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15729 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15730 </ul>
15731 </li>
15732 <li>Manual aberration correction control (if aberration correction is supported)<ul>
15733 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15734 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15735 </ul>
15736 </li>
15737 <li>Auto white balance lock<ul>
15738 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15739 </ul>
15740 </li>
15741 </ul>
15742 <p>If auto white balance is enabled,<wbr/> then the camera device
15743 will accurately report the values applied by AWB in the result.<wbr/></p>
15744 <p>A given camera device may also support additional post-processing
15745 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15746                   </li>
15747                   <li>
15748                     <span class="entry_type_enum_name">RAW</span>
15749                     <span class="entry_type_enum_optional">[optional]</span>
15750                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15751 metadata for interpreting them.<wbr/></p>
15752 <p>Devices supporting the RAW capability allow both for
15753 saving DNG files,<wbr/> and for direct application processing of
15754 raw sensor images.<wbr/></p>
15755 <ul>
15756 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15757 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15758   will match either the value in
15759   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15760   <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>
15761 <li>All DNG-related optional metadata entries are provided
15762   by the camera device.<wbr/></li>
15763 </ul></span>
15764                   </li>
15765                   <li>
15766                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15767                     <span class="entry_type_enum_optional">[optional]</span>
15768                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15769 <ul>
15770 <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>
15771 <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/>
15772   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15773   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>
15774 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15775   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>
15776 <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>
15777 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15778   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15779 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15780   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15781   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15782 <li>The maximum available resolution for PRIVATE streams
15783   (both input/<wbr/>output) will match the maximum available
15784   resolution of JPEG streams.<wbr/></li>
15785 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15786 <li>Only below controls are effective for reprocessing requests and
15787   will be present in capture results,<wbr/> other controls in reprocess
15788   requests will be ignored by the camera device.<wbr/><ul>
15789 <li>android.<wbr/>jpeg.<wbr/>*</li>
15790 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15791 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15792 </ul>
15793 </li>
15794 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15795   <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>
15796 </ul></span>
15797                   </li>
15798                   <li>
15799                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15800                     <span class="entry_type_enum_optional">[optional]</span>
15801                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15802 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15803 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15804 <p>The values reported for the following controls are guaranteed to be available
15805 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15806 <ul>
15807 <li>Exposure control<ul>
15808 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15809 </ul>
15810 </li>
15811 <li>Sensitivity control<ul>
15812 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15813 </ul>
15814 </li>
15815 <li>Lens controls (if the lens is adjustable)<ul>
15816 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15817 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15818 </ul>
15819 </li>
15820 </ul>
15821 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15822 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15823                   </li>
15824                   <li>
15825                     <span class="entry_type_enum_name">BURST_CAPTURE</span>
15826                     <span class="entry_type_enum_optional">[optional]</span>
15827                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15828 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15829 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15830 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15831 resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15832 <p>More specifically,<wbr/> this means that a size matching the camera device's active array
15833 size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15834 with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15835 &lt;= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
15836 lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15837 for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/>  If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15838 then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
15839 least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15840 s.<wbr/></p>
15841 <p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
15842 as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15843 <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15844 as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
15845 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
15846 and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
15847 are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15848 consistent image output.<wbr/></p></span>
15849                   </li>
15850                   <li>
15851                     <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15852                     <span class="entry_type_enum_optional">[optional]</span>
15853                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15854 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15855 following:</p>
15856 <ul>
15857 <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>
15858 <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 format,<wbr/> that is,<wbr/>
15859   YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15860   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15861   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15862 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15863   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>
15864 <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>
15865 <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 drop
15866   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15867 <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
15868   <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>
15869 <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
15870   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15871 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15872 <li>Only the below controls are effective for reprocessing requests and will be present
15873   in capture results.<wbr/> The reprocess requests are from the original capture results that
15874   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>
15875   output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15876   camera device.<wbr/><ul>
15877 <li>android.<wbr/>jpeg.<wbr/>*</li>
15878 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15879 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15880 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15881 </ul>
15882 </li>
15883 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15884   <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>
15885 </ul></span>
15886                   </li>
15887                   <li>
15888                     <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15889                     <span class="entry_type_enum_optional">[optional]</span>
15890                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15891 <p>This capability requires the camera device to support the following:</p>
15892 <ul>
15893 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15894 <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 optionally supported as an
15895   output format.<wbr/></li>
15896 <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/>
15897   will list the following calibration entries in both
15898   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15899   <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15900 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15901 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15902 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15903 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15904 </ul>
15905 </li>
15906 <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>
15907 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15908   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15909   format.<wbr/></li>
15910 </ul>
15911 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15912 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15913 should be accounted for (see
15914 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15915 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15916 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15917 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15918 rate,<wbr/> including depth stall time.<wbr/></p></span>
15919                   </li>
15920                   <li>
15921                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15922                     <span class="entry_type_enum_optional">[optional]</span>
15923                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15924 use case.<wbr/> The camera device will support high speed capture session created by
15925 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15926 only accepts high speed request lists created by
15927 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15928 <p>A camera device can still support high speed video streaming by advertising the high speed
15929 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 normal
15930 capture request per frame control and synchronization requirements will apply to
15931 the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15932 the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15933 is only targeted at high speed video recording.<wbr/></p>
15934 <p>The supported high speed video sizes and fps ranges are specified in
15935 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15936 To get desired output frame rates,<wbr/> the application is only allowed to select video size
15937 and FPS range combinations provided by
15938 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15939 The 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>
15940 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15941 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15942 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15943 and post-processing parameters is possible.<wbr/> All other controls operate the
15944 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15945 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15946 <ul>
15947 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15948 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15949 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15950 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15951 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15952 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15953 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15954 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15955 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15956 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15957 </ul>
15958 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15959 <ul>
15960 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15961 work since aeMode is ON)</li>
15962 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15963 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15964 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15965 </ul>
15966 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15967 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15968 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15969 the application need check if the video encoder is capable of supporting the
15970 high frame rate for a given video size,<wbr/> or it will end up with lower recording
15971 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15972 rate will be bounded by the screen refresh rate.<wbr/></p>
15973 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
15974 (preview and recording surfaces)
15975 in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15976 <ul>
15977 <li>The application creates a camera capture session with no more than 2 surfaces via
15978 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15979 targeted surfaces must be preview surface (either from
15980 <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
15981 recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15982 <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15983 <li>The stream sizes are selected from the sizes reported by
15984 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15985 <li>The FPS ranges are selected from
15986 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15987 </ul>
15988 <p>When above conditions are NOT satistied,<wbr/>
15989 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15990 will fail.<wbr/></p>
15991 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15992 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15993 the application avoids unnecessary maximum target FPS changes as much as possible
15994 during high speed streaming.<wbr/></p></span>
15995                   </li>
15996                 </ul>
15997
15998             </td> <!-- entry_type -->
15999
16000             <td class="entry_description">
16001               <p>List of capabilities that this camera device
16002 advertises as fully supporting.<wbr/></p>
16003             </td>
16004
16005             <td class="entry_units">
16006             </td>
16007
16008             <td class="entry_range">
16009             </td>
16010
16011             <td class="entry_tags">
16012             </td>
16013
16014           </tr>
16015           <tr class="entries_header">
16016             <th class="th_details" colspan="5">Details</th>
16017           </tr>
16018           <tr class="entry_cont">
16019             <td class="entry_details" colspan="5">
16020               <p>A capability is a contract that the camera device makes in order
16021 to be able to satisfy one or more use cases.<wbr/></p>
16022 <p>Listing a capability guarantees that the whole set of features
16023 required to support a common use will all be available.<wbr/></p>
16024 <p>Using a subset of the functionality provided by an unsupported
16025 capability may be possible on a specific camera device implementation;
16026 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16027 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16028 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16029 <p>The following capabilities are guaranteed to be available on
16030 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16031 <ul>
16032 <li>MANUAL_<wbr/>SENSOR</li>
16033 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16034 </ul>
16035 <p>Other capabilities may be available on either FULL or LIMITED
16036 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16037             </td>
16038           </tr>
16039
16040           <tr class="entries_header">
16041             <th class="th_details" colspan="5">HAL Implementation Details</th>
16042           </tr>
16043           <tr class="entry_cont">
16044             <td class="entry_details" colspan="5">
16045               <p>Additional constraint details per-capability will be available
16046 in the Compatibility Test Suite.<wbr/></p>
16047 <p>Minimum baseline requirements required for the
16048 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16049 Instead refer to "BC" tags and the camera CTS tests in the
16050 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16051 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16052 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16053 request and the result in order to be considered to be
16054 capability-compliant.<wbr/></p>
16055 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16056 then exposure time must be configurable via the request <em>and</em>
16057 the actual exposure applied must be available via
16058 the result.<wbr/></p>
16059 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16060 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16061 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16062 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16063 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16064 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16065 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16066 YUV_<wbr/>REPROCESSING capability must support the
16067 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16068 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16069 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16070 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16071 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16072 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16073 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16074 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16075 DEPTH).<wbr/></p>
16076             </td>
16077           </tr>
16078
16079           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16080            <!-- end of entry -->
16081         
16082                 
16083           <tr class="entry" id="static_android.request.availableRequestKeys">
16084             <td class="entry_name
16085              " rowspan="5">
16086               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16087             </td>
16088             <td class="entry_type">
16089                 <span class="entry_type_name">int32</span>
16090                 <span class="entry_type_container">x</span>
16091
16092                 <span class="entry_type_array">
16093                   n
16094                 </span>
16095               <span class="entry_type_visibility"> [ndk_public]</span>
16096
16097
16098               <span class="entry_type_hwlevel">[legacy] </span>
16099
16100
16101
16102
16103             </td> <!-- entry_type -->
16104
16105             <td class="entry_description">
16106               <p>A list of all keys that the camera device has available
16107 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16108             </td>
16109
16110             <td class="entry_units">
16111             </td>
16112
16113             <td class="entry_range">
16114             </td>
16115
16116             <td class="entry_tags">
16117             </td>
16118
16119           </tr>
16120           <tr class="entries_header">
16121             <th class="th_details" colspan="5">Details</th>
16122           </tr>
16123           <tr class="entry_cont">
16124             <td class="entry_details" colspan="5">
16125               <p>Attempting to set a key into a CaptureRequest that is not
16126 listed here will result in an invalid request and will be rejected
16127 by the camera device.<wbr/></p>
16128 <p>This field can be used to query the feature set of a camera device
16129 at a more granular level than capabilities.<wbr/> This is especially
16130 important for optional keys that are not listed under any capability
16131 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16132             </td>
16133           </tr>
16134
16135           <tr class="entries_header">
16136             <th class="th_details" colspan="5">HAL Implementation Details</th>
16137           </tr>
16138           <tr class="entry_cont">
16139             <td class="entry_details" colspan="5">
16140               <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16141 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16142 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16143 vendor extensions API and not against this field.<wbr/></p>
16144 <p>The HAL must not consume any request tags that are not listed either
16145 here or in the vendor tag list.<wbr/></p>
16146 <p>The public camera2 API will always make the vendor tags visible
16147 via
16148 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16149             </td>
16150           </tr>
16151
16152           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16153            <!-- end of entry -->
16154         
16155                 
16156           <tr class="entry" id="static_android.request.availableResultKeys">
16157             <td class="entry_name
16158              " rowspan="5">
16159               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16160             </td>
16161             <td class="entry_type">
16162                 <span class="entry_type_name">int32</span>
16163                 <span class="entry_type_container">x</span>
16164
16165                 <span class="entry_type_array">
16166                   n
16167                 </span>
16168               <span class="entry_type_visibility"> [ndk_public]</span>
16169
16170
16171               <span class="entry_type_hwlevel">[legacy] </span>
16172
16173
16174
16175
16176             </td> <!-- entry_type -->
16177
16178             <td class="entry_description">
16179               <p>A list of all keys that the camera device has available
16180 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
16181             </td>
16182
16183             <td class="entry_units">
16184             </td>
16185
16186             <td class="entry_range">
16187             </td>
16188
16189             <td class="entry_tags">
16190             </td>
16191
16192           </tr>
16193           <tr class="entries_header">
16194             <th class="th_details" colspan="5">Details</th>
16195           </tr>
16196           <tr class="entry_cont">
16197             <td class="entry_details" colspan="5">
16198               <p>Attempting to get a key from a CaptureResult that is not
16199 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16200 a CaptureResult that is listed here will generally never return a <code>null</code>
16201 value.<wbr/></p>
16202 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16203 <ul>
16204 <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>
16205 </ul>
16206 <p>(Those sometimes-null keys will nevertheless be listed here
16207 if they are available.<wbr/>)</p>
16208 <p>This field can be used to query the feature set of a camera device
16209 at a more granular level than capabilities.<wbr/> This is especially
16210 important for optional keys that are not listed under any capability
16211 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16212             </td>
16213           </tr>
16214
16215           <tr class="entries_header">
16216             <th class="th_details" colspan="5">HAL Implementation Details</th>
16217           </tr>
16218           <tr class="entry_cont">
16219             <td class="entry_details" colspan="5">
16220               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16221 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16222 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16223 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16224 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16225 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16226 vendor extensions API and not against this field.<wbr/></p>
16227 <p>The HAL must not produce any result tags that are not listed either
16228 here or in the vendor tag list.<wbr/></p>
16229 <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>
16230             </td>
16231           </tr>
16232
16233           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16234            <!-- end of entry -->
16235         
16236                 
16237           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16238             <td class="entry_name
16239              " rowspan="5">
16240               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16241             </td>
16242             <td class="entry_type">
16243                 <span class="entry_type_name">int32</span>
16244                 <span class="entry_type_container">x</span>
16245
16246                 <span class="entry_type_array">
16247                   n
16248                 </span>
16249               <span class="entry_type_visibility"> [ndk_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>A list of all keys that the camera device has available
16261 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
16262             </td>
16263
16264             <td class="entry_units">
16265             </td>
16266
16267             <td class="entry_range">
16268             </td>
16269
16270             <td class="entry_tags">
16271             </td>
16272
16273           </tr>
16274           <tr class="entries_header">
16275             <th class="th_details" colspan="5">Details</th>
16276           </tr>
16277           <tr class="entry_cont">
16278             <td class="entry_details" colspan="5">
16279               <p>This entry follows the same rules as
16280 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
16281 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
16282 details.<wbr/></p>
16283             </td>
16284           </tr>
16285
16286           <tr class="entries_header">
16287             <th class="th_details" colspan="5">HAL Implementation Details</th>
16288           </tr>
16289           <tr class="entry_cont">
16290             <td class="entry_details" colspan="5">
16291               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
16292 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16293 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16294 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16295 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16296 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16297 vendor extensions API and not against this field.<wbr/></p>
16298 <p>The HAL must not have any tags in its static info that are not listed
16299 either here or in the vendor tag list.<wbr/></p>
16300 <p>The public camera2 API will always make the vendor tags visible
16301 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
16302             </td>
16303           </tr>
16304
16305           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16306            <!-- end of entry -->
16307         
16308         
16309
16310       <!-- end of kind -->
16311       </tbody>
16312       <tr><td colspan="6" class="kind">dynamic</td></tr>
16313
16314       <thead class="entries_header">
16315         <tr>
16316           <th class="th_name">Property Name</th>
16317           <th class="th_type">Type</th>
16318           <th class="th_description">Description</th>
16319           <th class="th_units">Units</th>
16320           <th class="th_range">Range</th>
16321           <th class="th_tags">Tags</th>
16322         </tr>
16323       </thead>
16324
16325       <tbody>
16326
16327         
16328
16329         
16330
16331         
16332
16333         
16334
16335                 
16336           <tr class="entry" id="dynamic_android.request.frameCount">
16337             <td class="entry_name
16338                 entry_name_deprecated
16339              " rowspan="3">
16340               android.<wbr/>request.<wbr/>frame<wbr/>Count
16341             </td>
16342             <td class="entry_type">
16343                 <span class="entry_type_name">int32</span>
16344
16345               <span class="entry_type_visibility"> [hidden]</span>
16346
16347
16348
16349               <span class="entry_type_deprecated">[deprecated] </span>
16350
16351
16352
16353             </td> <!-- entry_type -->
16354
16355             <td class="entry_description">
16356               <p>A frame counter set by the framework.<wbr/> This value monotonically
16357 increases with every new result (that is,<wbr/> each new result has a unique
16358 frameCount value).<wbr/></p>
16359             </td>
16360
16361             <td class="entry_units">
16362               count of frames
16363             </td>
16364
16365             <td class="entry_range">
16366               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16367               <p>&gt; 0</p>
16368             </td>
16369
16370             <td class="entry_tags">
16371             </td>
16372
16373           </tr>
16374           <tr class="entries_header">
16375             <th class="th_details" colspan="5">Details</th>
16376           </tr>
16377           <tr class="entry_cont">
16378             <td class="entry_details" colspan="5">
16379               <p>Reset on release()</p>
16380             </td>
16381           </tr>
16382
16383
16384           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16385            <!-- end of entry -->
16386         
16387                 
16388           <tr class="entry" id="dynamic_android.request.id">
16389             <td class="entry_name
16390              " rowspan="1">
16391               android.<wbr/>request.<wbr/>id
16392             </td>
16393             <td class="entry_type">
16394                 <span class="entry_type_name">int32</span>
16395
16396               <span class="entry_type_visibility"> [hidden]</span>
16397
16398
16399
16400
16401
16402
16403             </td> <!-- entry_type -->
16404
16405             <td class="entry_description">
16406               <p>An application-specified ID for the current
16407 request.<wbr/> Must be maintained unchanged in output
16408 frame</p>
16409             </td>
16410
16411             <td class="entry_units">
16412               arbitrary integer assigned by application
16413             </td>
16414
16415             <td class="entry_range">
16416               <p>Any int</p>
16417             </td>
16418
16419             <td class="entry_tags">
16420               <ul class="entry_tags">
16421                   <li><a href="#tag_V1">V1</a></li>
16422               </ul>
16423             </td>
16424
16425           </tr>
16426
16427
16428           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16429            <!-- end of entry -->
16430         
16431                 
16432           <tr class="entry" id="dynamic_android.request.metadataMode">
16433             <td class="entry_name
16434              " rowspan="1">
16435               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16436             </td>
16437             <td class="entry_type">
16438                 <span class="entry_type_name entry_type_name_enum">byte</span>
16439
16440               <span class="entry_type_visibility"> [system]</span>
16441
16442
16443
16444
16445
16446                 <ul class="entry_type_enum">
16447                   <li>
16448                     <span class="entry_type_enum_name">NONE</span>
16449                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16450 for application-bound buffer data.<wbr/> If no
16451 application-bound streams exist,<wbr/> no frame should be
16452 placed in the output frame queue.<wbr/> If such streams
16453 exist,<wbr/> a frame should be placed on the output queue
16454 with null metadata but with the necessary output buffer
16455 information.<wbr/> Timestamp information should still be
16456 included with any output stream buffers</p></span>
16457                   </li>
16458                   <li>
16459                     <span class="entry_type_enum_name">FULL</span>
16460                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16461 only be produced if they are separately
16462 enabled</p></span>
16463                   </li>
16464                 </ul>
16465
16466             </td> <!-- entry_type -->
16467
16468             <td class="entry_description">
16469               <p>How much metadata to produce on
16470 output</p>
16471             </td>
16472
16473             <td class="entry_units">
16474             </td>
16475
16476             <td class="entry_range">
16477             </td>
16478
16479             <td class="entry_tags">
16480               <ul class="entry_tags">
16481                   <li><a href="#tag_FUTURE">FUTURE</a></li>
16482               </ul>
16483             </td>
16484
16485           </tr>
16486
16487
16488           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16489            <!-- end of entry -->
16490         
16491                 
16492           <tr class="entry" id="dynamic_android.request.outputStreams">
16493             <td class="entry_name
16494                 entry_name_deprecated
16495              " rowspan="3">
16496               android.<wbr/>request.<wbr/>output<wbr/>Streams
16497             </td>
16498             <td class="entry_type">
16499                 <span class="entry_type_name">int32</span>
16500                 <span class="entry_type_container">x</span>
16501
16502                 <span class="entry_type_array">
16503                   n
16504                 </span>
16505               <span class="entry_type_visibility"> [system]</span>
16506
16507
16508
16509               <span class="entry_type_deprecated">[deprecated] </span>
16510
16511
16512
16513             </td> <!-- entry_type -->
16514
16515             <td class="entry_description">
16516               <p>Lists which camera output streams image data
16517 from this capture must be sent to</p>
16518             </td>
16519
16520             <td class="entry_units">
16521               List of camera stream IDs
16522             </td>
16523
16524             <td class="entry_range">
16525               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16526               <p>List must only include streams that have been
16527 created</p>
16528             </td>
16529
16530             <td class="entry_tags">
16531               <ul class="entry_tags">
16532                   <li><a href="#tag_HAL2">HAL2</a></li>
16533               </ul>
16534             </td>
16535
16536           </tr>
16537           <tr class="entries_header">
16538             <th class="th_details" colspan="5">Details</th>
16539           </tr>
16540           <tr class="entry_cont">
16541             <td class="entry_details" colspan="5">
16542               <p>If no output streams are listed,<wbr/> then the image
16543 data should simply be discarded.<wbr/> The image data must
16544 still be captured for metadata and statistics production,<wbr/>
16545 and the lens and flash must operate as requested.<wbr/></p>
16546             </td>
16547           </tr>
16548
16549
16550           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16551            <!-- end of entry -->
16552         
16553                 
16554           <tr class="entry" id="dynamic_android.request.pipelineDepth">
16555             <td class="entry_name
16556              " rowspan="5">
16557               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16558             </td>
16559             <td class="entry_type">
16560                 <span class="entry_type_name">byte</span>
16561
16562               <span class="entry_type_visibility"> [public]</span>
16563
16564
16565               <span class="entry_type_hwlevel">[legacy] </span>
16566
16567
16568
16569
16570             </td> <!-- entry_type -->
16571
16572             <td class="entry_description">
16573               <p>Specifies the number of pipeline stages the frame went
16574 through from when it was exposed to when the final completed result
16575 was available to the framework.<wbr/></p>
16576             </td>
16577
16578             <td class="entry_units">
16579             </td>
16580
16581             <td class="entry_range">
16582               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16583             </td>
16584
16585             <td class="entry_tags">
16586             </td>
16587
16588           </tr>
16589           <tr class="entries_header">
16590             <th class="th_details" colspan="5">Details</th>
16591           </tr>
16592           <tr class="entry_cont">
16593             <td class="entry_details" colspan="5">
16594               <p>Depending on what settings are used in the request,<wbr/> and
16595 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16596 and some pipeline stages skipped.<wbr/></p>
16597 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16598             </td>
16599           </tr>
16600
16601           <tr class="entries_header">
16602             <th class="th_details" colspan="5">HAL Implementation Details</th>
16603           </tr>
16604           <tr class="entry_cont">
16605             <td class="entry_details" colspan="5">
16606               <p>This value must always represent the accurate count of how many
16607 pipeline stages were actually used.<wbr/></p>
16608             </td>
16609           </tr>
16610
16611           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16612            <!-- end of entry -->
16613         
16614         
16615
16616       <!-- end of kind -->
16617       </tbody>
16618
16619   <!-- end of section -->
16620   <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16621
16622
16623       <tr><td colspan="6" class="kind">controls</td></tr>
16624
16625       <thead class="entries_header">
16626         <tr>
16627           <th class="th_name">Property Name</th>
16628           <th class="th_type">Type</th>
16629           <th class="th_description">Description</th>
16630           <th class="th_units">Units</th>
16631           <th class="th_range">Range</th>
16632           <th class="th_tags">Tags</th>
16633         </tr>
16634       </thead>
16635
16636       <tbody>
16637
16638         
16639
16640         
16641
16642         
16643
16644         
16645
16646                 
16647           <tr class="entry" id="controls_android.scaler.cropRegion">
16648             <td class="entry_name
16649              " rowspan="5">
16650               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16651             </td>
16652             <td class="entry_type">
16653                 <span class="entry_type_name">int32</span>
16654                 <span class="entry_type_container">x</span>
16655
16656                 <span class="entry_type_array">
16657                   4
16658                 </span>
16659               <span class="entry_type_visibility"> [public as rectangle]</span>
16660
16661
16662               <span class="entry_type_hwlevel">[legacy] </span>
16663
16664
16665
16666
16667             </td> <!-- entry_type -->
16668
16669             <td class="entry_description">
16670               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16671             </td>
16672
16673             <td class="entry_units">
16674               Pixel coordinates relative to
16675           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16676             </td>
16677
16678             <td class="entry_range">
16679             </td>
16680
16681             <td class="entry_tags">
16682               <ul class="entry_tags">
16683                   <li><a href="#tag_BC">BC</a></li>
16684               </ul>
16685             </td>
16686
16687           </tr>
16688           <tr class="entries_header">
16689             <th class="th_details" colspan="5">Details</th>
16690           </tr>
16691           <tr class="entry_cont">
16692             <td class="entry_details" colspan="5">
16693               <p>This control can be used to implement digital zoom.<wbr/></p>
16694 <p>The crop region coordinate system is based off
16695 <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
16696 top-left corner of the sensor active array.<wbr/></p>
16697 <p>Output streams use this rectangle to produce their output,<wbr/>
16698 cropping to a smaller region if necessary to maintain the
16699 stream's aspect ratio,<wbr/> then scaling the sensor input to
16700 match the output's configured resolution.<wbr/></p>
16701 <p>The crop region is applied after the RAW to other color
16702 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16703 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16704 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16705 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
16706 be done to maximize the final pixel area of the stream.<wbr/></p>
16707 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16708 ratio,<wbr/> then 4:3 streams will use the exact crop
16709 region.<wbr/> 16:9 streams will further crop vertically
16710 (letterbox).<wbr/></p>
16711 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16712 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16713 streams will match exactly.<wbr/> These additional crops will
16714 be centered within the crop region.<wbr/></p>
16715 <p>The width and height of the crop region cannot
16716 be set to be smaller than
16717 <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
16718 <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>
16719 <p>The camera device may adjust the crop region to account
16720 for rounding and other hardware requirements; the final
16721 crop region used will be included in the output capture
16722 result.<wbr/></p>
16723             </td>
16724           </tr>
16725
16726           <tr class="entries_header">
16727             <th class="th_details" colspan="5">HAL Implementation Details</th>
16728           </tr>
16729           <tr class="entry_cont">
16730             <td class="entry_details" colspan="5">
16731               <p>The output streams must maintain square pixels at all
16732 times,<wbr/> no matter what the relative aspect ratios of the
16733 crop region and the stream are.<wbr/>  Negative values for
16734 corner are allowed for raw output if full pixel array is
16735 larger than active pixel array.<wbr/> Width and height may be
16736 rounded to nearest larger supportable width,<wbr/> especially
16737 for raw output,<wbr/> where only a few fixed scales may be
16738 possible.<wbr/></p>
16739 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16740 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16741 <ul>
16742 <li>
16743 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16744 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16745 <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>
16746 <ol>
16747 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16748 cropped pixel area by (tx,<wbr/> ty),<wbr/>
16749 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16750 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16751 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16752 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16753 <li>Scale the width and height of requested cropRegion with scaling factor of
16754 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
16755 respectively.<wbr/>
16756 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16757 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16758 follow the general cropping rule for this new cropRegion and effective active
16759 array size.<wbr/></li>
16760 </ol>
16761 </li>
16762 <li>
16763 <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/>
16764 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16765 The reported cropRegion may be slightly different with the requested cropRegion since
16766 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16767 hardware limitations.<wbr/></p>
16768 </li>
16769 </ul>
16770 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16771             </td>
16772           </tr>
16773
16774           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16775            <!-- end of entry -->
16776         
16777         
16778
16779       <!-- end of kind -->
16780       </tbody>
16781       <tr><td colspan="6" class="kind">static</td></tr>
16782
16783       <thead class="entries_header">
16784         <tr>
16785           <th class="th_name">Property Name</th>
16786           <th class="th_type">Type</th>
16787           <th class="th_description">Description</th>
16788           <th class="th_units">Units</th>
16789           <th class="th_range">Range</th>
16790           <th class="th_tags">Tags</th>
16791         </tr>
16792       </thead>
16793
16794       <tbody>
16795
16796         
16797
16798         
16799
16800         
16801
16802         
16803
16804                 
16805           <tr class="entry" id="static_android.scaler.availableFormats">
16806             <td class="entry_name
16807                 entry_name_deprecated
16808              " rowspan="5">
16809               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16810             </td>
16811             <td class="entry_type">
16812                 <span class="entry_type_name entry_type_name_enum">int32</span>
16813                 <span class="entry_type_container">x</span>
16814
16815                 <span class="entry_type_array">
16816                   n
16817                 </span>
16818               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16819
16820
16821
16822               <span class="entry_type_deprecated">[deprecated] </span>
16823
16824
16825                 <ul class="entry_type_enum">
16826                   <li>
16827                     <span class="entry_type_enum_name">RAW16</span>
16828                     <span class="entry_type_enum_optional">[optional]</span>
16829                     <span class="entry_type_enum_value">0x20</span>
16830                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16831 buffers with 16-bit pixels.<wbr/></p>
16832 <p>Buffers of this format are typically expected to have a
16833 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16834 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16835 CFAs that are not representable by a format in
16836 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16837 use this format.<wbr/></p>
16838 <p>Buffers of this format will also follow the constraints given for
16839 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16840 <p>This format is intended to give users access to the full contents
16841 of the buffers coming directly from the image sensor prior to any
16842 cropping or scaling operations,<wbr/> and all coordinate systems for
16843 metadata used for this format are relative to the size of the
16844 active region of the image sensor before any geometric distortion
16845 correction has been applied (i.<wbr/>e.<wbr/>
16846 <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
16847 dimensions for this format are limited to the full dimensions of
16848 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
16849 <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
16850 only supported output size).<wbr/></p>
16851 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16852 the full set of performance guarantees.<wbr/></p></span>
16853                   </li>
16854                   <li>
16855                     <span class="entry_type_enum_name">RAW_OPAQUE</span>
16856                     <span class="entry_type_enum_optional">[optional]</span>
16857                     <span class="entry_type_enum_value">0x24</span>
16858                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
16859 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
16860 as referred in public API) is a format for raw image buffers
16861 coming from an image sensor.<wbr/></p>
16862 <p>The actual structure of buffers of this format is
16863 platform-specific,<wbr/> but must follow several constraints:</p>
16864 <ol>
16865 <li>No image post-processing operations may have been applied to
16866 buffers of this type.<wbr/> These buffers contain raw image data coming
16867 directly from the image sensor.<wbr/></li>
16868 <li>If a buffer of this format is passed to the camera device for
16869 reprocessing,<wbr/> the resulting images will be identical to the images
16870 produced if the buffer had come directly from the sensor and was
16871 processed with the same settings.<wbr/></li>
16872 </ol>
16873 <p>The intended use for this format is to allow access to the native
16874 raw format buffers coming directly from the camera sensor without
16875 any additional conversions or decrease in framerate.<wbr/></p>
16876 <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
16877 performance guarantees.<wbr/></p></span>
16878                   </li>
16879                   <li>
16880                     <span class="entry_type_enum_name">YV12</span>
16881                     <span class="entry_type_enum_optional">[optional]</span>
16882                     <span class="entry_type_enum_value">0x32315659</span>
16883                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16884                   </li>
16885                   <li>
16886                     <span class="entry_type_enum_name">YCrCb_420_SP</span>
16887                     <span class="entry_type_enum_optional">[optional]</span>
16888                     <span class="entry_type_enum_value">0x11</span>
16889                     <span class="entry_type_enum_notes"><p>NV21</p></span>
16890                   </li>
16891                   <li>
16892                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16893                     <span class="entry_type_enum_value">0x22</span>
16894                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16895                   </li>
16896                   <li>
16897                     <span class="entry_type_enum_name">YCbCr_420_888</span>
16898                     <span class="entry_type_enum_value">0x23</span>
16899                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16900                   </li>
16901                   <li>
16902                     <span class="entry_type_enum_name">BLOB</span>
16903                     <span class="entry_type_enum_value">0x21</span>
16904                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16905                   </li>
16906                 </ul>
16907
16908             </td> <!-- entry_type -->
16909
16910             <td class="entry_description">
16911               <p>The list of image formats that are supported by this
16912 camera device for output streams.<wbr/></p>
16913             </td>
16914
16915             <td class="entry_units">
16916             </td>
16917
16918             <td class="entry_range">
16919               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16920             </td>
16921
16922             <td class="entry_tags">
16923               <ul class="entry_tags">
16924                   <li><a href="#tag_BC">BC</a></li>
16925               </ul>
16926             </td>
16927
16928           </tr>
16929           <tr class="entries_header">
16930             <th class="th_details" colspan="5">Details</th>
16931           </tr>
16932           <tr class="entry_cont">
16933             <td class="entry_details" colspan="5">
16934               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16935 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16936             </td>
16937           </tr>
16938
16939           <tr class="entries_header">
16940             <th class="th_details" colspan="5">HAL Implementation Details</th>
16941           </tr>
16942           <tr class="entry_cont">
16943             <td class="entry_details" colspan="5">
16944               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16945 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16946 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16947 gralloc module will select a format based on the usage flags provided
16948 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16949 usually used by preview and recording streams,<wbr/> where the application doesn't
16950 need access the image data.<wbr/></p>
16951 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16952 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16953 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16954 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16955 recommended that any information used by the camera device when
16956 processing images is fully expressed by the result metadata
16957 for that image buffer.<wbr/></p>
16958             </td>
16959           </tr>
16960
16961           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16962            <!-- end of entry -->
16963         
16964                 
16965           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16966             <td class="entry_name
16967                 entry_name_deprecated
16968              " rowspan="3">
16969               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16970             </td>
16971             <td class="entry_type">
16972                 <span class="entry_type_name">int64</span>
16973                 <span class="entry_type_container">x</span>
16974
16975                 <span class="entry_type_array">
16976                   n
16977                 </span>
16978               <span class="entry_type_visibility"> [hidden]</span>
16979
16980
16981
16982               <span class="entry_type_deprecated">[deprecated] </span>
16983
16984
16985
16986             </td> <!-- entry_type -->
16987
16988             <td class="entry_description">
16989               <p>The minimum frame duration that is supported
16990 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16991             </td>
16992
16993             <td class="entry_units">
16994               Nanoseconds
16995             </td>
16996
16997             <td class="entry_range">
16998               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16999               <p>TODO: Remove property.<wbr/></p>
17000             </td>
17001
17002             <td class="entry_tags">
17003               <ul class="entry_tags">
17004                   <li><a href="#tag_BC">BC</a></li>
17005               </ul>
17006             </td>
17007
17008           </tr>
17009           <tr class="entries_header">
17010             <th class="th_details" colspan="5">Details</th>
17011           </tr>
17012           <tr class="entry_cont">
17013             <td class="entry_details" colspan="5">
17014               <p>This corresponds to the minimum steady-state frame duration when only
17015 that JPEG stream is active and captured in a burst,<wbr/> with all
17016 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17017 <p>When multiple streams are configured,<wbr/> the minimum
17018 frame duration will be &gt;= max(individual stream min
17019 durations)</p>
17020             </td>
17021           </tr>
17022
17023
17024           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17025            <!-- end of entry -->
17026         
17027                 
17028           <tr class="entry" id="static_android.scaler.availableJpegSizes">
17029             <td class="entry_name
17030                 entry_name_deprecated
17031              " rowspan="5">
17032               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17033             </td>
17034             <td class="entry_type">
17035                 <span class="entry_type_name">int32</span>
17036                 <span class="entry_type_container">x</span>
17037
17038                 <span class="entry_type_array">
17039                   n x 2
17040                 </span>
17041               <span class="entry_type_visibility"> [hidden as size]</span>
17042
17043
17044
17045               <span class="entry_type_deprecated">[deprecated] </span>
17046
17047
17048
17049             </td> <!-- entry_type -->
17050
17051             <td class="entry_description">
17052               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17053             </td>
17054
17055             <td class="entry_units">
17056             </td>
17057
17058             <td class="entry_range">
17059               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17060               <p>TODO: Remove property.<wbr/></p>
17061             </td>
17062
17063             <td class="entry_tags">
17064               <ul class="entry_tags">
17065                   <li><a href="#tag_BC">BC</a></li>
17066               </ul>
17067             </td>
17068
17069           </tr>
17070           <tr class="entries_header">
17071             <th class="th_details" colspan="5">Details</th>
17072           </tr>
17073           <tr class="entry_cont">
17074             <td class="entry_details" colspan="5">
17075               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17076 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>
17077             </td>
17078           </tr>
17079
17080           <tr class="entries_header">
17081             <th class="th_details" colspan="5">HAL Implementation Details</th>
17082           </tr>
17083           <tr class="entry_cont">
17084             <td class="entry_details" colspan="5">
17085               <p>The HAL must include sensor maximum resolution
17086 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17087 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17088             </td>
17089           </tr>
17090
17091           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17092            <!-- end of entry -->
17093         
17094                 
17095           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17096             <td class="entry_name
17097              " rowspan="3">
17098               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17099             </td>
17100             <td class="entry_type">
17101                 <span class="entry_type_name">float</span>
17102
17103               <span class="entry_type_visibility"> [public]</span>
17104
17105
17106               <span class="entry_type_hwlevel">[legacy] </span>
17107
17108
17109
17110
17111             </td> <!-- entry_type -->
17112
17113             <td class="entry_description">
17114               <p>The maximum ratio between both active area width
17115 and crop region width,<wbr/> and active area height and
17116 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17117             </td>
17118
17119             <td class="entry_units">
17120               Zoom scale factor
17121             </td>
17122
17123             <td class="entry_range">
17124               <p>&gt;=1</p>
17125             </td>
17126
17127             <td class="entry_tags">
17128               <ul class="entry_tags">
17129                   <li><a href="#tag_BC">BC</a></li>
17130               </ul>
17131             </td>
17132
17133           </tr>
17134           <tr class="entries_header">
17135             <th class="th_details" colspan="5">Details</th>
17136           </tr>
17137           <tr class="entry_cont">
17138             <td class="entry_details" colspan="5">
17139               <p>This represents the maximum amount of zooming possible by
17140 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
17141 window size.<wbr/></p>
17142 <p>Crop regions that have a width or height that is smaller
17143 than this ratio allows will be rounded up to the minimum
17144 allowed size by the camera device.<wbr/></p>
17145             </td>
17146           </tr>
17147
17148
17149           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17150            <!-- end of entry -->
17151         
17152                 
17153           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
17154             <td class="entry_name
17155                 entry_name_deprecated
17156              " rowspan="3">
17157               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
17158             </td>
17159             <td class="entry_type">
17160                 <span class="entry_type_name">int64</span>
17161                 <span class="entry_type_container">x</span>
17162
17163                 <span class="entry_type_array">
17164                   n
17165                 </span>
17166               <span class="entry_type_visibility"> [hidden]</span>
17167
17168
17169
17170               <span class="entry_type_deprecated">[deprecated] </span>
17171
17172
17173
17174             </td> <!-- entry_type -->
17175
17176             <td class="entry_description">
17177               <p>For each available processed output size (defined in
17178 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17179 minimum supportable frame duration for that size.<wbr/></p>
17180             </td>
17181
17182             <td class="entry_units">
17183               Nanoseconds
17184             </td>
17185
17186             <td class="entry_range">
17187               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17188             </td>
17189
17190             <td class="entry_tags">
17191               <ul class="entry_tags">
17192                   <li><a href="#tag_BC">BC</a></li>
17193               </ul>
17194             </td>
17195
17196           </tr>
17197           <tr class="entries_header">
17198             <th class="th_details" colspan="5">Details</th>
17199           </tr>
17200           <tr class="entry_cont">
17201             <td class="entry_details" colspan="5">
17202               <p>This should correspond to the frame duration when only that processed
17203 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17204 set to FAST.<wbr/></p>
17205 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
17206 be &gt;= max(individual stream min durations).<wbr/></p>
17207             </td>
17208           </tr>
17209
17210
17211           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17212            <!-- end of entry -->
17213         
17214                 
17215           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
17216             <td class="entry_name
17217                 entry_name_deprecated
17218              " rowspan="5">
17219               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
17220             </td>
17221             <td class="entry_type">
17222                 <span class="entry_type_name">int32</span>
17223                 <span class="entry_type_container">x</span>
17224
17225                 <span class="entry_type_array">
17226                   n x 2
17227                 </span>
17228               <span class="entry_type_visibility"> [hidden as size]</span>
17229
17230
17231
17232               <span class="entry_type_deprecated">[deprecated] </span>
17233
17234
17235
17236             </td> <!-- entry_type -->
17237
17238             <td class="entry_description">
17239               <p>The resolutions available for use with
17240 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
17241 platform opaque YUV/<wbr/>RGB streams to the GPU or video
17242 encoders.<wbr/></p>
17243             </td>
17244
17245             <td class="entry_units">
17246             </td>
17247
17248             <td class="entry_range">
17249               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17250             </td>
17251
17252             <td class="entry_tags">
17253               <ul class="entry_tags">
17254                   <li><a href="#tag_BC">BC</a></li>
17255               </ul>
17256             </td>
17257
17258           </tr>
17259           <tr class="entries_header">
17260             <th class="th_details" colspan="5">Details</th>
17261           </tr>
17262           <tr class="entry_cont">
17263             <td class="entry_details" colspan="5">
17264               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
17265 <p>For a given use case,<wbr/> the actual maximum supported resolution
17266 may be lower than what is listed here,<wbr/> depending on the destination
17267 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17268 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17269 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17270 can provide.<wbr/></p>
17271 <p>Please reference the documentation for the image data destination to
17272 check if it limits the maximum size for image data.<wbr/></p>
17273             </td>
17274           </tr>
17275
17276           <tr class="entries_header">
17277             <th class="th_details" colspan="5">HAL Implementation Details</th>
17278           </tr>
17279           <tr class="entry_cont">
17280             <td class="entry_details" colspan="5">
17281               <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/>
17282 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>
17283 and each below resolution if it is smaller than or equal to the sensor
17284 maximum resolution (if they are not listed in JPEG sizes already):</p>
17285 <ul>
17286 <li>240p (320 x 240)</li>
17287 <li>480p (640 x 480)</li>
17288 <li>720p (1280 x 720)</li>
17289 <li>1080p (1920 x 1080)</li>
17290 </ul>
17291 <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/>
17292 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
17293             </td>
17294           </tr>
17295
17296           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17297            <!-- end of entry -->
17298         
17299                 
17300           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
17301             <td class="entry_name
17302                 entry_name_deprecated
17303              " rowspan="3">
17304               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
17305             </td>
17306             <td class="entry_type">
17307                 <span class="entry_type_name">int64</span>
17308                 <span class="entry_type_container">x</span>
17309
17310                 <span class="entry_type_array">
17311                   n
17312                 </span>
17313               <span class="entry_type_visibility"> [system]</span>
17314
17315
17316
17317               <span class="entry_type_deprecated">[deprecated] </span>
17318
17319
17320
17321             </td> <!-- entry_type -->
17322
17323             <td class="entry_description">
17324               <p>For each available raw output size (defined in
17325 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
17326 supportable frame duration for that size.<wbr/></p>
17327             </td>
17328
17329             <td class="entry_units">
17330               Nanoseconds
17331             </td>
17332
17333             <td class="entry_range">
17334               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17335             </td>
17336
17337             <td class="entry_tags">
17338               <ul class="entry_tags">
17339                   <li><a href="#tag_BC">BC</a></li>
17340               </ul>
17341             </td>
17342
17343           </tr>
17344           <tr class="entries_header">
17345             <th class="th_details" colspan="5">Details</th>
17346           </tr>
17347           <tr class="entry_cont">
17348             <td class="entry_details" colspan="5">
17349               <p>Should correspond to the frame duration when only the raw stream is
17350 active.<wbr/></p>
17351 <p>When multiple streams are configured,<wbr/> the minimum
17352 frame duration will be &gt;= max(individual stream min
17353 durations)</p>
17354             </td>
17355           </tr>
17356
17357
17358           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17359            <!-- end of entry -->
17360         
17361                 
17362           <tr class="entry" id="static_android.scaler.availableRawSizes">
17363             <td class="entry_name
17364                 entry_name_deprecated
17365              " rowspan="1">
17366               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
17367             </td>
17368             <td class="entry_type">
17369                 <span class="entry_type_name">int32</span>
17370                 <span class="entry_type_container">x</span>
17371
17372                 <span class="entry_type_array">
17373                   n x 2
17374                 </span>
17375               <span class="entry_type_visibility"> [system as size]</span>
17376
17377
17378
17379               <span class="entry_type_deprecated">[deprecated] </span>
17380
17381
17382
17383             </td> <!-- entry_type -->
17384
17385             <td class="entry_description">
17386               <p>The resolutions available for use with raw
17387 sensor output streams,<wbr/> listed as width,<wbr/>
17388 height</p>
17389             </td>
17390
17391             <td class="entry_units">
17392             </td>
17393
17394             <td class="entry_range">
17395               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17396             </td>
17397
17398             <td class="entry_tags">
17399             </td>
17400
17401           </tr>
17402
17403
17404           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17405            <!-- end of entry -->
17406         
17407                 
17408           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
17409             <td class="entry_name
17410              " rowspan="5">
17411               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
17412             </td>
17413             <td class="entry_type">
17414                 <span class="entry_type_name">int32</span>
17415
17416               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
17417
17418
17419
17420
17421
17422
17423             </td> <!-- entry_type -->
17424
17425             <td class="entry_description">
17426               <p>The mapping of image formats that are supported by this
17427 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
17428             </td>
17429
17430             <td class="entry_units">
17431             </td>
17432
17433             <td class="entry_range">
17434             </td>
17435
17436             <td class="entry_tags">
17437               <ul class="entry_tags">
17438                   <li><a href="#tag_REPROC">REPROC</a></li>
17439               </ul>
17440             </td>
17441
17442           </tr>
17443           <tr class="entries_header">
17444             <th class="th_details" colspan="5">Details</th>
17445           </tr>
17446           <tr class="entry_cont">
17447             <td class="entry_details" colspan="5">
17448               <p>All camera devices with at least 1
17449 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17450 available input format.<wbr/></p>
17451 <p>The camera device will support the following map of formats,<wbr/>
17452 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17453 <table>
17454 <thead>
17455 <tr>
17456 <th align="left">Input Format</th>
17457 <th align="left">Output Format</th>
17458 <th align="left">Capability</th>
17459 </tr>
17460 </thead>
17461 <tbody>
17462 <tr>
17463 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17464 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17465 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17466 </tr>
17467 <tr>
17468 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17469 <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>
17470 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17471 </tr>
17472 <tr>
17473 <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>
17474 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17475 <td align="left">YUV_<wbr/>REPROCESSING</td>
17476 </tr>
17477 <tr>
17478 <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>
17479 <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>
17480 <td align="left">YUV_<wbr/>REPROCESSING</td>
17481 </tr>
17482 </tbody>
17483 </table>
17484 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17485 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17486 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17487 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17488 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>
17489 <p>Attempting to configure an input stream with output streams not
17490 listed as available in this map is not valid.<wbr/></p>
17491             </td>
17492           </tr>
17493
17494           <tr class="entries_header">
17495             <th class="th_details" colspan="5">HAL Implementation Details</th>
17496           </tr>
17497           <tr class="entry_cont">
17498             <td class="entry_details" colspan="5">
17499               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17500 of the image format enumerations.<wbr/> The PRIVATE format refers to the
17501 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17502 the actual format by using the gralloc usage flags.<wbr/>
17503 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17504 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17505 See camera3.<wbr/>h for more details.<wbr/></p>
17506 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17507 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17508 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17509 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17510 <p>A code sample to read/<wbr/>write this encoding (with a device that
17511 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17512 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17513 <pre><code>//<wbr/> reading
17514 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17515 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17516     int32_<wbr/>t format = contents[i++];
17517     int32_<wbr/>t length = contents[i++];
17518     int32_<wbr/>t output_<wbr/>formats[length];
17519     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17520            length * sizeof(int32_<wbr/>t));
17521     i += length;
17522 }
17523
17524 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17525 int32_<wbr/>t[] contents = {
17526   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17527   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17528 };
17529 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17530       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17531 </code></pre>
17532 <p>If the HAL claims to support any of the capabilities listed in the
17533 above details,<wbr/> then it must also support all the input-output
17534 combinations listed for that capability.<wbr/> It can optionally support
17535 additional formats if it so chooses.<wbr/></p>
17536             </td>
17537           </tr>
17538
17539           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17540            <!-- end of entry -->
17541         
17542                 
17543           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17544             <td class="entry_name
17545              " rowspan="5">
17546               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17547             </td>
17548             <td class="entry_type">
17549                 <span class="entry_type_name entry_type_name_enum">int32</span>
17550                 <span class="entry_type_container">x</span>
17551
17552                 <span class="entry_type_array">
17553                   n x 4
17554                 </span>
17555               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
17556
17557
17558               <span class="entry_type_hwlevel">[legacy] </span>
17559
17560
17561
17562                 <ul class="entry_type_enum">
17563                   <li>
17564                     <span class="entry_type_enum_name">OUTPUT</span>
17565                   </li>
17566                   <li>
17567                     <span class="entry_type_enum_name">INPUT</span>
17568                   </li>
17569                 </ul>
17570
17571             </td> <!-- entry_type -->
17572
17573             <td class="entry_description">
17574               <p>The available stream configurations that this
17575 camera device supports
17576 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17577             </td>
17578
17579             <td class="entry_units">
17580             </td>
17581
17582             <td class="entry_range">
17583             </td>
17584
17585             <td class="entry_tags">
17586             </td>
17587
17588           </tr>
17589           <tr class="entries_header">
17590             <th class="th_details" colspan="5">Details</th>
17591           </tr>
17592           <tr class="entry_cont">
17593             <td class="entry_details" colspan="5">
17594               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17595 tuples.<wbr/></p>
17596 <p>For a given use case,<wbr/> the actual maximum supported resolution
17597 may be lower than what is listed here,<wbr/> depending on the destination
17598 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17599 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17600 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17601 can provide.<wbr/></p>
17602 <p>Please reference the documentation for the image data destination to
17603 check if it limits the maximum size for image data.<wbr/></p>
17604 <p>Not all output formats may be supported in a configuration with
17605 an input stream of a particular format.<wbr/> For more details,<wbr/> see
17606 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17607 <p>The following table describes the minimum required output stream
17608 configurations based on the hardware level
17609 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17610 <table>
17611 <thead>
17612 <tr>
17613 <th align="center">Format</th>
17614 <th align="center">Size</th>
17615 <th align="center">Hardware Level</th>
17616 <th align="center">Notes</th>
17617 </tr>
17618 </thead>
17619 <tbody>
17620 <tr>
17621 <td align="center">JPEG</td>
17622 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17623 <td align="center">Any</td>
17624 <td align="center"></td>
17625 </tr>
17626 <tr>
17627 <td align="center">JPEG</td>
17628 <td align="center">1920x1080 (1080p)</td>
17629 <td align="center">Any</td>
17630 <td align="center">if 1080p &lt;= activeArraySize</td>
17631 </tr>
17632 <tr>
17633 <td align="center">JPEG</td>
17634 <td align="center">1280x720 (720)</td>
17635 <td align="center">Any</td>
17636 <td align="center">if 720p &lt;= activeArraySize</td>
17637 </tr>
17638 <tr>
17639 <td align="center">JPEG</td>
17640 <td align="center">640x480 (480p)</td>
17641 <td align="center">Any</td>
17642 <td align="center">if 480p &lt;= activeArraySize</td>
17643 </tr>
17644 <tr>
17645 <td align="center">JPEG</td>
17646 <td align="center">320x240 (240p)</td>
17647 <td align="center">Any</td>
17648 <td align="center">if 240p &lt;= activeArraySize</td>
17649 </tr>
17650 <tr>
17651 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17652 <td align="center">all output sizes available for JPEG</td>
17653 <td align="center">FULL</td>
17654 <td align="center"></td>
17655 </tr>
17656 <tr>
17657 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17658 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17659 <td align="center">LIMITED</td>
17660 <td align="center"></td>
17661 </tr>
17662 <tr>
17663 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17664 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17665 <td align="center">Any</td>
17666 <td align="center"></td>
17667 </tr>
17668 </tbody>
17669 </table>
17670 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17671 mandatory stream configurations on a per-capability basis.<wbr/></p>
17672             </td>
17673           </tr>
17674
17675           <tr class="entries_header">
17676             <th class="th_details" colspan="5">HAL Implementation Details</th>
17677           </tr>
17678           <tr class="entry_cont">
17679             <td class="entry_details" colspan="5">
17680               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17681 of sensor maximum resolution for JPEG formats (regardless of hardware
17682 level).<wbr/></p>
17683 <p>(The following is a rewording of the above required table):</p>
17684 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17685 <ul>
17686 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17687 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17688 (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/>
17689 it does not have to be included in the supported JPEG sizes.<wbr/></li>
17690 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17691 the dimensions being a multiple of 16.<wbr/></li>
17692 </ul>
17693 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17694 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17695 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17696 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17697 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17698 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
17699 3264x2448.<wbr/></p>
17700 <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/>
17701 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17702 here as output streams.<wbr/></p>
17703 <p>It must also include each below resolution if it is smaller than or
17704 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17705 formats),<wbr/> as output streams:</p>
17706 <ul>
17707 <li>240p (320 x 240)</li>
17708 <li>480p (640 x 480)</li>
17709 <li>720p (1280 x 720)</li>
17710 <li>1080p (1920 x 1080)</li>
17711 </ul>
17712 <p>For LIMITED capability devices
17713 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17714 the HAL only has to list up to the maximum video size
17715 supported by the device.<wbr/></p>
17716 <p>Regardless of hardware level,<wbr/> every output resolution available for
17717 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17718 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17719 <ul>
17720 <li>availableFormats</li>
17721 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17722 </ul>
17723             </td>
17724           </tr>
17725
17726           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17727            <!-- end of entry -->
17728         
17729                 
17730           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17731             <td class="entry_name
17732              " rowspan="3">
17733               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17734             </td>
17735             <td class="entry_type">
17736                 <span class="entry_type_name">int64</span>
17737                 <span class="entry_type_container">x</span>
17738
17739                 <span class="entry_type_array">
17740                   4 x n
17741                 </span>
17742               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17743
17744
17745               <span class="entry_type_hwlevel">[legacy] </span>
17746
17747
17748
17749
17750             </td> <!-- entry_type -->
17751
17752             <td class="entry_description">
17753               <p>This lists the minimum frame duration for each
17754 format/<wbr/>size combination.<wbr/></p>
17755             </td>
17756
17757             <td class="entry_units">
17758               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17759             </td>
17760
17761             <td class="entry_range">
17762             </td>
17763
17764             <td class="entry_tags">
17765               <ul class="entry_tags">
17766                   <li><a href="#tag_V1">V1</a></li>
17767               </ul>
17768             </td>
17769
17770           </tr>
17771           <tr class="entries_header">
17772             <th class="th_details" colspan="5">Details</th>
17773           </tr>
17774           <tr class="entry_cont">
17775             <td class="entry_details" colspan="5">
17776               <p>This should correspond to the frame duration when only that
17777 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17778 set to either OFF or FAST.<wbr/></p>
17779 <p>When multiple streams are used in a request,<wbr/> the minimum frame
17780 duration will be max(individual stream min durations).<wbr/></p>
17781 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17782 is the same regardless of whether the stream is input or output.<wbr/></p>
17783 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17784 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17785 calculating the max frame rate.<wbr/></p>
17786 <p>(Keep in sync with
17787 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17788             </td>
17789           </tr>
17790
17791
17792           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17793            <!-- end of entry -->
17794         
17795                 
17796           <tr class="entry" id="static_android.scaler.availableStallDurations">
17797             <td class="entry_name
17798              " rowspan="5">
17799               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17800             </td>
17801             <td class="entry_type">
17802                 <span class="entry_type_name">int64</span>
17803                 <span class="entry_type_container">x</span>
17804
17805                 <span class="entry_type_array">
17806                   4 x n
17807                 </span>
17808               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17809
17810
17811               <span class="entry_type_hwlevel">[legacy] </span>
17812
17813
17814
17815
17816             </td> <!-- entry_type -->
17817
17818             <td class="entry_description">
17819               <p>This lists the maximum stall duration for each
17820 output format/<wbr/>size combination.<wbr/></p>
17821             </td>
17822
17823             <td class="entry_units">
17824               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17825             </td>
17826
17827             <td class="entry_range">
17828             </td>
17829
17830             <td class="entry_tags">
17831               <ul class="entry_tags">
17832                   <li><a href="#tag_V1">V1</a></li>
17833               </ul>
17834             </td>
17835
17836           </tr>
17837           <tr class="entries_header">
17838             <th class="th_details" colspan="5">Details</th>
17839           </tr>
17840           <tr class="entry_cont">
17841             <td class="entry_details" colspan="5">
17842               <p>A stall duration is how much extra time would get added
17843 to the normal minimum frame duration for a repeating request
17844 that has streams with non-zero stall.<wbr/></p>
17845 <p>For example,<wbr/> consider JPEG captures which have the following
17846 characteristics:</p>
17847 <ul>
17848 <li>JPEG streams act like processed YUV streams in requests for which
17849 they are not included; in requests in which they are directly
17850 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17851 JPEG stream requires the underlying YUV data to always be ready for
17852 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17853 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17854 <li>The JPEG processor can run concurrently to the rest of the camera
17855 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17856 </ul>
17857 <p>In other words,<wbr/> using a repeating YUV request would result
17858 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17859 JPEG request is submitted periodically,<wbr/> the frame rate will stay
17860 at 30 FPS (as long as we wait for the previous JPEG to return each
17861 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17862 the frame rate will drop from 30 FPS.<wbr/></p>
17863 <p>In general,<wbr/> submitting a new request with a non-0 stall time
17864 stream will <em>not</em> cause a frame rate drop unless there are still
17865 outstanding buffers for that stream from previous requests.<wbr/></p>
17866 <p>Submitting a repeating request with streams (call this <code>S</code>)
17867 is the same as setting the minimum frame duration from
17868 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17869 the maximum stall duration for <code>S</code>.<wbr/></p>
17870 <p>If interleaving requests with and without a stall duration,<wbr/>
17871 a request will stall by the maximum of the remaining times
17872 for each can-stall stream with outstanding buffers.<wbr/></p>
17873 <p>This means that a stalling request will not have an exposure start
17874 until the stall has completed.<wbr/></p>
17875 <p>This should correspond to the stall duration when only that stream is
17876 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17877 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17878 effectively results in an indeterminate stall duration for all
17879 streams in a request (the regular stall calculation rules are
17880 ignored).<wbr/></p>
17881 <p>The following formats may always have a stall duration:</p>
17882 <ul>
17883 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17884 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17885 </ul>
17886 <p>The following formats will never have a stall duration:</p>
17887 <ul>
17888 <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>
17889 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17890 </ul>
17891 <p>All other formats may or may not have an allowed stall duration on
17892 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17893 for more details.<wbr/></p>
17894 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17895 calculating the max frame rate (absent stalls).<wbr/></p>
17896 <p>(Keep up to date with
17897 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17898             </td>
17899           </tr>
17900
17901           <tr class="entries_header">
17902             <th class="th_details" colspan="5">HAL Implementation Details</th>
17903           </tr>
17904           <tr class="entry_cont">
17905             <td class="entry_details" colspan="5">
17906               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17907 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17908 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17909             </td>
17910           </tr>
17911
17912           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17913            <!-- end of entry -->
17914         
17915                 
17916           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17917             <td class="entry_name
17918              " rowspan="5">
17919               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17920             </td>
17921             <td class="entry_type">
17922                 <span class="entry_type_name">int32</span>
17923
17924               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
17925
17926               <span class="entry_type_synthetic">[synthetic] </span>
17927
17928               <span class="entry_type_hwlevel">[legacy] </span>
17929
17930
17931
17932
17933             </td> <!-- entry_type -->
17934
17935             <td class="entry_description">
17936               <p>The available stream configurations that this
17937 camera device supports; also includes the minimum frame durations
17938 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17939             </td>
17940
17941             <td class="entry_units">
17942             </td>
17943
17944             <td class="entry_range">
17945             </td>
17946
17947             <td class="entry_tags">
17948             </td>
17949
17950           </tr>
17951           <tr class="entries_header">
17952             <th class="th_details" colspan="5">Details</th>
17953           </tr>
17954           <tr class="entry_cont">
17955             <td class="entry_details" colspan="5">
17956               <p>All camera devices will support sensor maximum resolution (defined by
17957 <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>
17958 <p>For a given use case,<wbr/> the actual maximum supported resolution
17959 may be lower than what is listed here,<wbr/> depending on the destination
17960 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17961 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17962 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17963 can provide.<wbr/></p>
17964 <p>Please reference the documentation for the image data destination to
17965 check if it limits the maximum size for image data.<wbr/></p>
17966 <p>The following table describes the minimum required output stream
17967 configurations based on the hardware level
17968 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17969 <table>
17970 <thead>
17971 <tr>
17972 <th align="center">Format</th>
17973 <th align="center">Size</th>
17974 <th align="center">Hardware Level</th>
17975 <th align="center">Notes</th>
17976 </tr>
17977 </thead>
17978 <tbody>
17979 <tr>
17980 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17981 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17982 <td align="center">Any</td>
17983 <td align="center"></td>
17984 </tr>
17985 <tr>
17986 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17987 <td align="center">1920x1080 (1080p)</td>
17988 <td align="center">Any</td>
17989 <td align="center">if 1080p &lt;= activeArraySize</td>
17990 </tr>
17991 <tr>
17992 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17993 <td align="center">1280x720 (720p)</td>
17994 <td align="center">Any</td>
17995 <td align="center">if 720p &lt;= activeArraySize</td>
17996 </tr>
17997 <tr>
17998 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17999 <td align="center">640x480 (480p)</td>
18000 <td align="center">Any</td>
18001 <td align="center">if 480p &lt;= activeArraySize</td>
18002 </tr>
18003 <tr>
18004 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18005 <td align="center">320x240 (240p)</td>
18006 <td align="center">Any</td>
18007 <td align="center">if 240p &lt;= activeArraySize</td>
18008 </tr>
18009 <tr>
18010 <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>
18011 <td align="center">all output sizes available for JPEG</td>
18012 <td align="center">FULL</td>
18013 <td align="center"></td>
18014 </tr>
18015 <tr>
18016 <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>
18017 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18018 <td align="center">LIMITED</td>
18019 <td align="center"></td>
18020 </tr>
18021 <tr>
18022 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18023 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18024 <td align="center">Any</td>
18025 <td align="center"></td>
18026 </tr>
18027 </tbody>
18028 </table>
18029 <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
18030 stream configurations on a per-capability basis.<wbr/></p>
18031 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18032 <ul>
18033 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18034 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18035 (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/>
18036 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18037 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18038 the dimensions being a multiple of 16.<wbr/>
18039 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18040 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18041 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18042 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18043 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18044 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18045 3264x2448.<wbr/></li>
18046 </ul>
18047             </td>
18048           </tr>
18049
18050           <tr class="entries_header">
18051             <th class="th_details" colspan="5">HAL Implementation Details</th>
18052           </tr>
18053           <tr class="entry_cont">
18054             <td class="entry_details" colspan="5">
18055               <p>Do not set this property directly
18056 (it is synthetic and will not be available at the HAL layer);
18057 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18058 <p>Not all output formats may be supported in a configuration with
18059 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18060 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18061 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18062 of sensor maximum resolution for JPEG formats (regardless of hardware
18063 level).<wbr/></p>
18064 <p>(The following is a rewording of the above required table):</p>
18065 <p>The HAL must include sensor maximum resolution (defined by
18066 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18067 <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/>
18068 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18069 here as output streams.<wbr/></p>
18070 <p>It must also include each below resolution if it is smaller than or
18071 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18072 formats),<wbr/> as output streams:</p>
18073 <ul>
18074 <li>240p (320 x 240)</li>
18075 <li>480p (640 x 480)</li>
18076 <li>720p (1280 x 720)</li>
18077 <li>1080p (1920 x 1080)</li>
18078 </ul>
18079 <p>For LIMITED capability devices
18080 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18081 the HAL only has to list up to the maximum video size
18082 supported by the device.<wbr/></p>
18083 <p>Regardless of hardware level,<wbr/> every output resolution available for
18084 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18085 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18086 <ul>
18087 <li>availableFormats</li>
18088 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18089 </ul>
18090             </td>
18091           </tr>
18092
18093           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18094            <!-- end of entry -->
18095         
18096                 
18097           <tr class="entry" id="static_android.scaler.croppingType">
18098             <td class="entry_name
18099              " rowspan="3">
18100               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
18101             </td>
18102             <td class="entry_type">
18103                 <span class="entry_type_name entry_type_name_enum">byte</span>
18104
18105               <span class="entry_type_visibility"> [public]</span>
18106
18107
18108               <span class="entry_type_hwlevel">[legacy] </span>
18109
18110
18111
18112                 <ul class="entry_type_enum">
18113                   <li>
18114                     <span class="entry_type_enum_name">CENTER_ONLY</span>
18115                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
18116                   </li>
18117                   <li>
18118                     <span class="entry_type_enum_name">FREEFORM</span>
18119                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
18120                   </li>
18121                 </ul>
18122
18123             </td> <!-- entry_type -->
18124
18125             <td class="entry_description">
18126               <p>The crop type that this camera device supports.<wbr/></p>
18127             </td>
18128
18129             <td class="entry_units">
18130             </td>
18131
18132             <td class="entry_range">
18133             </td>
18134
18135             <td class="entry_tags">
18136             </td>
18137
18138           </tr>
18139           <tr class="entries_header">
18140             <th class="th_details" colspan="5">Details</th>
18141           </tr>
18142           <tr class="entry_cont">
18143             <td class="entry_details" colspan="5">
18144               <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
18145 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
18146 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>)
18147 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
18148 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18149 <p>Camera devices that support FREEFORM cropping will support any crop region that
18150 is inside of the active array.<wbr/> The camera device will apply the same crop region and
18151 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>
18152 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
18153             </td>
18154           </tr>
18155
18156
18157           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18158            <!-- end of entry -->
18159         
18160         
18161
18162       <!-- end of kind -->
18163       </tbody>
18164       <tr><td colspan="6" class="kind">dynamic</td></tr>
18165
18166       <thead class="entries_header">
18167         <tr>
18168           <th class="th_name">Property Name</th>
18169           <th class="th_type">Type</th>
18170           <th class="th_description">Description</th>
18171           <th class="th_units">Units</th>
18172           <th class="th_range">Range</th>
18173           <th class="th_tags">Tags</th>
18174         </tr>
18175       </thead>
18176
18177       <tbody>
18178
18179         
18180
18181         
18182
18183         
18184
18185         
18186
18187                 
18188           <tr class="entry" id="dynamic_android.scaler.cropRegion">
18189             <td class="entry_name
18190              " rowspan="5">
18191               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18192             </td>
18193             <td class="entry_type">
18194                 <span class="entry_type_name">int32</span>
18195                 <span class="entry_type_container">x</span>
18196
18197                 <span class="entry_type_array">
18198                   4
18199                 </span>
18200               <span class="entry_type_visibility"> [public as rectangle]</span>
18201
18202
18203               <span class="entry_type_hwlevel">[legacy] </span>
18204
18205
18206
18207
18208             </td> <!-- entry_type -->
18209
18210             <td class="entry_description">
18211               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18212             </td>
18213
18214             <td class="entry_units">
18215               Pixel coordinates relative to
18216           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18217             </td>
18218
18219             <td class="entry_range">
18220             </td>
18221
18222             <td class="entry_tags">
18223               <ul class="entry_tags">
18224                   <li><a href="#tag_BC">BC</a></li>
18225               </ul>
18226             </td>
18227
18228           </tr>
18229           <tr class="entries_header">
18230             <th class="th_details" colspan="5">Details</th>
18231           </tr>
18232           <tr class="entry_cont">
18233             <td class="entry_details" colspan="5">
18234               <p>This control can be used to implement digital zoom.<wbr/></p>
18235 <p>The crop region coordinate system is based off
18236 <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
18237 top-left corner of the sensor active array.<wbr/></p>
18238 <p>Output streams use this rectangle to produce their output,<wbr/>
18239 cropping to a smaller region if necessary to maintain the
18240 stream's aspect ratio,<wbr/> then scaling the sensor input to
18241 match the output's configured resolution.<wbr/></p>
18242 <p>The crop region is applied after the RAW to other color
18243 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18244 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18245 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18246 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18247 be done to maximize the final pixel area of the stream.<wbr/></p>
18248 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18249 ratio,<wbr/> then 4:3 streams will use the exact crop
18250 region.<wbr/> 16:9 streams will further crop vertically
18251 (letterbox).<wbr/></p>
18252 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18253 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18254 streams will match exactly.<wbr/> These additional crops will
18255 be centered within the crop region.<wbr/></p>
18256 <p>The width and height of the crop region cannot
18257 be set to be smaller than
18258 <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
18259 <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>
18260 <p>The camera device may adjust the crop region to account
18261 for rounding and other hardware requirements; the final
18262 crop region used will be included in the output capture
18263 result.<wbr/></p>
18264             </td>
18265           </tr>
18266
18267           <tr class="entries_header">
18268             <th class="th_details" colspan="5">HAL Implementation Details</th>
18269           </tr>
18270           <tr class="entry_cont">
18271             <td class="entry_details" colspan="5">
18272               <p>The output streams must maintain square pixels at all
18273 times,<wbr/> no matter what the relative aspect ratios of the
18274 crop region and the stream are.<wbr/>  Negative values for
18275 corner are allowed for raw output if full pixel array is
18276 larger than active pixel array.<wbr/> Width and height may be
18277 rounded to nearest larger supportable width,<wbr/> especially
18278 for raw output,<wbr/> where only a few fixed scales may be
18279 possible.<wbr/></p>
18280 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18281 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18282 <ul>
18283 <li>
18284 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18285 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18286 <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>
18287 <ol>
18288 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18289 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18290 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18291 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18292 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18293 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18294 <li>Scale the width and height of requested cropRegion with scaling factor of
18295 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
18296 respectively.<wbr/>
18297 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18298 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18299 follow the general cropping rule for this new cropRegion and effective active
18300 array size.<wbr/></li>
18301 </ol>
18302 </li>
18303 <li>
18304 <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/>
18305 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18306 The reported cropRegion may be slightly different with the requested cropRegion since
18307 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18308 hardware limitations.<wbr/></p>
18309 </li>
18310 </ul>
18311 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18312             </td>
18313           </tr>
18314
18315           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18316            <!-- end of entry -->
18317         
18318         
18319
18320       <!-- end of kind -->
18321       </tbody>
18322
18323   <!-- end of section -->
18324   <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
18325
18326
18327       <tr><td colspan="6" class="kind">controls</td></tr>
18328
18329       <thead class="entries_header">
18330         <tr>
18331           <th class="th_name">Property Name</th>
18332           <th class="th_type">Type</th>
18333           <th class="th_description">Description</th>
18334           <th class="th_units">Units</th>
18335           <th class="th_range">Range</th>
18336           <th class="th_tags">Tags</th>
18337         </tr>
18338       </thead>
18339
18340       <tbody>
18341
18342         
18343
18344         
18345
18346         
18347
18348         
18349
18350                 
18351           <tr class="entry" id="controls_android.sensor.exposureTime">
18352             <td class="entry_name
18353              " rowspan="3">
18354               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
18355             </td>
18356             <td class="entry_type">
18357                 <span class="entry_type_name">int64</span>
18358
18359               <span class="entry_type_visibility"> [public]</span>
18360
18361
18362               <span class="entry_type_hwlevel">[full] </span>
18363
18364
18365
18366
18367             </td> <!-- entry_type -->
18368
18369             <td class="entry_description">
18370               <p>Duration each pixel is exposed to
18371 light.<wbr/></p>
18372             </td>
18373
18374             <td class="entry_units">
18375               Nanoseconds
18376             </td>
18377
18378             <td class="entry_range">
18379               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
18380             </td>
18381
18382             <td class="entry_tags">
18383               <ul class="entry_tags">
18384                   <li><a href="#tag_V1">V1</a></li>
18385               </ul>
18386             </td>
18387
18388           </tr>
18389           <tr class="entries_header">
18390             <th class="th_details" colspan="5">Details</th>
18391           </tr>
18392           <tr class="entry_cont">
18393             <td class="entry_details" colspan="5">
18394               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
18395 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
18396 The final exposure time used will be available in the output capture result.<wbr/></p>
18397 <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
18398 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18399             </td>
18400           </tr>
18401
18402
18403           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18404            <!-- end of entry -->
18405         
18406                 
18407           <tr class="entry" id="controls_android.sensor.frameDuration">
18408             <td class="entry_name
18409              " rowspan="5">
18410               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
18411             </td>
18412             <td class="entry_type">
18413                 <span class="entry_type_name">int64</span>
18414
18415               <span class="entry_type_visibility"> [public]</span>
18416
18417
18418               <span class="entry_type_hwlevel">[full] </span>
18419
18420
18421
18422
18423             </td> <!-- entry_type -->
18424
18425             <td class="entry_description">
18426               <p>Duration from start of frame exposure to
18427 start of next frame exposure.<wbr/></p>
18428             </td>
18429
18430             <td class="entry_units">
18431               Nanoseconds
18432             </td>
18433
18434             <td class="entry_range">
18435               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18436 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18437 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18438             </td>
18439
18440             <td class="entry_tags">
18441               <ul class="entry_tags">
18442                   <li><a href="#tag_V1">V1</a></li>
18443               </ul>
18444             </td>
18445
18446           </tr>
18447           <tr class="entries_header">
18448             <th class="th_details" colspan="5">Details</th>
18449           </tr>
18450           <tr class="entry_cont">
18451             <td class="entry_details" colspan="5">
18452               <p>The maximum frame rate that can be supported by a camera subsystem is
18453 a function of many factors:</p>
18454 <ul>
18455 <li>Requested resolutions of output image streams</li>
18456 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
18457 <li>The bandwidth of the imager interface</li>
18458 <li>The bandwidth of the various ISP processing blocks</li>
18459 </ul>
18460 <p>Since these factors can vary greatly between different ISPs and
18461 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18462 restrictions with as simple a model as possible.<wbr/></p>
18463 <p>The model presented has the following characteristics:</p>
18464 <ul>
18465 <li>The image sensor is always configured to output the smallest
18466 resolution possible given the application's requested output stream
18467 sizes.<wbr/>  The smallest resolution is defined as being at least as large
18468 as the largest requested output stream size; the camera pipeline must
18469 never digitally upsample sensor data when the crop region covers the
18470 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18471 resolutions are configured,<wbr/> the sensor can provide a higher frame
18472 rate.<wbr/></li>
18473 <li>Since any request may use any or all the currently configured
18474 output streams,<wbr/> the sensor and ISP must be configured to support
18475 scaling a single capture to all the streams at the same time.<wbr/>  This
18476 means the camera pipeline must be ready to produce the largest
18477 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18478 frame rate of a given configured stream set is governed only by the
18479 largest requested stream resolution.<wbr/></li>
18480 <li>Using more than one output stream in a request does not affect the
18481 frame duration.<wbr/></li>
18482 <li>Certain format-streams may need to do additional background processing
18483 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18484 can run concurrently to the rest of the camera pipeline,<wbr/> but
18485 cannot process more than 1 capture at a time.<wbr/></li>
18486 </ul>
18487 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18488 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18489 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18490 These are used to determine the maximum frame rate /<wbr/> minimum frame
18491 duration that is possible for a given stream configuration.<wbr/></p>
18492 <p>Specifically,<wbr/> the application can use the following rules to
18493 determine the minimum frame duration it can request from the camera
18494 device:</p>
18495 <ol>
18496 <li>Let the set of currently configured input/<wbr/>output streams
18497 be called <code>S</code>.<wbr/></li>
18498 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18499 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18500 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18501 called <code>F</code>.<wbr/></li>
18502 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18503 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18504 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18505 </ol>
18506 <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>
18507 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18508 determines the steady state frame rate that the application will get
18509 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18510 request be called <code>Rsimple</code>.<wbr/></p>
18511 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18512 by a single capture of a new request <code>Rstall</code> (which has at least
18513 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18514 same minimum frame duration this will not cause a frame rate loss
18515 if all buffers from the previous <code>Rstall</code> have already been
18516 delivered.<wbr/></p>
18517 <p>For more details about stalling,<wbr/> see
18518 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18519 <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
18520 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18521             </td>
18522           </tr>
18523
18524           <tr class="entries_header">
18525             <th class="th_details" colspan="5">HAL Implementation Details</th>
18526           </tr>
18527           <tr class="entry_cont">
18528             <td class="entry_details" colspan="5">
18529               <p>For more details about stalling,<wbr/> see
18530 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18531             </td>
18532           </tr>
18533
18534           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18535            <!-- end of entry -->
18536         
18537                 
18538           <tr class="entry" id="controls_android.sensor.sensitivity">
18539             <td class="entry_name
18540              " rowspan="5">
18541               android.<wbr/>sensor.<wbr/>sensitivity
18542             </td>
18543             <td class="entry_type">
18544                 <span class="entry_type_name">int32</span>
18545
18546               <span class="entry_type_visibility"> [public]</span>
18547
18548
18549               <span class="entry_type_hwlevel">[full] </span>
18550
18551
18552
18553
18554             </td> <!-- entry_type -->
18555
18556             <td class="entry_description">
18557               <p>The amount of gain applied to sensor data
18558 before processing.<wbr/></p>
18559             </td>
18560
18561             <td class="entry_units">
18562               ISO arithmetic units
18563             </td>
18564
18565             <td class="entry_range">
18566               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18567             </td>
18568
18569             <td class="entry_tags">
18570               <ul class="entry_tags">
18571                   <li><a href="#tag_V1">V1</a></li>
18572               </ul>
18573             </td>
18574
18575           </tr>
18576           <tr class="entries_header">
18577             <th class="th_details" colspan="5">Details</th>
18578           </tr>
18579           <tr class="entry_cont">
18580             <td class="entry_details" colspan="5">
18581               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18582 as defined in ISO 12232:2006.<wbr/></p>
18583 <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
18584 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
18585 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18586 <p>If the camera device cannot apply the exact sensitivity
18587 requested,<wbr/> it will reduce the gain to the nearest supported
18588 value.<wbr/> The final sensitivity used will be available in the
18589 output capture result.<wbr/></p>
18590 <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
18591 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18592             </td>
18593           </tr>
18594
18595           <tr class="entries_header">
18596             <th class="th_details" colspan="5">HAL Implementation Details</th>
18597           </tr>
18598           <tr class="entry_cont">
18599             <td class="entry_details" colspan="5">
18600               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18601             </td>
18602           </tr>
18603
18604           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18605            <!-- end of entry -->
18606         
18607                 
18608           <tr class="entry" id="controls_android.sensor.testPatternData">
18609             <td class="entry_name
18610              " rowspan="5">
18611               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18612             </td>
18613             <td class="entry_type">
18614                 <span class="entry_type_name">int32</span>
18615                 <span class="entry_type_container">x</span>
18616
18617                 <span class="entry_type_array">
18618                   4
18619                 </span>
18620               <span class="entry_type_visibility"> [public]</span>
18621
18622
18623
18624
18625
18626
18627             </td> <!-- entry_type -->
18628
18629             <td class="entry_description">
18630               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18631 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18632             </td>
18633
18634             <td class="entry_units">
18635             </td>
18636
18637             <td class="entry_range">
18638             </td>
18639
18640             <td class="entry_tags">
18641             </td>
18642
18643           </tr>
18644           <tr class="entries_header">
18645             <th class="th_details" colspan="5">Details</th>
18646           </tr>
18647           <tr class="entry_cont">
18648             <td class="entry_details" colspan="5">
18649               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18650 The camera device then uses the most significant X bits
18651 that correspond to how many bits are in its Bayer raw sensor
18652 output.<wbr/></p>
18653 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
18654 10 most significant bits from each color channel.<wbr/></p>
18655             </td>
18656           </tr>
18657
18658           <tr class="entries_header">
18659             <th class="th_details" colspan="5">HAL Implementation Details</th>
18660           </tr>
18661           <tr class="entry_cont">
18662             <td class="entry_details" colspan="5">
18663               
18664             </td>
18665           </tr>
18666
18667           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18668            <!-- end of entry -->
18669         
18670                 
18671           <tr class="entry" id="controls_android.sensor.testPatternMode">
18672             <td class="entry_name
18673              " rowspan="5">
18674               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18675             </td>
18676             <td class="entry_type">
18677                 <span class="entry_type_name entry_type_name_enum">int32</span>
18678
18679               <span class="entry_type_visibility"> [public]</span>
18680
18681
18682
18683
18684
18685                 <ul class="entry_type_enum">
18686                   <li>
18687                     <span class="entry_type_enum_name">OFF</span>
18688                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18689 device returns captures from the image sensor.<wbr/></p>
18690 <p>This is the default if the key is not set.<wbr/></p></span>
18691                   </li>
18692                   <li>
18693                     <span class="entry_type_enum_name">SOLID_COLOR</span>
18694                     <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
18695 respective color channel provided in
18696 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18697 <p>For example:</p>
18698 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18699 </code></pre>
18700 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18701 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18702 </code></pre>
18703 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18704 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18705                   </li>
18706                   <li>
18707                     <span class="entry_type_enum_name">COLOR_BARS</span>
18708                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18709 <p>The vertical bars (left-to-right) are as follows:</p>
18710 <ul>
18711 <li>100% white</li>
18712 <li>yellow</li>
18713 <li>cyan</li>
18714 <li>green</li>
18715 <li>magenta</li>
18716 <li>red</li>
18717 <li>blue</li>
18718 <li>black</li>
18719 </ul>
18720 <p>In general the image would look like the following:</p>
18721 <pre><code>W Y C G M R B K
18722 W Y C G M R B K
18723 W Y C G M R B K
18724 W Y C G M R B K
18725 W Y C G M R B K
18726 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18727 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18728 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18729
18730 (B = Blue,<wbr/> K = Black)
18731 </code></pre>
18732 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18733 When this is not possible,<wbr/> the bar size should be rounded
18734 down to the nearest integer and the pattern can repeat
18735 on the right side.<wbr/></p>
18736 <p>Each bar's height must always take up the full sensor
18737 pixel array height.<wbr/></p>
18738 <p>Each pixel in this test pattern must be set to either
18739 0% intensity or 100% intensity.<wbr/></p></span>
18740                   </li>
18741                   <li>
18742                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18743                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18744 each bar should start at its specified color at the top,<wbr/>
18745 and fade to gray at the bottom.<wbr/></p>
18746 <p>Furthermore each bar is further subdivided into a left and
18747 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18748 and the right half should have a quantized gradient.<wbr/></p>
18749 <p>In particular,<wbr/> the right half's should consist of blocks of the
18750 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18751 <p>The least significant bits in the quantized gradient should
18752 be copied from the most significant bits of the smooth gradient.<wbr/></p>
18753 <p>The height of each bar should always be a multiple of 128.<wbr/>
18754 When this is not the case,<wbr/> the pattern should repeat at the bottom
18755 of the image.<wbr/></p></span>
18756                   </li>
18757                   <li>
18758                     <span class="entry_type_enum_name">PN9</span>
18759                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18760 generated from a PN9 512-bit sequence (typically implemented
18761 in hardware with a linear feedback shift register).<wbr/></p>
18762 <p>The generator should be reset at the beginning of each frame,<wbr/>
18763 and thus each subsequent raw frame with this test pattern should
18764 be exactly the same as the last.<wbr/></p></span>
18765                   </li>
18766                   <li>
18767                     <span class="entry_type_enum_name">CUSTOM1</span>
18768                     <span class="entry_type_enum_value">256</span>
18769                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18770 available only on this camera device are at least this numeric
18771 value.<wbr/></p>
18772 <p>All of the custom test patterns will be static
18773 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
18774                   </li>
18775                 </ul>
18776
18777             </td> <!-- entry_type -->
18778
18779             <td class="entry_description">
18780               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18781 doing a real exposure from the camera.<wbr/></p>
18782             </td>
18783
18784             <td class="entry_units">
18785             </td>
18786
18787             <td class="entry_range">
18788               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18789             </td>
18790
18791             <td class="entry_tags">
18792             </td>
18793
18794           </tr>
18795           <tr class="entries_header">
18796             <th class="th_details" colspan="5">Details</th>
18797           </tr>
18798           <tr class="entry_cont">
18799             <td class="entry_details" colspan="5">
18800               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18801 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18802 work as normal.<wbr/></p>
18803 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18804 occur (and that the test pattern remain unmodified,<wbr/> since the flash
18805 would not actually affect it).<wbr/></p>
18806 <p>Defaults to OFF.<wbr/></p>
18807             </td>
18808           </tr>
18809
18810           <tr class="entries_header">
18811             <th class="th_details" colspan="5">HAL Implementation Details</th>
18812           </tr>
18813           <tr class="entry_cont">
18814             <td class="entry_details" colspan="5">
18815               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18816 <p>The HAL may choose to substitute test patterns from the sensor
18817 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18818 indistinguishable to the ISP whether the data came from the
18819 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18820             </td>
18821           </tr>
18822
18823           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18824            <!-- end of entry -->
18825         
18826         
18827
18828       <!-- end of kind -->
18829       </tbody>
18830       <tr><td colspan="6" class="kind">static</td></tr>
18831
18832       <thead class="entries_header">
18833         <tr>
18834           <th class="th_name">Property Name</th>
18835           <th class="th_type">Type</th>
18836           <th class="th_description">Description</th>
18837           <th class="th_units">Units</th>
18838           <th class="th_range">Range</th>
18839           <th class="th_tags">Tags</th>
18840         </tr>
18841       </thead>
18842
18843       <tbody>
18844
18845         
18846
18847         
18848
18849         
18850
18851         
18852                 
18853             
18854
18855                 
18856           <tr class="entry" id="static_android.sensor.info.activeArraySize">
18857             <td class="entry_name
18858              " rowspan="5">
18859               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18860             </td>
18861             <td class="entry_type">
18862                 <span class="entry_type_name">int32</span>
18863                 <span class="entry_type_container">x</span>
18864
18865                 <span class="entry_type_array">
18866                   4
18867                 </span>
18868               <span class="entry_type_visibility"> [public as rectangle]</span>
18869
18870
18871               <span class="entry_type_hwlevel">[legacy] </span>
18872
18873
18874                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18875
18876
18877             </td> <!-- entry_type -->
18878
18879             <td class="entry_description">
18880               <p>The area of the image sensor which corresponds to active pixels after any geometric
18881 distortion correction has been applied.<wbr/></p>
18882             </td>
18883
18884             <td class="entry_units">
18885               Pixel coordinates on the image sensor
18886             </td>
18887
18888             <td class="entry_range">
18889             </td>
18890
18891             <td class="entry_tags">
18892               <ul class="entry_tags">
18893                   <li><a href="#tag_RAW">RAW</a></li>
18894               </ul>
18895             </td>
18896
18897           </tr>
18898           <tr class="entries_header">
18899             <th class="th_details" colspan="5">Details</th>
18900           </tr>
18901           <tr class="entry_cont">
18902             <td class="entry_details" colspan="5">
18903               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18904 the region that actually receives light from the scene) after any geometric correction
18905 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18906 image output formats aside from the raw formats.<wbr/></p>
18907 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18908 the full pixel array,<wbr/> and the size of the full pixel array is given by
18909 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18910 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18911 <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
18912 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18913 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18914 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18915 resulting in scaling or cropping may have been applied.<wbr/></p>
18916             </td>
18917           </tr>
18918
18919           <tr class="entries_header">
18920             <th class="th_details" colspan="5">HAL Implementation Details</th>
18921           </tr>
18922           <tr class="entry_cont">
18923             <td class="entry_details" colspan="5">
18924               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18925 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18926 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>
18927             </td>
18928           </tr>
18929
18930           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18931            <!-- end of entry -->
18932         
18933                 
18934           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18935             <td class="entry_name
18936              " rowspan="3">
18937               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18938             </td>
18939             <td class="entry_type">
18940                 <span class="entry_type_name">int32</span>
18941                 <span class="entry_type_container">x</span>
18942
18943                 <span class="entry_type_array">
18944                   2
18945                 </span>
18946               <span class="entry_type_visibility"> [public as rangeInt]</span>
18947
18948
18949               <span class="entry_type_hwlevel">[full] </span>
18950
18951
18952                 <div class="entry_type_notes">Range of supported sensitivities</div>
18953
18954
18955             </td> <!-- entry_type -->
18956
18957             <td class="entry_description">
18958               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18959 camera device.<wbr/></p>
18960             </td>
18961
18962             <td class="entry_units">
18963             </td>
18964
18965             <td class="entry_range">
18966               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18967             </td>
18968
18969             <td class="entry_tags">
18970               <ul class="entry_tags">
18971                   <li><a href="#tag_BC">BC</a></li>
18972                   <li><a href="#tag_V1">V1</a></li>
18973               </ul>
18974             </td>
18975
18976           </tr>
18977           <tr class="entries_header">
18978             <th class="th_details" colspan="5">Details</th>
18979           </tr>
18980           <tr class="entry_cont">
18981             <td class="entry_details" colspan="5">
18982               <p>The values are the standard ISO sensitivity values,<wbr/>
18983 as defined in ISO 12232:2006.<wbr/></p>
18984             </td>
18985           </tr>
18986
18987
18988           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18989            <!-- end of entry -->
18990         
18991                 
18992           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18993             <td class="entry_name
18994              " rowspan="1">
18995               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18996             </td>
18997             <td class="entry_type">
18998                 <span class="entry_type_name entry_type_name_enum">byte</span>
18999
19000               <span class="entry_type_visibility"> [public]</span>
19001
19002
19003               <span class="entry_type_hwlevel">[full] </span>
19004
19005
19006
19007                 <ul class="entry_type_enum">
19008                   <li>
19009                     <span class="entry_type_enum_name">RGGB</span>
19010                   </li>
19011                   <li>
19012                     <span class="entry_type_enum_name">GRBG</span>
19013                   </li>
19014                   <li>
19015                     <span class="entry_type_enum_name">GBRG</span>
19016                   </li>
19017                   <li>
19018                     <span class="entry_type_enum_name">BGGR</span>
19019                   </li>
19020                   <li>
19021                     <span class="entry_type_enum_name">RGB</span>
19022                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19023 values for each pixel,<wbr/> instead of just 1 16-bit value
19024 per pixel.<wbr/></p></span>
19025                   </li>
19026                 </ul>
19027
19028             </td> <!-- entry_type -->
19029
19030             <td class="entry_description">
19031               <p>The arrangement of color filters on sensor;
19032 represents the colors in the top-left 2x2 section of
19033 the sensor,<wbr/> in reading order.<wbr/></p>
19034             </td>
19035
19036             <td class="entry_units">
19037             </td>
19038
19039             <td class="entry_range">
19040             </td>
19041
19042             <td class="entry_tags">
19043               <ul class="entry_tags">
19044                   <li><a href="#tag_RAW">RAW</a></li>
19045               </ul>
19046             </td>
19047
19048           </tr>
19049
19050
19051           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19052            <!-- end of entry -->
19053         
19054                 
19055           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
19056             <td class="entry_name
19057              " rowspan="3">
19058               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
19059             </td>
19060             <td class="entry_type">
19061                 <span class="entry_type_name">int64</span>
19062                 <span class="entry_type_container">x</span>
19063
19064                 <span class="entry_type_array">
19065                   2
19066                 </span>
19067               <span class="entry_type_visibility"> [public as rangeLong]</span>
19068
19069
19070               <span class="entry_type_hwlevel">[full] </span>
19071
19072
19073                 <div class="entry_type_notes">nanoseconds</div>
19074
19075
19076             </td> <!-- entry_type -->
19077
19078             <td class="entry_description">
19079               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
19080 by this camera device.<wbr/></p>
19081             </td>
19082
19083             <td class="entry_units">
19084               Nanoseconds
19085             </td>
19086
19087             <td class="entry_range">
19088               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
19089 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19090 the maximum exposure time will be greater than 100ms.<wbr/></p>
19091             </td>
19092
19093             <td class="entry_tags">
19094               <ul class="entry_tags">
19095                   <li><a href="#tag_V1">V1</a></li>
19096               </ul>
19097             </td>
19098
19099           </tr>
19100
19101           <tr class="entries_header">
19102             <th class="th_details" colspan="5">HAL Implementation Details</th>
19103           </tr>
19104           <tr class="entry_cont">
19105             <td class="entry_details" colspan="5">
19106               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19107 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
19108 100ms.<wbr/></p>
19109             </td>
19110           </tr>
19111
19112           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19113            <!-- end of entry -->
19114         
19115                 
19116           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
19117             <td class="entry_name
19118              " rowspan="5">
19119               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
19120             </td>
19121             <td class="entry_type">
19122                 <span class="entry_type_name">int64</span>
19123
19124               <span class="entry_type_visibility"> [public]</span>
19125
19126
19127               <span class="entry_type_hwlevel">[full] </span>
19128
19129
19130
19131
19132             </td> <!-- entry_type -->
19133
19134             <td class="entry_description">
19135               <p>The maximum possible frame duration (minimum frame rate) for
19136 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
19137             </td>
19138
19139             <td class="entry_units">
19140               Nanoseconds
19141             </td>
19142
19143             <td class="entry_range">
19144               <p>For FULL capability devices
19145 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
19146             </td>
19147
19148             <td class="entry_tags">
19149               <ul class="entry_tags">
19150                   <li><a href="#tag_V1">V1</a></li>
19151               </ul>
19152             </td>
19153
19154           </tr>
19155           <tr class="entries_header">
19156             <th class="th_details" colspan="5">Details</th>
19157           </tr>
19158           <tr class="entry_cont">
19159             <td class="entry_details" colspan="5">
19160               <p>Attempting to use frame durations beyond the maximum will result in the frame
19161 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
19162 durations.<wbr/></p>
19163 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19164 for the minimum frame duration values.<wbr/></p>
19165             </td>
19166           </tr>
19167
19168           <tr class="entries_header">
19169             <th class="th_details" colspan="5">HAL Implementation Details</th>
19170           </tr>
19171           <tr class="entry_cont">
19172             <td class="entry_details" colspan="5">
19173               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19174 The maximum of the range SHOULD be at least
19175 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
19176 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
19177 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
19178 value (since exposure time overrides frame duration).<wbr/></p>
19179 <p>Available minimum frame durations for JPEG must be no greater
19180 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
19181 minimum frame durations (for that respective size).<wbr/></p>
19182 <p>Since JPEG processing is considered offline and can take longer than
19183 a single uncompressed capture,<wbr/> refer to
19184 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
19185 for details about encoding this scenario.<wbr/></p>
19186             </td>
19187           </tr>
19188
19189           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19190            <!-- end of entry -->
19191         
19192                 
19193           <tr class="entry" id="static_android.sensor.info.physicalSize">
19194             <td class="entry_name
19195              " rowspan="5">
19196               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
19197             </td>
19198             <td class="entry_type">
19199                 <span class="entry_type_name">float</span>
19200                 <span class="entry_type_container">x</span>
19201
19202                 <span class="entry_type_array">
19203                   2
19204                 </span>
19205               <span class="entry_type_visibility"> [public as sizeF]</span>
19206
19207
19208               <span class="entry_type_hwlevel">[legacy] </span>
19209
19210
19211                 <div class="entry_type_notes">width x height</div>
19212
19213
19214             </td> <!-- entry_type -->
19215
19216             <td class="entry_description">
19217               <p>The physical dimensions of the full pixel
19218 array.<wbr/></p>
19219             </td>
19220
19221             <td class="entry_units">
19222               Millimeters
19223             </td>
19224
19225             <td class="entry_range">
19226             </td>
19227
19228             <td class="entry_tags">
19229               <ul class="entry_tags">
19230                   <li><a href="#tag_V1">V1</a></li>
19231                   <li><a href="#tag_BC">BC</a></li>
19232               </ul>
19233             </td>
19234
19235           </tr>
19236           <tr class="entries_header">
19237             <th class="th_details" colspan="5">Details</th>
19238           </tr>
19239           <tr class="entry_cont">
19240             <td class="entry_details" colspan="5">
19241               <p>This is the physical size of the sensor pixel
19242 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19243             </td>
19244           </tr>
19245
19246           <tr class="entries_header">
19247             <th class="th_details" colspan="5">HAL Implementation Details</th>
19248           </tr>
19249           <tr class="entry_cont">
19250             <td class="entry_details" colspan="5">
19251               <p>Needed for FOV calculation for old API</p>
19252             </td>
19253           </tr>
19254
19255           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19256            <!-- end of entry -->
19257         
19258                 
19259           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
19260             <td class="entry_name
19261              " rowspan="3">
19262               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
19263             </td>
19264             <td class="entry_type">
19265                 <span class="entry_type_name">int32</span>
19266                 <span class="entry_type_container">x</span>
19267
19268                 <span class="entry_type_array">
19269                   2
19270                 </span>
19271               <span class="entry_type_visibility"> [public as size]</span>
19272
19273
19274               <span class="entry_type_hwlevel">[legacy] </span>
19275
19276
19277
19278
19279             </td> <!-- entry_type -->
19280
19281             <td class="entry_description">
19282               <p>Dimensions of the full pixel array,<wbr/> possibly
19283 including black calibration pixels.<wbr/></p>
19284             </td>
19285
19286             <td class="entry_units">
19287               Pixels
19288             </td>
19289
19290             <td class="entry_range">
19291             </td>
19292
19293             <td class="entry_tags">
19294               <ul class="entry_tags">
19295                   <li><a href="#tag_RAW">RAW</a></li>
19296                   <li><a href="#tag_BC">BC</a></li>
19297               </ul>
19298             </td>
19299
19300           </tr>
19301           <tr class="entries_header">
19302             <th class="th_details" colspan="5">Details</th>
19303           </tr>
19304           <tr class="entry_cont">
19305             <td class="entry_details" colspan="5">
19306               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
19307 <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
19308 the raw buffers produced by this sensor.<wbr/></p>
19309 <p>If a camera device supports raw sensor formats,<wbr/> either this or
19310 <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
19311 output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
19312 whether or not the image sensor returns buffers containing pixels that are not
19313 part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
19314 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
19315 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
19316 defines the rectangle of active pixels that will be included in processed image
19317 formats.<wbr/></p>
19318             </td>
19319           </tr>
19320
19321
19322           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19323            <!-- end of entry -->
19324         
19325                 
19326           <tr class="entry" id="static_android.sensor.info.whiteLevel">
19327             <td class="entry_name
19328              " rowspan="5">
19329               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
19330             </td>
19331             <td class="entry_type">
19332                 <span class="entry_type_name">int32</span>
19333
19334               <span class="entry_type_visibility"> [public]</span>
19335
19336
19337
19338
19339
19340
19341             </td> <!-- entry_type -->
19342
19343             <td class="entry_description">
19344               <p>Maximum raw value output by sensor.<wbr/></p>
19345             </td>
19346
19347             <td class="entry_units">
19348             </td>
19349
19350             <td class="entry_range">
19351               <p>&gt; 255 (8-bit output)</p>
19352             </td>
19353
19354             <td class="entry_tags">
19355               <ul class="entry_tags">
19356                   <li><a href="#tag_RAW">RAW</a></li>
19357               </ul>
19358             </td>
19359
19360           </tr>
19361           <tr class="entries_header">
19362             <th class="th_details" colspan="5">Details</th>
19363           </tr>
19364           <tr class="entry_cont">
19365             <td class="entry_details" colspan="5">
19366               <p>This specifies the fully-saturated encoding level for the raw
19367 sample values from the sensor.<wbr/>  This is typically caused by the
19368 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
19369 each channel is specified by the offset in the
19370 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
19371 <p>The white level is typically determined either by sensor bit depth
19372 (8-14 bits is expected),<wbr/> or by the point where the sensor response
19373 becomes too non-linear to be useful.<wbr/>  The default value for this is
19374 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
19375 <p>The white level values of captured images may vary for different
19376 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
19377 represents a coarse approximation for such case.<wbr/> It is recommended
19378 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
19379 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
19380             </td>
19381           </tr>
19382
19383           <tr class="entries_header">
19384             <th class="th_details" colspan="5">HAL Implementation Details</th>
19385           </tr>
19386           <tr class="entry_cont">
19387             <td class="entry_details" colspan="5">
19388               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
19389 so the value for linear sensors should not be significantly lower
19390 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
19391             </td>
19392           </tr>
19393
19394           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19395            <!-- end of entry -->
19396         
19397                 
19398           <tr class="entry" id="static_android.sensor.info.timestampSource">
19399             <td class="entry_name
19400              " rowspan="5">
19401               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
19402             </td>
19403             <td class="entry_type">
19404                 <span class="entry_type_name entry_type_name_enum">byte</span>
19405
19406               <span class="entry_type_visibility"> [public]</span>
19407
19408
19409               <span class="entry_type_hwlevel">[legacy] </span>
19410
19411
19412
19413                 <ul class="entry_type_enum">
19414                   <li>
19415                     <span class="entry_type_enum_name">UNKNOWN</span>
19416                     <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/>
19417 but can not be compared to timestamps from other subsystems
19418 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
19419 camera devices in the same system.<wbr/> Timestamps between streams and results for
19420 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
19421 and the result metadata generated by a single capture are identical.<wbr/></p></span>
19422                   </li>
19423                   <li>
19424                     <span class="entry_type_enum_name">REALTIME</span>
19425                     <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
19426 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
19427 and they can be compared to other timestamps using that base.<wbr/></p></span>
19428                   </li>
19429                 </ul>
19430
19431             </td> <!-- entry_type -->
19432
19433             <td class="entry_description">
19434               <p>The time base source for sensor capture start timestamps.<wbr/></p>
19435             </td>
19436
19437             <td class="entry_units">
19438             </td>
19439
19440             <td class="entry_range">
19441             </td>
19442
19443             <td class="entry_tags">
19444               <ul class="entry_tags">
19445                   <li><a href="#tag_V1">V1</a></li>
19446               </ul>
19447             </td>
19448
19449           </tr>
19450           <tr class="entries_header">
19451             <th class="th_details" colspan="5">Details</th>
19452           </tr>
19453           <tr class="entry_cont">
19454             <td class="entry_details" colspan="5">
19455               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19456 may not based on a time source that can be compared to other system time sources.<wbr/></p>
19457 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19458 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19459             </td>
19460           </tr>
19461
19462           <tr class="entries_header">
19463             <th class="th_details" colspan="5">HAL Implementation Details</th>
19464           </tr>
19465           <tr class="entry_cont">
19466             <td class="entry_details" colspan="5">
19467               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
19468 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
19469 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
19470 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
19471 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
19472 recording might suffer unexpected behavior.<wbr/></p>
19473 <p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which
19474 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
19475             </td>
19476           </tr>
19477
19478           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19479            <!-- end of entry -->
19480         
19481                 
19482           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19483             <td class="entry_name
19484              " rowspan="3">
19485               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19486             </td>
19487             <td class="entry_type">
19488                 <span class="entry_type_name entry_type_name_enum">byte</span>
19489
19490               <span class="entry_type_visibility"> [public as boolean]</span>
19491
19492
19493
19494
19495
19496                 <ul class="entry_type_enum">
19497                   <li>
19498                     <span class="entry_type_enum_name">FALSE</span>
19499                   </li>
19500                   <li>
19501                     <span class="entry_type_enum_name">TRUE</span>
19502                   </li>
19503                 </ul>
19504
19505             </td> <!-- entry_type -->
19506
19507             <td class="entry_description">
19508               <p>Whether the RAW images output from this camera device are subject to
19509 lens shading correction.<wbr/></p>
19510             </td>
19511
19512             <td class="entry_units">
19513             </td>
19514
19515             <td class="entry_range">
19516             </td>
19517
19518             <td class="entry_tags">
19519             </td>
19520
19521           </tr>
19522           <tr class="entries_header">
19523             <th class="th_details" colspan="5">Details</th>
19524           </tr>
19525           <tr class="entry_cont">
19526             <td class="entry_details" colspan="5">
19527               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19528 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19529 not be adjusted for lens shading correction.<wbr/>
19530 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>
19531 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19532 Devices with RAW capability will always report this information in this key.<wbr/></p>
19533             </td>
19534           </tr>
19535
19536
19537           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19538            <!-- end of entry -->
19539         
19540                 
19541           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19542             <td class="entry_name
19543              " rowspan="5">
19544               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19545             </td>
19546             <td class="entry_type">
19547                 <span class="entry_type_name">int32</span>
19548                 <span class="entry_type_container">x</span>
19549
19550                 <span class="entry_type_array">
19551                   4
19552                 </span>
19553               <span class="entry_type_visibility"> [public as rectangle]</span>
19554
19555
19556               <span class="entry_type_hwlevel">[legacy] </span>
19557
19558
19559                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19560
19561
19562             </td> <!-- entry_type -->
19563
19564             <td class="entry_description">
19565               <p>The area of the image sensor which corresponds to active pixels prior to the
19566 application of any geometric distortion correction.<wbr/></p>
19567             </td>
19568
19569             <td class="entry_units">
19570               Pixel coordinates on the image sensor
19571             </td>
19572
19573             <td class="entry_range">
19574             </td>
19575
19576             <td class="entry_tags">
19577               <ul class="entry_tags">
19578                   <li><a href="#tag_RAW">RAW</a></li>
19579               </ul>
19580             </td>
19581
19582           </tr>
19583           <tr class="entries_header">
19584             <th class="th_details" colspan="5">Details</th>
19585           </tr>
19586           <tr class="entry_cont">
19587             <td class="entry_details" colspan="5">
19588               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19589 the region that actually receives light from the scene) before any geometric correction
19590 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19591 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19592 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19593 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19594 <p>The size of this region determines the maximum field of view and the maximum number of
19595 pixels that an image from this sensor can contain,<wbr/> prior to the application of
19596 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19597 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>
19598 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19599 can be calculated by applying the geometric distortion correction fields to this
19600 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>
19601 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19602 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/>
19603 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19604 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19605 <ol>
19606 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19607 <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
19608 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19609 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19610 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19611 buffers is defined relative to the top,<wbr/> left of the
19612 <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>
19613 <li>If the resulting corrected pixel coordinate is within the region given in
19614 <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
19615 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19616 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19617 </ol>
19618 <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>
19619 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/>
19620 <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
19621 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19622 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19623 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)
19624 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19625 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19626 <p>The currently supported fields that correct for geometric distortion are:</p>
19627 <ol>
19628 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19629 </ol>
19630 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19631 as the post-distortion-corrected rectangle given in
19632 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19633 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19634 the full pixel array,<wbr/> and the size of the full pixel array is given by
19635 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19636 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19637 full array may include black calibration pixels or other inactive regions.<wbr/></p>
19638             </td>
19639           </tr>
19640
19641           <tr class="entries_header">
19642             <th class="th_details" colspan="5">HAL Implementation Details</th>
19643           </tr>
19644           <tr class="entry_cont">
19645             <td class="entry_details" colspan="5">
19646               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19647 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19648 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>
19649 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19650 the same as the post-correction active array region given in
19651 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19652             </td>
19653           </tr>
19654
19655           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19656            <!-- end of entry -->
19657         
19658         
19659         
19660
19661                 
19662           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19663             <td class="entry_name
19664              " rowspan="5">
19665               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19666             </td>
19667             <td class="entry_type">
19668                 <span class="entry_type_name entry_type_name_enum">byte</span>
19669
19670               <span class="entry_type_visibility"> [public]</span>
19671
19672
19673
19674
19675
19676                 <ul class="entry_type_enum">
19677                   <li>
19678                     <span class="entry_type_enum_name">DAYLIGHT</span>
19679                     <span class="entry_type_enum_value">1</span>
19680                   </li>
19681                   <li>
19682                     <span class="entry_type_enum_name">FLUORESCENT</span>
19683                     <span class="entry_type_enum_value">2</span>
19684                   </li>
19685                   <li>
19686                     <span class="entry_type_enum_name">TUNGSTEN</span>
19687                     <span class="entry_type_enum_value">3</span>
19688                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19689                   </li>
19690                   <li>
19691                     <span class="entry_type_enum_name">FLASH</span>
19692                     <span class="entry_type_enum_value">4</span>
19693                   </li>
19694                   <li>
19695                     <span class="entry_type_enum_name">FINE_WEATHER</span>
19696                     <span class="entry_type_enum_value">9</span>
19697                   </li>
19698                   <li>
19699                     <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19700                     <span class="entry_type_enum_value">10</span>
19701                   </li>
19702                   <li>
19703                     <span class="entry_type_enum_name">SHADE</span>
19704                     <span class="entry_type_enum_value">11</span>
19705                   </li>
19706                   <li>
19707                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19708                     <span class="entry_type_enum_value">12</span>
19709                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19710                   </li>
19711                   <li>
19712                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19713                     <span class="entry_type_enum_value">13</span>
19714                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19715                   </li>
19716                   <li>
19717                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19718                     <span class="entry_type_enum_value">14</span>
19719                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19720                   </li>
19721                   <li>
19722                     <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19723                     <span class="entry_type_enum_value">15</span>
19724                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19725                   </li>
19726                   <li>
19727                     <span class="entry_type_enum_name">STANDARD_A</span>
19728                     <span class="entry_type_enum_value">17</span>
19729                   </li>
19730                   <li>
19731                     <span class="entry_type_enum_name">STANDARD_B</span>
19732                     <span class="entry_type_enum_value">18</span>
19733                   </li>
19734                   <li>
19735                     <span class="entry_type_enum_name">STANDARD_C</span>
19736                     <span class="entry_type_enum_value">19</span>
19737                   </li>
19738                   <li>
19739                     <span class="entry_type_enum_name">D55</span>
19740                     <span class="entry_type_enum_value">20</span>
19741                   </li>
19742                   <li>
19743                     <span class="entry_type_enum_name">D65</span>
19744                     <span class="entry_type_enum_value">21</span>
19745                   </li>
19746                   <li>
19747                     <span class="entry_type_enum_name">D75</span>
19748                     <span class="entry_type_enum_value">22</span>
19749                   </li>
19750                   <li>
19751                     <span class="entry_type_enum_name">D50</span>
19752                     <span class="entry_type_enum_value">23</span>
19753                   </li>
19754                   <li>
19755                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19756                     <span class="entry_type_enum_value">24</span>
19757                   </li>
19758                 </ul>
19759
19760             </td> <!-- entry_type -->
19761
19762             <td class="entry_description">
19763               <p>The standard reference illuminant used as the scene light source when
19764 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19765 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19766 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19767             </td>
19768
19769             <td class="entry_units">
19770             </td>
19771
19772             <td class="entry_range">
19773             </td>
19774
19775             <td class="entry_tags">
19776               <ul class="entry_tags">
19777                   <li><a href="#tag_RAW">RAW</a></li>
19778               </ul>
19779             </td>
19780
19781           </tr>
19782           <tr class="entries_header">
19783             <th class="th_details" colspan="5">Details</th>
19784           </tr>
19785           <tr class="entry_cont">
19786             <td class="entry_details" colspan="5">
19787               <p>The values in this key correspond to the values defined for the
19788 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19789 that are often used calibrating camera devices.<wbr/></p>
19790 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19791 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19792 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19793 <p>Some devices may choose to provide a second set of calibration
19794 information for improved quality,<wbr/> including
19795 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19796             </td>
19797           </tr>
19798
19799           <tr class="entries_header">
19800             <th class="th_details" colspan="5">HAL Implementation Details</th>
19801           </tr>
19802           <tr class="entry_cont">
19803             <td class="entry_details" colspan="5">
19804               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19805 and corresponding matrices must be present to support the RAW capability
19806 and DNG output.<wbr/></p>
19807 <p>When producing raw images with a color profile that has only been
19808 calibrated against a single light source,<wbr/> it is valid to omit
19809 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19810 <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/>
19811 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19812 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19813 chosen so that it is representative of typical scene lighting.<wbr/>  In
19814 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19815 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19816 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19817 chosen to represent the typical range of scene lighting conditions.<wbr/>
19818 In general,<wbr/> low color temperature illuminant such as Standard-A will
19819 be chosen for the first reference illuminant and a higher color
19820 temperature illuminant such as D65 will be chosen for the second
19821 reference illuminant.<wbr/></p>
19822             </td>
19823           </tr>
19824
19825           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19826            <!-- end of entry -->
19827         
19828                 
19829           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19830             <td class="entry_name
19831              " rowspan="3">
19832               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19833             </td>
19834             <td class="entry_type">
19835                 <span class="entry_type_name">byte</span>
19836
19837               <span class="entry_type_visibility"> [public]</span>
19838
19839
19840
19841
19842
19843
19844             </td> <!-- entry_type -->
19845
19846             <td class="entry_description">
19847               <p>The standard reference illuminant used as the scene light source when
19848 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19849 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19850 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19851             </td>
19852
19853             <td class="entry_units">
19854             </td>
19855
19856             <td class="entry_range">
19857               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19858             </td>
19859
19860             <td class="entry_tags">
19861               <ul class="entry_tags">
19862                   <li><a href="#tag_RAW">RAW</a></li>
19863               </ul>
19864             </td>
19865
19866           </tr>
19867           <tr class="entries_header">
19868             <th class="th_details" colspan="5">Details</th>
19869           </tr>
19870           <tr class="entry_cont">
19871             <td class="entry_details" colspan="5">
19872               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19873 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19874 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19875 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19876             </td>
19877           </tr>
19878
19879
19880           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19881            <!-- end of entry -->
19882         
19883                 
19884           <tr class="entry" id="static_android.sensor.calibrationTransform1">
19885             <td class="entry_name
19886              " rowspan="3">
19887               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19888             </td>
19889             <td class="entry_type">
19890                 <span class="entry_type_name">rational</span>
19891                 <span class="entry_type_container">x</span>
19892
19893                 <span class="entry_type_array">
19894                   3 x 3
19895                 </span>
19896               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19897
19898
19899
19900
19901                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19902
19903
19904             </td> <!-- entry_type -->
19905
19906             <td class="entry_description">
19907               <p>A per-device calibration transform matrix that maps from the
19908 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19909             </td>
19910
19911             <td class="entry_units">
19912             </td>
19913
19914             <td class="entry_range">
19915             </td>
19916
19917             <td class="entry_tags">
19918               <ul class="entry_tags">
19919                   <li><a href="#tag_RAW">RAW</a></li>
19920               </ul>
19921             </td>
19922
19923           </tr>
19924           <tr class="entries_header">
19925             <th class="th_details" colspan="5">Details</th>
19926           </tr>
19927           <tr class="entry_cont">
19928             <td class="entry_details" colspan="5">
19929               <p>This matrix is used to correct for per-device variations in the
19930 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19931 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19932 contains a per-device calibration transform that maps colors
19933 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19934 colorspace) into this camera device's native sensor color
19935 space under the first reference illuminant
19936 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19937             </td>
19938           </tr>
19939
19940
19941           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19942            <!-- end of entry -->
19943         
19944                 
19945           <tr class="entry" id="static_android.sensor.calibrationTransform2">
19946             <td class="entry_name
19947              " rowspan="3">
19948               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19949             </td>
19950             <td class="entry_type">
19951                 <span class="entry_type_name">rational</span>
19952                 <span class="entry_type_container">x</span>
19953
19954                 <span class="entry_type_array">
19955                   3 x 3
19956                 </span>
19957               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19958
19959
19960
19961
19962                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19963
19964
19965             </td> <!-- entry_type -->
19966
19967             <td class="entry_description">
19968               <p>A per-device calibration transform matrix that maps from the
19969 reference sensor colorspace to the actual device sensor colorspace
19970 (this is the colorspace of the raw buffer data).<wbr/></p>
19971             </td>
19972
19973             <td class="entry_units">
19974             </td>
19975
19976             <td class="entry_range">
19977             </td>
19978
19979             <td class="entry_tags">
19980               <ul class="entry_tags">
19981                   <li><a href="#tag_RAW">RAW</a></li>
19982               </ul>
19983             </td>
19984
19985           </tr>
19986           <tr class="entries_header">
19987             <th class="th_details" colspan="5">Details</th>
19988           </tr>
19989           <tr class="entry_cont">
19990             <td class="entry_details" colspan="5">
19991               <p>This matrix is used to correct for per-device variations in the
19992 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19993 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19994 contains a per-device calibration transform that maps colors
19995 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19996 colorspace) into this camera device's native sensor color
19997 space under the second reference illuminant
19998 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19999 <p>This matrix will only be present if the second reference
20000 illuminant is present.<wbr/></p>
20001             </td>
20002           </tr>
20003
20004
20005           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20006            <!-- end of entry -->
20007         
20008                 
20009           <tr class="entry" id="static_android.sensor.colorTransform1">
20010             <td class="entry_name
20011              " rowspan="3">
20012               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
20013             </td>
20014             <td class="entry_type">
20015                 <span class="entry_type_name">rational</span>
20016                 <span class="entry_type_container">x</span>
20017
20018                 <span class="entry_type_array">
20019                   3 x 3
20020                 </span>
20021               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20022
20023
20024
20025
20026                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20027
20028
20029             </td> <!-- entry_type -->
20030
20031             <td class="entry_description">
20032               <p>A matrix that transforms color values from CIE XYZ color space to
20033 reference sensor color space.<wbr/></p>
20034             </td>
20035
20036             <td class="entry_units">
20037             </td>
20038
20039             <td class="entry_range">
20040             </td>
20041
20042             <td class="entry_tags">
20043               <ul class="entry_tags">
20044                   <li><a href="#tag_RAW">RAW</a></li>
20045               </ul>
20046             </td>
20047
20048           </tr>
20049           <tr class="entries_header">
20050             <th class="th_details" colspan="5">Details</th>
20051           </tr>
20052           <tr class="entry_cont">
20053             <td class="entry_details" colspan="5">
20054               <p>This matrix is used to convert from the standard CIE XYZ color
20055 space to the reference sensor colorspace,<wbr/> and is used when processing
20056 raw buffer data.<wbr/></p>
20057 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20058 contains a color transform matrix that maps colors from the CIE
20059 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20060 "golden module" colorspace) under the first reference illuminant
20061 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20062 <p>The white points chosen in both the reference sensor color space
20063 and the CIE XYZ colorspace when calculating this transform will
20064 match the standard white point for the first reference illuminant
20065 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20066             </td>
20067           </tr>
20068
20069
20070           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20071            <!-- end of entry -->
20072         
20073                 
20074           <tr class="entry" id="static_android.sensor.colorTransform2">
20075             <td class="entry_name
20076              " rowspan="3">
20077               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
20078             </td>
20079             <td class="entry_type">
20080                 <span class="entry_type_name">rational</span>
20081                 <span class="entry_type_container">x</span>
20082
20083                 <span class="entry_type_array">
20084                   3 x 3
20085                 </span>
20086               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20087
20088
20089
20090
20091                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20092
20093
20094             </td> <!-- entry_type -->
20095
20096             <td class="entry_description">
20097               <p>A matrix that transforms color values from CIE XYZ color space to
20098 reference sensor color space.<wbr/></p>
20099             </td>
20100
20101             <td class="entry_units">
20102             </td>
20103
20104             <td class="entry_range">
20105             </td>
20106
20107             <td class="entry_tags">
20108               <ul class="entry_tags">
20109                   <li><a href="#tag_RAW">RAW</a></li>
20110               </ul>
20111             </td>
20112
20113           </tr>
20114           <tr class="entries_header">
20115             <th class="th_details" colspan="5">Details</th>
20116           </tr>
20117           <tr class="entry_cont">
20118             <td class="entry_details" colspan="5">
20119               <p>This matrix is used to convert from the standard CIE XYZ color
20120 space to the reference sensor colorspace,<wbr/> and is used when processing
20121 raw buffer data.<wbr/></p>
20122 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20123 contains a color transform matrix that maps colors from the CIE
20124 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20125 "golden module" colorspace) under the second reference illuminant
20126 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
20127 <p>The white points chosen in both the reference sensor color space
20128 and the CIE XYZ colorspace when calculating this transform will
20129 match the standard white point for the second reference illuminant
20130 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20131 <p>This matrix will only be present if the second reference
20132 illuminant is present.<wbr/></p>
20133             </td>
20134           </tr>
20135
20136
20137           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20138            <!-- end of entry -->
20139         
20140                 
20141           <tr class="entry" id="static_android.sensor.forwardMatrix1">
20142             <td class="entry_name
20143              " rowspan="3">
20144               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
20145             </td>
20146             <td class="entry_type">
20147                 <span class="entry_type_name">rational</span>
20148                 <span class="entry_type_container">x</span>
20149
20150                 <span class="entry_type_array">
20151                   3 x 3
20152                 </span>
20153               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20154
20155
20156
20157
20158                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20159
20160
20161             </td> <!-- entry_type -->
20162
20163             <td class="entry_description">
20164               <p>A matrix that transforms white balanced camera colors from the reference
20165 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20166             </td>
20167
20168             <td class="entry_units">
20169             </td>
20170
20171             <td class="entry_range">
20172             </td>
20173
20174             <td class="entry_tags">
20175               <ul class="entry_tags">
20176                   <li><a href="#tag_RAW">RAW</a></li>
20177               </ul>
20178             </td>
20179
20180           </tr>
20181           <tr class="entries_header">
20182             <th class="th_details" colspan="5">Details</th>
20183           </tr>
20184           <tr class="entry_cont">
20185             <td class="entry_details" colspan="5">
20186               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20187 is used when processing raw buffer data.<wbr/></p>
20188 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20189 a color transform matrix that maps white balanced colors from the
20190 reference sensor color space to the CIE XYZ color space with a D50 white
20191 point.<wbr/></p>
20192 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20193 this matrix is chosen so that the standard white point for this reference
20194 illuminant in the reference sensor colorspace is mapped to D50 in the
20195 CIE XYZ colorspace.<wbr/></p>
20196             </td>
20197           </tr>
20198
20199
20200           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20201            <!-- end of entry -->
20202         
20203                 
20204           <tr class="entry" id="static_android.sensor.forwardMatrix2">
20205             <td class="entry_name
20206              " rowspan="3">
20207               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
20208             </td>
20209             <td class="entry_type">
20210                 <span class="entry_type_name">rational</span>
20211                 <span class="entry_type_container">x</span>
20212
20213                 <span class="entry_type_array">
20214                   3 x 3
20215                 </span>
20216               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20217
20218
20219
20220
20221                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20222
20223
20224             </td> <!-- entry_type -->
20225
20226             <td class="entry_description">
20227               <p>A matrix that transforms white balanced camera colors from the reference
20228 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20229             </td>
20230
20231             <td class="entry_units">
20232             </td>
20233
20234             <td class="entry_range">
20235             </td>
20236
20237             <td class="entry_tags">
20238               <ul class="entry_tags">
20239                   <li><a href="#tag_RAW">RAW</a></li>
20240               </ul>
20241             </td>
20242
20243           </tr>
20244           <tr class="entries_header">
20245             <th class="th_details" colspan="5">Details</th>
20246           </tr>
20247           <tr class="entry_cont">
20248             <td class="entry_details" colspan="5">
20249               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20250 is used when processing raw buffer data.<wbr/></p>
20251 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20252 a color transform matrix that maps white balanced colors from the
20253 reference sensor color space to the CIE XYZ color space with a D50 white
20254 point.<wbr/></p>
20255 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
20256 this matrix is chosen so that the standard white point for this reference
20257 illuminant in the reference sensor colorspace is mapped to D50 in the
20258 CIE XYZ colorspace.<wbr/></p>
20259 <p>This matrix will only be present if the second reference
20260 illuminant is present.<wbr/></p>
20261             </td>
20262           </tr>
20263
20264
20265           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20266            <!-- end of entry -->
20267         
20268                 
20269           <tr class="entry" id="static_android.sensor.baseGainFactor">
20270             <td class="entry_name
20271              " rowspan="1">
20272               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
20273             </td>
20274             <td class="entry_type">
20275                 <span class="entry_type_name">rational</span>
20276
20277               <span class="entry_type_visibility"> [system]</span>
20278
20279
20280
20281
20282
20283
20284             </td> <!-- entry_type -->
20285
20286             <td class="entry_description">
20287               <p>Gain factor from electrons to raw units when
20288 ISO=100</p>
20289             </td>
20290
20291             <td class="entry_units">
20292             </td>
20293
20294             <td class="entry_range">
20295             </td>
20296
20297             <td class="entry_tags">
20298               <ul class="entry_tags">
20299                   <li><a href="#tag_FUTURE">FUTURE</a></li>
20300               </ul>
20301             </td>
20302
20303           </tr>
20304
20305
20306           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20307            <!-- end of entry -->
20308         
20309                 
20310           <tr class="entry" id="static_android.sensor.blackLevelPattern">
20311             <td class="entry_name
20312              " rowspan="5">
20313               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
20314             </td>
20315             <td class="entry_type">
20316                 <span class="entry_type_name">int32</span>
20317                 <span class="entry_type_container">x</span>
20318
20319                 <span class="entry_type_array">
20320                   4
20321                 </span>
20322               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
20323
20324
20325
20326
20327                 <div class="entry_type_notes">2x2 raw count block</div>
20328
20329
20330             </td> <!-- entry_type -->
20331
20332             <td class="entry_description">
20333               <p>A fixed black level offset for each of the color filter arrangement
20334 (CFA) mosaic channels.<wbr/></p>
20335             </td>
20336
20337             <td class="entry_units">
20338             </td>
20339
20340             <td class="entry_range">
20341               <p>&gt;= 0 for each.<wbr/></p>
20342             </td>
20343
20344             <td class="entry_tags">
20345               <ul class="entry_tags">
20346                   <li><a href="#tag_RAW">RAW</a></li>
20347               </ul>
20348             </td>
20349
20350           </tr>
20351           <tr class="entries_header">
20352             <th class="th_details" colspan="5">Details</th>
20353           </tr>
20354           <tr class="entry_cont">
20355             <td class="entry_details" colspan="5">
20356               <p>This key specifies the zero light value for each of the CFA mosaic
20357 channels in the camera sensor.<wbr/>  The maximal value output by the
20358 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>
20359 <p>The values are given in the same order as channels listed for the CFA
20360 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
20361 nth value given corresponds to the black level offset for the nth
20362 color channel listed in the CFA.<wbr/></p>
20363 <p>The black level values of captured images may vary for different
20364 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20365 represents a coarse approximation for such case.<wbr/> It is recommended to
20366 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
20367 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
20368 supported by the camera device,<wbr/> which provides more accurate black
20369 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
20370 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
20371 level values for each frame.<wbr/></p>
20372             </td>
20373           </tr>
20374
20375           <tr class="entries_header">
20376             <th class="th_details" colspan="5">HAL Implementation Details</th>
20377           </tr>
20378           <tr class="entry_cont">
20379             <td class="entry_details" colspan="5">
20380               <p>The values are given in row-column scan order,<wbr/> with the first value
20381 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
20382             </td>
20383           </tr>
20384
20385           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20386            <!-- end of entry -->
20387         
20388                 
20389           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
20390             <td class="entry_name
20391              " rowspan="3">
20392               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
20393             </td>
20394             <td class="entry_type">
20395                 <span class="entry_type_name">int32</span>
20396
20397               <span class="entry_type_visibility"> [public]</span>
20398
20399
20400               <span class="entry_type_hwlevel">[full] </span>
20401
20402
20403
20404
20405             </td> <!-- entry_type -->
20406
20407             <td class="entry_description">
20408               <p>Maximum sensitivity that is implemented
20409 purely through analog gain.<wbr/></p>
20410             </td>
20411
20412             <td class="entry_units">
20413             </td>
20414
20415             <td class="entry_range">
20416             </td>
20417
20418             <td class="entry_tags">
20419               <ul class="entry_tags">
20420                   <li><a href="#tag_V1">V1</a></li>
20421                   <li><a href="#tag_FULL">FULL</a></li>
20422               </ul>
20423             </td>
20424
20425           </tr>
20426           <tr class="entries_header">
20427             <th class="th_details" colspan="5">Details</th>
20428           </tr>
20429           <tr class="entry_cont">
20430             <td class="entry_details" colspan="5">
20431               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
20432 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
20433 values above this,<wbr/> the gain applied can be a mix of analog and
20434 digital.<wbr/></p>
20435             </td>
20436           </tr>
20437
20438
20439           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20440            <!-- end of entry -->
20441         
20442                 
20443           <tr class="entry" id="static_android.sensor.orientation">
20444             <td class="entry_name
20445              " rowspan="3">
20446               android.<wbr/>sensor.<wbr/>orientation
20447             </td>
20448             <td class="entry_type">
20449                 <span class="entry_type_name">int32</span>
20450
20451               <span class="entry_type_visibility"> [public]</span>
20452
20453
20454               <span class="entry_type_hwlevel">[legacy] </span>
20455
20456
20457
20458
20459             </td> <!-- entry_type -->
20460
20461             <td class="entry_description">
20462               <p>Clockwise angle through which the output image needs to be rotated to be
20463 upright on the device screen in its native orientation.<wbr/></p>
20464             </td>
20465
20466             <td class="entry_units">
20467               Degrees of clockwise rotation; always a multiple of
20468           90
20469             </td>
20470
20471             <td class="entry_range">
20472               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
20473             </td>
20474
20475             <td class="entry_tags">
20476               <ul class="entry_tags">
20477                   <li><a href="#tag_BC">BC</a></li>
20478               </ul>
20479             </td>
20480
20481           </tr>
20482           <tr class="entries_header">
20483             <th class="th_details" colspan="5">Details</th>
20484           </tr>
20485           <tr class="entry_cont">
20486             <td class="entry_details" colspan="5">
20487               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20488 the sensor's coordinate system.<wbr/></p>
20489             </td>
20490           </tr>
20491
20492
20493           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20494            <!-- end of entry -->
20495         
20496                 
20497           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20498             <td class="entry_name
20499              " rowspan="3">
20500               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20501             </td>
20502             <td class="entry_type">
20503                 <span class="entry_type_name">int32</span>
20504                 <span class="entry_type_container">x</span>
20505
20506                 <span class="entry_type_array">
20507                   3
20508                 </span>
20509               <span class="entry_type_visibility"> [system]</span>
20510
20511
20512
20513
20514                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20515
20516
20517             </td> <!-- entry_type -->
20518
20519             <td class="entry_description">
20520               <p>The number of input samples for each dimension of
20521 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20522             </td>
20523
20524             <td class="entry_units">
20525             </td>
20526
20527             <td class="entry_range">
20528               <p>Hue &gt;= 1,<wbr/>
20529 Saturation &gt;= 2,<wbr/>
20530 Value &gt;= 1</p>
20531             </td>
20532
20533             <td class="entry_tags">
20534               <ul class="entry_tags">
20535                   <li><a href="#tag_RAW">RAW</a></li>
20536               </ul>
20537             </td>
20538
20539           </tr>
20540           <tr class="entries_header">
20541             <th class="th_details" colspan="5">Details</th>
20542           </tr>
20543           <tr class="entry_cont">
20544             <td class="entry_details" colspan="5">
20545               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20546 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
20547 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20548 element.<wbr/></p>
20549             </td>
20550           </tr>
20551
20552
20553           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20554            <!-- end of entry -->
20555         
20556                 
20557           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20558             <td class="entry_name
20559              " rowspan="5">
20560               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20561             </td>
20562             <td class="entry_type">
20563                 <span class="entry_type_name">int32</span>
20564                 <span class="entry_type_container">x</span>
20565
20566                 <span class="entry_type_array">
20567                   n
20568                 </span>
20569               <span class="entry_type_visibility"> [public]</span>
20570
20571
20572
20573
20574                 <div class="entry_type_notes">list of enums</div>
20575
20576
20577             </td> <!-- entry_type -->
20578
20579             <td class="entry_description">
20580               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20581 supported by this camera device.<wbr/></p>
20582             </td>
20583
20584             <td class="entry_units">
20585             </td>
20586
20587             <td class="entry_range">
20588               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20589             </td>
20590
20591             <td class="entry_tags">
20592             </td>
20593
20594           </tr>
20595           <tr class="entries_header">
20596             <th class="th_details" colspan="5">Details</th>
20597           </tr>
20598           <tr class="entry_cont">
20599             <td class="entry_details" colspan="5">
20600               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20601             </td>
20602           </tr>
20603
20604           <tr class="entries_header">
20605             <th class="th_details" colspan="5">HAL Implementation Details</th>
20606           </tr>
20607           <tr class="entry_cont">
20608             <td class="entry_details" colspan="5">
20609               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20610             </td>
20611           </tr>
20612
20613           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20614            <!-- end of entry -->
20615         
20616                 
20617           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
20618             <td class="entry_name
20619              " rowspan="5">
20620               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
20621             </td>
20622             <td class="entry_type">
20623                 <span class="entry_type_name">int32</span>
20624                 <span class="entry_type_container">x</span>
20625
20626                 <span class="entry_type_array">
20627                   4 x num_regions
20628                 </span>
20629               <span class="entry_type_visibility"> [public as rectangle]</span>
20630
20631
20632
20633
20634
20635
20636             </td> <!-- entry_type -->
20637
20638             <td class="entry_description">
20639               <p>List of disjoint rectangles indicating the sensor
20640 optically shielded black pixel regions.<wbr/></p>
20641             </td>
20642
20643             <td class="entry_units">
20644             </td>
20645
20646             <td class="entry_range">
20647             </td>
20648
20649             <td class="entry_tags">
20650             </td>
20651
20652           </tr>
20653           <tr class="entries_header">
20654             <th class="th_details" colspan="5">Details</th>
20655           </tr>
20656           <tr class="entry_cont">
20657             <td class="entry_details" colspan="5">
20658               <p>In most camera sensors,<wbr/> the active array is surrounded by some
20659 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
20660 provides a reliable black reference for black level compensation
20661 in active array region.<wbr/></p>
20662 <p>This key provides a list of disjoint rectangles specifying the
20663 regions of optically shielded (with metal shield) black pixel
20664 regions if the camera device is capable of reading out these black
20665 pixels in the output raw images.<wbr/> In comparison to the fixed black
20666 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
20667 may provide a more accurate way for the application to calculate
20668 black level of each captured raw images.<wbr/></p>
20669 <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
20670 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
20671             </td>
20672           </tr>
20673
20674           <tr class="entries_header">
20675             <th class="th_details" colspan="5">HAL Implementation Details</th>
20676           </tr>
20677           <tr class="entry_cont">
20678             <td class="entry_details" colspan="5">
20679               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
20680 must be &gt;= (0,<wbr/>0) and &lt;=
20681 <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
20682 &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
20683 outside the region reported by
20684 <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>
20685 <p>The HAL must report minimal number of disjoint regions for the
20686 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
20687 be covered by one rectangle,<wbr/> the HAL must not split this region into
20688 multiple rectangles.<wbr/></p>
20689             </td>
20690           </tr>
20691
20692           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20693            <!-- end of entry -->
20694         
20695                 
20696           <tr class="entry" id="static_android.sensor.opaqueRawSize">
20697             <td class="entry_name
20698              " rowspan="5">
20699               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
20700             </td>
20701             <td class="entry_type">
20702                 <span class="entry_type_name">int32</span>
20703                 <span class="entry_type_container">x</span>
20704
20705                 <span class="entry_type_array">
20706                   n x 3
20707                 </span>
20708               <span class="entry_type_visibility"> [system]</span>
20709
20710
20711
20712
20713
20714
20715             </td> <!-- entry_type -->
20716
20717             <td class="entry_description">
20718               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
20719             </td>
20720
20721             <td class="entry_units">
20722             </td>
20723
20724             <td class="entry_range">
20725               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
20726 the camera</p>
20727             </td>
20728
20729             <td class="entry_tags">
20730             </td>
20731
20732           </tr>
20733           <tr class="entries_header">
20734             <th class="th_details" colspan="5">Details</th>
20735           </tr>
20736           <tr class="entry_cont">
20737             <td class="entry_details" colspan="5">
20738               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
20739 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
20740 All RAW_<wbr/>OPAQUE output stream configuration listed in
20741 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
20742 this key.<wbr/></p>
20743             </td>
20744           </tr>
20745
20746           <tr class="entries_header">
20747             <th class="th_details" colspan="5">HAL Implementation Details</th>
20748           </tr>
20749           <tr class="entry_cont">
20750             <td class="entry_details" colspan="5">
20751               <p>This key is added in HAL3.<wbr/>4.<wbr/>
20752 For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
20753 For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
20754 will derive this key by assuming each pixel takes two bytes and no padding bytes
20755 between rows.<wbr/></p>
20756             </td>
20757           </tr>
20758
20759           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20760            <!-- end of entry -->
20761         
20762         
20763
20764       <!-- end of kind -->
20765       </tbody>
20766       <tr><td colspan="6" class="kind">dynamic</td></tr>
20767
20768       <thead class="entries_header">
20769         <tr>
20770           <th class="th_name">Property Name</th>
20771           <th class="th_type">Type</th>
20772           <th class="th_description">Description</th>
20773           <th class="th_units">Units</th>
20774           <th class="th_range">Range</th>
20775           <th class="th_tags">Tags</th>
20776         </tr>
20777       </thead>
20778
20779       <tbody>
20780
20781         
20782
20783         
20784
20785         
20786
20787         
20788
20789                 
20790           <tr class="entry" id="dynamic_android.sensor.exposureTime">
20791             <td class="entry_name
20792              " rowspan="3">
20793               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20794             </td>
20795             <td class="entry_type">
20796                 <span class="entry_type_name">int64</span>
20797
20798               <span class="entry_type_visibility"> [public]</span>
20799
20800
20801               <span class="entry_type_hwlevel">[full] </span>
20802
20803
20804
20805
20806             </td> <!-- entry_type -->
20807
20808             <td class="entry_description">
20809               <p>Duration each pixel is exposed to
20810 light.<wbr/></p>
20811             </td>
20812
20813             <td class="entry_units">
20814               Nanoseconds
20815             </td>
20816
20817             <td class="entry_range">
20818               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20819             </td>
20820
20821             <td class="entry_tags">
20822               <ul class="entry_tags">
20823                   <li><a href="#tag_V1">V1</a></li>
20824               </ul>
20825             </td>
20826
20827           </tr>
20828           <tr class="entries_header">
20829             <th class="th_details" colspan="5">Details</th>
20830           </tr>
20831           <tr class="entry_cont">
20832             <td class="entry_details" colspan="5">
20833               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20834 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20835 The final exposure time used will be available in the output capture result.<wbr/></p>
20836 <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
20837 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20838             </td>
20839           </tr>
20840
20841
20842           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20843            <!-- end of entry -->
20844         
20845                 
20846           <tr class="entry" id="dynamic_android.sensor.frameDuration">
20847             <td class="entry_name
20848              " rowspan="5">
20849               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20850             </td>
20851             <td class="entry_type">
20852                 <span class="entry_type_name">int64</span>
20853
20854               <span class="entry_type_visibility"> [public]</span>
20855
20856
20857               <span class="entry_type_hwlevel">[full] </span>
20858
20859
20860
20861
20862             </td> <!-- entry_type -->
20863
20864             <td class="entry_description">
20865               <p>Duration from start of frame exposure to
20866 start of next frame exposure.<wbr/></p>
20867             </td>
20868
20869             <td class="entry_units">
20870               Nanoseconds
20871             </td>
20872
20873             <td class="entry_range">
20874               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20875 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20876 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20877             </td>
20878
20879             <td class="entry_tags">
20880               <ul class="entry_tags">
20881                   <li><a href="#tag_V1">V1</a></li>
20882               </ul>
20883             </td>
20884
20885           </tr>
20886           <tr class="entries_header">
20887             <th class="th_details" colspan="5">Details</th>
20888           </tr>
20889           <tr class="entry_cont">
20890             <td class="entry_details" colspan="5">
20891               <p>The maximum frame rate that can be supported by a camera subsystem is
20892 a function of many factors:</p>
20893 <ul>
20894 <li>Requested resolutions of output image streams</li>
20895 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
20896 <li>The bandwidth of the imager interface</li>
20897 <li>The bandwidth of the various ISP processing blocks</li>
20898 </ul>
20899 <p>Since these factors can vary greatly between different ISPs and
20900 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20901 restrictions with as simple a model as possible.<wbr/></p>
20902 <p>The model presented has the following characteristics:</p>
20903 <ul>
20904 <li>The image sensor is always configured to output the smallest
20905 resolution possible given the application's requested output stream
20906 sizes.<wbr/>  The smallest resolution is defined as being at least as large
20907 as the largest requested output stream size; the camera pipeline must
20908 never digitally upsample sensor data when the crop region covers the
20909 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20910 resolutions are configured,<wbr/> the sensor can provide a higher frame
20911 rate.<wbr/></li>
20912 <li>Since any request may use any or all the currently configured
20913 output streams,<wbr/> the sensor and ISP must be configured to support
20914 scaling a single capture to all the streams at the same time.<wbr/>  This
20915 means the camera pipeline must be ready to produce the largest
20916 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20917 frame rate of a given configured stream set is governed only by the
20918 largest requested stream resolution.<wbr/></li>
20919 <li>Using more than one output stream in a request does not affect the
20920 frame duration.<wbr/></li>
20921 <li>Certain format-streams may need to do additional background processing
20922 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20923 can run concurrently to the rest of the camera pipeline,<wbr/> but
20924 cannot process more than 1 capture at a time.<wbr/></li>
20925 </ul>
20926 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20927 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20928 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20929 These are used to determine the maximum frame rate /<wbr/> minimum frame
20930 duration that is possible for a given stream configuration.<wbr/></p>
20931 <p>Specifically,<wbr/> the application can use the following rules to
20932 determine the minimum frame duration it can request from the camera
20933 device:</p>
20934 <ol>
20935 <li>Let the set of currently configured input/<wbr/>output streams
20936 be called <code>S</code>.<wbr/></li>
20937 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20938 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20939 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20940 called <code>F</code>.<wbr/></li>
20941 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20942 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20943 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20944 </ol>
20945 <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>
20946 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20947 determines the steady state frame rate that the application will get
20948 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20949 request be called <code>Rsimple</code>.<wbr/></p>
20950 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20951 by a single capture of a new request <code>Rstall</code> (which has at least
20952 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20953 same minimum frame duration this will not cause a frame rate loss
20954 if all buffers from the previous <code>Rstall</code> have already been
20955 delivered.<wbr/></p>
20956 <p>For more details about stalling,<wbr/> see
20957 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20958 <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
20959 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20960             </td>
20961           </tr>
20962
20963           <tr class="entries_header">
20964             <th class="th_details" colspan="5">HAL Implementation Details</th>
20965           </tr>
20966           <tr class="entry_cont">
20967             <td class="entry_details" colspan="5">
20968               <p>For more details about stalling,<wbr/> see
20969 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20970             </td>
20971           </tr>
20972
20973           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20974            <!-- end of entry -->
20975         
20976                 
20977           <tr class="entry" id="dynamic_android.sensor.sensitivity">
20978             <td class="entry_name
20979              " rowspan="5">
20980               android.<wbr/>sensor.<wbr/>sensitivity
20981             </td>
20982             <td class="entry_type">
20983                 <span class="entry_type_name">int32</span>
20984
20985               <span class="entry_type_visibility"> [public]</span>
20986
20987
20988               <span class="entry_type_hwlevel">[full] </span>
20989
20990
20991
20992
20993             </td> <!-- entry_type -->
20994
20995             <td class="entry_description">
20996               <p>The amount of gain applied to sensor data
20997 before processing.<wbr/></p>
20998             </td>
20999
21000             <td class="entry_units">
21001               ISO arithmetic units
21002             </td>
21003
21004             <td class="entry_range">
21005               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
21006             </td>
21007
21008             <td class="entry_tags">
21009               <ul class="entry_tags">
21010                   <li><a href="#tag_V1">V1</a></li>
21011               </ul>
21012             </td>
21013
21014           </tr>
21015           <tr class="entries_header">
21016             <th class="th_details" colspan="5">Details</th>
21017           </tr>
21018           <tr class="entry_cont">
21019             <td class="entry_details" colspan="5">
21020               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
21021 as defined in ISO 12232:2006.<wbr/></p>
21022 <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
21023 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
21024 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
21025 <p>If the camera device cannot apply the exact sensitivity
21026 requested,<wbr/> it will reduce the gain to the nearest supported
21027 value.<wbr/> The final sensitivity used will be available in the
21028 output capture result.<wbr/></p>
21029 <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
21030 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21031             </td>
21032           </tr>
21033
21034           <tr class="entries_header">
21035             <th class="th_details" colspan="5">HAL Implementation Details</th>
21036           </tr>
21037           <tr class="entry_cont">
21038             <td class="entry_details" colspan="5">
21039               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
21040             </td>
21041           </tr>
21042
21043           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21044            <!-- end of entry -->
21045         
21046                 
21047           <tr class="entry" id="dynamic_android.sensor.timestamp">
21048             <td class="entry_name
21049              " rowspan="5">
21050               android.<wbr/>sensor.<wbr/>timestamp
21051             </td>
21052             <td class="entry_type">
21053                 <span class="entry_type_name">int64</span>
21054
21055               <span class="entry_type_visibility"> [public]</span>
21056
21057
21058               <span class="entry_type_hwlevel">[legacy] </span>
21059
21060
21061
21062
21063             </td> <!-- entry_type -->
21064
21065             <td class="entry_description">
21066               <p>Time at start of exposure of first
21067 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
21068             </td>
21069
21070             <td class="entry_units">
21071               Nanoseconds
21072             </td>
21073
21074             <td class="entry_range">
21075               <p>&gt; 0</p>
21076             </td>
21077
21078             <td class="entry_tags">
21079               <ul class="entry_tags">
21080                   <li><a href="#tag_BC">BC</a></li>
21081               </ul>
21082             </td>
21083
21084           </tr>
21085           <tr class="entries_header">
21086             <th class="th_details" colspan="5">Details</th>
21087           </tr>
21088           <tr class="entry_cont">
21089             <td class="entry_details" colspan="5">
21090               <p>The timestamps are also included in all image
21091 buffers produced for the same capture,<wbr/> and will be identical
21092 on all the outputs.<wbr/></p>
21093 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
21094 the timestamps measure time since an unspecified starting point,<wbr/>
21095 and are monotonically increasing.<wbr/> They can be compared with the
21096 timestamps for other captures from the same camera device,<wbr/> but are
21097 not guaranteed to be comparable to any other time source.<wbr/></p>
21098 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
21099 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
21100 be compared to other timestamps from other subsystems that
21101 are using that base.<wbr/></p>
21102 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
21103 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
21104 timestamp</a> in the TotalCaptureResult that was used to create the
21105 reprocess capture request.<wbr/></p>
21106             </td>
21107           </tr>
21108
21109           <tr class="entries_header">
21110             <th class="th_details" colspan="5">HAL Implementation Details</th>
21111           </tr>
21112           <tr class="entry_cont">
21113             <td class="entry_details" colspan="5">
21114               <p>All timestamps must be in reference to the kernel's
21115 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
21116 time spent asleep.<wbr/> This allows for synchronization with
21117 sensors that continue to operate while the system is
21118 otherwise asleep.<wbr/></p>
21119 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
21120 The timestamp must be synchronized with the timestamps from other
21121 sensor subsystems that are using the same timebase.<wbr/></p>
21122 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
21123 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
21124 capture request.<wbr/></p>
21125             </td>
21126           </tr>
21127
21128           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21129            <!-- end of entry -->
21130         
21131                 
21132           <tr class="entry" id="dynamic_android.sensor.temperature">
21133             <td class="entry_name
21134              " rowspan="1">
21135               android.<wbr/>sensor.<wbr/>temperature
21136             </td>
21137             <td class="entry_type">
21138                 <span class="entry_type_name">float</span>
21139
21140               <span class="entry_type_visibility"> [system]</span>
21141
21142
21143
21144
21145
21146
21147             </td> <!-- entry_type -->
21148
21149             <td class="entry_description">
21150               <p>The temperature of the sensor,<wbr/> sampled at the time
21151 exposure began for this frame.<wbr/></p>
21152 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
21153 somewhere close to it.<wbr/></p>
21154             </td>
21155
21156             <td class="entry_units">
21157               Celsius
21158             </td>
21159
21160             <td class="entry_range">
21161               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
21162             </td>
21163
21164             <td class="entry_tags">
21165               <ul class="entry_tags">
21166                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21167               </ul>
21168             </td>
21169
21170           </tr>
21171
21172
21173           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21174            <!-- end of entry -->
21175         
21176                 
21177           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
21178             <td class="entry_name
21179              " rowspan="3">
21180               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
21181             </td>
21182             <td class="entry_type">
21183                 <span class="entry_type_name">rational</span>
21184                 <span class="entry_type_container">x</span>
21185
21186                 <span class="entry_type_array">
21187                   3
21188                 </span>
21189               <span class="entry_type_visibility"> [public]</span>
21190
21191
21192
21193
21194
21195
21196             </td> <!-- entry_type -->
21197
21198             <td class="entry_description">
21199               <p>The estimated camera neutral color in the native sensor colorspace at
21200 the time of capture.<wbr/></p>
21201             </td>
21202
21203             <td class="entry_units">
21204             </td>
21205
21206             <td class="entry_range">
21207             </td>
21208
21209             <td class="entry_tags">
21210               <ul class="entry_tags">
21211                   <li><a href="#tag_RAW">RAW</a></li>
21212               </ul>
21213             </td>
21214
21215           </tr>
21216           <tr class="entries_header">
21217             <th class="th_details" colspan="5">Details</th>
21218           </tr>
21219           <tr class="entry_cont">
21220             <td class="entry_details" colspan="5">
21221               <p>This value gives the neutral color point encoded as an RGB value in the
21222 native sensor color space.<wbr/>  The neutral color point indicates the
21223 currently estimated white point of the scene illumination.<wbr/>  It can be
21224 used to interpolate between the provided color transforms when
21225 processing raw sensor data.<wbr/></p>
21226 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
21227             </td>
21228           </tr>
21229
21230
21231           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21232            <!-- end of entry -->
21233         
21234                 
21235           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
21236             <td class="entry_name
21237              " rowspan="5">
21238               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
21239             </td>
21240             <td class="entry_type">
21241                 <span class="entry_type_name">double</span>
21242                 <span class="entry_type_container">x</span>
21243
21244                 <span class="entry_type_array">
21245                   2 x CFA Channels
21246                 </span>
21247               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
21248
21249
21250
21251
21252                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
21253
21254
21255             </td> <!-- entry_type -->
21256
21257             <td class="entry_description">
21258               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
21259             </td>
21260
21261             <td class="entry_units">
21262             </td>
21263
21264             <td class="entry_range">
21265             </td>
21266
21267             <td class="entry_tags">
21268               <ul class="entry_tags">
21269                   <li><a href="#tag_RAW">RAW</a></li>
21270               </ul>
21271             </td>
21272
21273           </tr>
21274           <tr class="entries_header">
21275             <th class="th_details" colspan="5">Details</th>
21276           </tr>
21277           <tr class="entry_cont">
21278             <td class="entry_details" colspan="5">
21279               <p>This key contains two noise model coefficients for each CFA channel
21280 corresponding to the sensor amplification (S) and sensor readout
21281 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
21282 in the same order as channels listed for the CFA layout key
21283 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
21284 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
21285 the first member of the Pair at index n is the S coefficient and the
21286 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
21287 <p>These coefficients are used in a two parameter noise model to describe
21288 the amount of noise present in the image for each CFA channel.<wbr/>  The
21289 noise model used here is:</p>
21290 <p>N(x) = sqrt(Sx + O)</p>
21291 <p>Where x represents the recorded signal of a CFA channel normalized to
21292 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
21293 that channel.<wbr/></p>
21294 <p>A more detailed description of the noise model can be found in the
21295 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
21296             </td>
21297           </tr>
21298
21299           <tr class="entries_header">
21300             <th class="th_details" colspan="5">HAL Implementation Details</th>
21301           </tr>
21302           <tr class="entry_cont">
21303             <td class="entry_details" colspan="5">
21304               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
21305 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
21306 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
21307 channel,<wbr/> etc.<wbr/></p>
21308             </td>
21309           </tr>
21310
21311           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21312            <!-- end of entry -->
21313         
21314                 
21315           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
21316             <td class="entry_name
21317              " rowspan="3">
21318               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
21319             </td>
21320             <td class="entry_type">
21321                 <span class="entry_type_name">float</span>
21322                 <span class="entry_type_container">x</span>
21323
21324                 <span class="entry_type_array">
21325                   hue_samples x saturation_samples x value_samples x 3
21326                 </span>
21327               <span class="entry_type_visibility"> [system]</span>
21328
21329
21330
21331
21332                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
21333
21334
21335             </td> <!-- entry_type -->
21336
21337             <td class="entry_description">
21338               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
21339 for each pixel.<wbr/></p>
21340             </td>
21341
21342             <td class="entry_units">
21343               
21344           The hue shift is given in degrees; saturation and value scale factors are
21345           unitless and are between 0 and 1 inclusive
21346           
21347             </td>
21348
21349             <td class="entry_range">
21350             </td>
21351
21352             <td class="entry_tags">
21353               <ul class="entry_tags">
21354                   <li><a href="#tag_RAW">RAW</a></li>
21355               </ul>
21356             </td>
21357
21358           </tr>
21359           <tr class="entries_header">
21360             <th class="th_details" colspan="5">Details</th>
21361           </tr>
21362           <tr class="entry_cont">
21363             <td class="entry_details" colspan="5">
21364               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
21365 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
21366 <p>Each entry of this map contains three floats corresponding to the
21367 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
21368 hue shift has the lowest index.<wbr/> The map entries are stored in the key
21369 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
21370 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
21371 inner loop.<wbr/> All zero input saturation entries are required to have a
21372 value scale factor of 1.<wbr/>0.<wbr/></p>
21373             </td>
21374           </tr>
21375
21376
21377           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21378            <!-- end of entry -->
21379         
21380                 
21381           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
21382             <td class="entry_name
21383              " rowspan="3">
21384               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
21385             </td>
21386             <td class="entry_type">
21387                 <span class="entry_type_name">float</span>
21388                 <span class="entry_type_container">x</span>
21389
21390                 <span class="entry_type_array">
21391                   samples x 2
21392                 </span>
21393               <span class="entry_type_visibility"> [system]</span>
21394
21395
21396
21397
21398                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
21399
21400
21401             </td> <!-- entry_type -->
21402
21403             <td class="entry_description">
21404               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
21405             </td>
21406
21407             <td class="entry_units">
21408             </td>
21409
21410             <td class="entry_range">
21411               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
21412 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
21413 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
21414             </td>
21415
21416             <td class="entry_tags">
21417               <ul class="entry_tags">
21418                   <li><a href="#tag_RAW">RAW</a></li>
21419               </ul>
21420             </td>
21421
21422           </tr>
21423           <tr class="entries_header">
21424             <th class="th_details" colspan="5">Details</th>
21425           </tr>
21426           <tr class="entry_cont">
21427             <td class="entry_details" colspan="5">
21428               <p>This key contains a default tone curve that can be applied while
21429 processing the image as a starting point for user adjustments.<wbr/>
21430 The curve is specified as a list of value pairs in linear gamma.<wbr/>
21431 The curve is interpolated using a cubic spline.<wbr/></p>
21432             </td>
21433           </tr>
21434
21435
21436           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21437            <!-- end of entry -->
21438         
21439                 
21440           <tr class="entry" id="dynamic_android.sensor.greenSplit">
21441             <td class="entry_name
21442              " rowspan="5">
21443               android.<wbr/>sensor.<wbr/>green<wbr/>Split
21444             </td>
21445             <td class="entry_type">
21446                 <span class="entry_type_name">float</span>
21447
21448               <span class="entry_type_visibility"> [public]</span>
21449
21450
21451
21452
21453
21454
21455             </td> <!-- entry_type -->
21456
21457             <td class="entry_description">
21458               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
21459             </td>
21460
21461             <td class="entry_units">
21462             </td>
21463
21464             <td class="entry_range">
21465               <p>&gt;= 0</p>
21466             </td>
21467
21468             <td class="entry_tags">
21469               <ul class="entry_tags">
21470                   <li><a href="#tag_RAW">RAW</a></li>
21471               </ul>
21472             </td>
21473
21474           </tr>
21475           <tr class="entries_header">
21476             <th class="th_details" colspan="5">Details</th>
21477           </tr>
21478           <tr class="entry_cont">
21479             <td class="entry_details" colspan="5">
21480               <p>This value is an estimate of the worst case split between the
21481 Bayer green channels in the red and blue rows in the sensor color
21482 filter array.<wbr/></p>
21483 <p>The green split is calculated as follows:</p>
21484 <ol>
21485 <li>A 5x5 pixel (or larger) window W within the active sensor array is
21486 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
21487 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
21488 chosen is implementation defined,<wbr/> and should be chosen to provide a
21489 green split estimate that is both representative of the entire image
21490 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
21491 <li>The arithmetic mean of the green channels from the red
21492 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
21493 <li>The arithmetic mean of the green channels from the blue
21494 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
21495 <li>The maximum ratio R of the two means is computed as follows:
21496 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
21497 </ol>
21498 <p>The ratio R is the green split divergence reported for this property,<wbr/>
21499 which represents how much the green channels differ in the mosaic
21500 pattern.<wbr/>  This value is typically used to determine the treatment of
21501 the green mosaic channels when demosaicing.<wbr/></p>
21502 <p>The green split value can be roughly interpreted as follows:</p>
21503 <ul>
21504 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
21505 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
21506 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
21507 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
21508 a usuable image (&gt;20% divergence).<wbr/></li>
21509 </ul>
21510             </td>
21511           </tr>
21512
21513           <tr class="entries_header">
21514             <th class="th_details" colspan="5">HAL Implementation Details</th>
21515           </tr>
21516           <tr class="entry_cont">
21517             <td class="entry_details" colspan="5">
21518               <p>The green split given may be a static value based on prior
21519 characterization of the camera sensor using the green split
21520 calculation method given here over a large,<wbr/> representative,<wbr/> sample
21521 set of images.<wbr/>  Other methods of calculation that produce equivalent
21522 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
21523             </td>
21524           </tr>
21525
21526           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21527            <!-- end of entry -->
21528         
21529                 
21530           <tr class="entry" id="dynamic_android.sensor.testPatternData">
21531             <td class="entry_name
21532              " rowspan="5">
21533               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
21534             </td>
21535             <td class="entry_type">
21536                 <span class="entry_type_name">int32</span>
21537                 <span class="entry_type_container">x</span>
21538
21539                 <span class="entry_type_array">
21540                   4
21541                 </span>
21542               <span class="entry_type_visibility"> [public]</span>
21543
21544
21545
21546
21547
21548
21549             </td> <!-- entry_type -->
21550
21551             <td class="entry_description">
21552               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
21553 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
21554             </td>
21555
21556             <td class="entry_units">
21557             </td>
21558
21559             <td class="entry_range">
21560             </td>
21561
21562             <td class="entry_tags">
21563             </td>
21564
21565           </tr>
21566           <tr class="entries_header">
21567             <th class="th_details" colspan="5">Details</th>
21568           </tr>
21569           <tr class="entry_cont">
21570             <td class="entry_details" colspan="5">
21571               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21572 The camera device then uses the most significant X bits
21573 that correspond to how many bits are in its Bayer raw sensor
21574 output.<wbr/></p>
21575 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
21576 10 most significant bits from each color channel.<wbr/></p>
21577             </td>
21578           </tr>
21579
21580           <tr class="entries_header">
21581             <th class="th_details" colspan="5">HAL Implementation Details</th>
21582           </tr>
21583           <tr class="entry_cont">
21584             <td class="entry_details" colspan="5">
21585               
21586             </td>
21587           </tr>
21588
21589           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21590            <!-- end of entry -->
21591         
21592                 
21593           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
21594             <td class="entry_name
21595              " rowspan="5">
21596               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21597             </td>
21598             <td class="entry_type">
21599                 <span class="entry_type_name entry_type_name_enum">int32</span>
21600
21601               <span class="entry_type_visibility"> [public]</span>
21602
21603
21604
21605
21606
21607                 <ul class="entry_type_enum">
21608                   <li>
21609                     <span class="entry_type_enum_name">OFF</span>
21610                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21611 device returns captures from the image sensor.<wbr/></p>
21612 <p>This is the default if the key is not set.<wbr/></p></span>
21613                   </li>
21614                   <li>
21615                     <span class="entry_type_enum_name">SOLID_COLOR</span>
21616                     <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
21617 respective color channel provided in
21618 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21619 <p>For example:</p>
21620 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21621 </code></pre>
21622 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21623 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21624 </code></pre>
21625 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21626 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21627                   </li>
21628                   <li>
21629                     <span class="entry_type_enum_name">COLOR_BARS</span>
21630                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21631 <p>The vertical bars (left-to-right) are as follows:</p>
21632 <ul>
21633 <li>100% white</li>
21634 <li>yellow</li>
21635 <li>cyan</li>
21636 <li>green</li>
21637 <li>magenta</li>
21638 <li>red</li>
21639 <li>blue</li>
21640 <li>black</li>
21641 </ul>
21642 <p>In general the image would look like the following:</p>
21643 <pre><code>W Y C G M R B K
21644 W Y C G M R B K
21645 W Y C G M R B K
21646 W Y C G M R B K
21647 W Y C G M R B K
21648 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21649 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21650 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21651
21652 (B = Blue,<wbr/> K = Black)
21653 </code></pre>
21654 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21655 When this is not possible,<wbr/> the bar size should be rounded
21656 down to the nearest integer and the pattern can repeat
21657 on the right side.<wbr/></p>
21658 <p>Each bar's height must always take up the full sensor
21659 pixel array height.<wbr/></p>
21660 <p>Each pixel in this test pattern must be set to either
21661 0% intensity or 100% intensity.<wbr/></p></span>
21662                   </li>
21663                   <li>
21664                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21665                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21666 each bar should start at its specified color at the top,<wbr/>
21667 and fade to gray at the bottom.<wbr/></p>
21668 <p>Furthermore each bar is further subdivided into a left and
21669 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21670 and the right half should have a quantized gradient.<wbr/></p>
21671 <p>In particular,<wbr/> the right half's should consist of blocks of the
21672 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21673 <p>The least significant bits in the quantized gradient should
21674 be copied from the most significant bits of the smooth gradient.<wbr/></p>
21675 <p>The height of each bar should always be a multiple of 128.<wbr/>
21676 When this is not the case,<wbr/> the pattern should repeat at the bottom
21677 of the image.<wbr/></p></span>
21678                   </li>
21679                   <li>
21680                     <span class="entry_type_enum_name">PN9</span>
21681                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21682 generated from a PN9 512-bit sequence (typically implemented
21683 in hardware with a linear feedback shift register).<wbr/></p>
21684 <p>The generator should be reset at the beginning of each frame,<wbr/>
21685 and thus each subsequent raw frame with this test pattern should
21686 be exactly the same as the last.<wbr/></p></span>
21687                   </li>
21688                   <li>
21689                     <span class="entry_type_enum_name">CUSTOM1</span>
21690                     <span class="entry_type_enum_value">256</span>
21691                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21692 available only on this camera device are at least this numeric
21693 value.<wbr/></p>
21694 <p>All of the custom test patterns will be static
21695 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
21696                   </li>
21697                 </ul>
21698
21699             </td> <!-- entry_type -->
21700
21701             <td class="entry_description">
21702               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21703 doing a real exposure from the camera.<wbr/></p>
21704             </td>
21705
21706             <td class="entry_units">
21707             </td>
21708
21709             <td class="entry_range">
21710               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21711             </td>
21712
21713             <td class="entry_tags">
21714             </td>
21715
21716           </tr>
21717           <tr class="entries_header">
21718             <th class="th_details" colspan="5">Details</th>
21719           </tr>
21720           <tr class="entry_cont">
21721             <td class="entry_details" colspan="5">
21722               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21723 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21724 work as normal.<wbr/></p>
21725 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21726 occur (and that the test pattern remain unmodified,<wbr/> since the flash
21727 would not actually affect it).<wbr/></p>
21728 <p>Defaults to OFF.<wbr/></p>
21729             </td>
21730           </tr>
21731
21732           <tr class="entries_header">
21733             <th class="th_details" colspan="5">HAL Implementation Details</th>
21734           </tr>
21735           <tr class="entry_cont">
21736             <td class="entry_details" colspan="5">
21737               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21738 <p>The HAL may choose to substitute test patterns from the sensor
21739 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21740 indistinguishable to the ISP whether the data came from the
21741 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21742             </td>
21743           </tr>
21744
21745           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21746            <!-- end of entry -->
21747         
21748                 
21749           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21750             <td class="entry_name
21751              " rowspan="5">
21752               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21753             </td>
21754             <td class="entry_type">
21755                 <span class="entry_type_name">int64</span>
21756
21757               <span class="entry_type_visibility"> [public]</span>
21758
21759
21760               <span class="entry_type_hwlevel">[limited] </span>
21761
21762
21763
21764
21765             </td> <!-- entry_type -->
21766
21767             <td class="entry_description">
21768               <p>Duration between the start of first row exposure
21769 and the start of last row exposure.<wbr/></p>
21770             </td>
21771
21772             <td class="entry_units">
21773               Nanoseconds
21774             </td>
21775
21776             <td class="entry_range">
21777               <p>&gt;= 0 and &lt;
21778 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21779             </td>
21780
21781             <td class="entry_tags">
21782               <ul class="entry_tags">
21783                   <li><a href="#tag_V1">V1</a></li>
21784               </ul>
21785             </td>
21786
21787           </tr>
21788           <tr class="entries_header">
21789             <th class="th_details" colspan="5">Details</th>
21790           </tr>
21791           <tr class="entry_cont">
21792             <td class="entry_details" colspan="5">
21793               <p>This is the exposure time skew between the first and last
21794 row exposure start times.<wbr/> The first row and the last row are
21795 the first and last rows inside of the
21796 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21797 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21798 to the frame readout time.<wbr/></p>
21799             </td>
21800           </tr>
21801
21802           <tr class="entries_header">
21803             <th class="th_details" colspan="5">HAL Implementation Details</th>
21804           </tr>
21805           <tr class="entry_cont">
21806             <td class="entry_details" colspan="5">
21807               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21808 exposure at the same time.<wbr/></p>
21809             </td>
21810           </tr>
21811
21812           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21813            <!-- end of entry -->
21814         
21815                 
21816           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
21817             <td class="entry_name
21818              " rowspan="5">
21819               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
21820             </td>
21821             <td class="entry_type">
21822                 <span class="entry_type_name">float</span>
21823                 <span class="entry_type_container">x</span>
21824
21825                 <span class="entry_type_array">
21826                   4
21827                 </span>
21828               <span class="entry_type_visibility"> [public]</span>
21829
21830
21831
21832
21833                 <div class="entry_type_notes">2x2 raw count block</div>
21834
21835
21836             </td> <!-- entry_type -->
21837
21838             <td class="entry_description">
21839               <p>A per-frame dynamic black level offset for each of the color filter
21840 arrangement (CFA) mosaic channels.<wbr/></p>
21841             </td>
21842
21843             <td class="entry_units">
21844             </td>
21845
21846             <td class="entry_range">
21847               <p>&gt;= 0 for each.<wbr/></p>
21848             </td>
21849
21850             <td class="entry_tags">
21851               <ul class="entry_tags">
21852                   <li><a href="#tag_RAW">RAW</a></li>
21853               </ul>
21854             </td>
21855
21856           </tr>
21857           <tr class="entries_header">
21858             <th class="th_details" colspan="5">Details</th>
21859           </tr>
21860           <tr class="entry_cont">
21861             <td class="entry_details" colspan="5">
21862               <p>Camera sensor black levels may vary dramatically for different
21863 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
21864 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
21865 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
21866 camera device internal pipeline relies on reliable black level values
21867 to process the raw images appropriately.<wbr/> To get the best image
21868 quality,<wbr/> the camera device may choose to estimate the per frame black
21869 level values either based on optically shielded black regions
21870 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
21871 <p>This key reports the camera device estimated per-frame zero light
21872 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
21873 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
21874 approximation of the actual black level values.<wbr/> This value is the
21875 black level used in camera device internal image processing pipeline
21876 and generally more accurate than the fixed black level values.<wbr/>
21877 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
21878 may not be as accurate as the black level values calculated from the
21879 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
21880 <p>The values are given in the same order as channels listed for the CFA
21881 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
21882 nth value given corresponds to the black level offset for the nth
21883 color channel listed in the CFA.<wbr/></p>
21884 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21885 available or the camera device advertises this key via
21886 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
21887             </td>
21888           </tr>
21889
21890           <tr class="entries_header">
21891             <th class="th_details" colspan="5">HAL Implementation Details</th>
21892           </tr>
21893           <tr class="entry_cont">
21894             <td class="entry_details" colspan="5">
21895               <p>The values are given in row-column scan order,<wbr/> with the first value
21896 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21897             </td>
21898           </tr>
21899
21900           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21901            <!-- end of entry -->
21902         
21903                 
21904           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
21905             <td class="entry_name
21906              " rowspan="5">
21907               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
21908             </td>
21909             <td class="entry_type">
21910                 <span class="entry_type_name">int32</span>
21911
21912               <span class="entry_type_visibility"> [public]</span>
21913
21914
21915
21916
21917
21918
21919             </td> <!-- entry_type -->
21920
21921             <td class="entry_description">
21922               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
21923             </td>
21924
21925             <td class="entry_units">
21926             </td>
21927
21928             <td class="entry_range">
21929               <p>&gt;= 0</p>
21930             </td>
21931
21932             <td class="entry_tags">
21933               <ul class="entry_tags">
21934                   <li><a href="#tag_RAW">RAW</a></li>
21935               </ul>
21936             </td>
21937
21938           </tr>
21939           <tr class="entries_header">
21940             <th class="th_details" colspan="5">Details</th>
21941           </tr>
21942           <tr class="entry_cont">
21943             <td class="entry_details" colspan="5">
21944               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
21945 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
21946 level will change accordingly.<wbr/> This key is similar to
21947 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
21948 estimated white level for each frame.<wbr/></p>
21949 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21950 available or the camera device advertises this key via
21951 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21952             </td>
21953           </tr>
21954
21955           <tr class="entries_header">
21956             <th class="th_details" colspan="5">HAL Implementation Details</th>
21957           </tr>
21958           <tr class="entry_cont">
21959             <td class="entry_details" colspan="5">
21960               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21961 so the value for linear sensors should not be significantly lower
21962 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21963             </td>
21964           </tr>
21965
21966           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21967            <!-- end of entry -->
21968         
21969         
21970
21971       <!-- end of kind -->
21972       </tbody>
21973
21974   <!-- end of section -->
21975   <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21976
21977
21978       <tr><td colspan="6" class="kind">controls</td></tr>
21979
21980       <thead class="entries_header">
21981         <tr>
21982           <th class="th_name">Property Name</th>
21983           <th class="th_type">Type</th>
21984           <th class="th_description">Description</th>
21985           <th class="th_units">Units</th>
21986           <th class="th_range">Range</th>
21987           <th class="th_tags">Tags</th>
21988         </tr>
21989       </thead>
21990
21991       <tbody>
21992
21993         
21994
21995         
21996
21997         
21998
21999         
22000
22001                 
22002           <tr class="entry" id="controls_android.shading.mode">
22003             <td class="entry_name
22004              " rowspan="3">
22005               android.<wbr/>shading.<wbr/>mode
22006             </td>
22007             <td class="entry_type">
22008                 <span class="entry_type_name entry_type_name_enum">byte</span>
22009
22010               <span class="entry_type_visibility"> [public]</span>
22011
22012
22013               <span class="entry_type_hwlevel">[full] </span>
22014
22015
22016
22017                 <ul class="entry_type_enum">
22018                   <li>
22019                     <span class="entry_type_enum_name">OFF</span>
22020                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22021                   </li>
22022                   <li>
22023                     <span class="entry_type_enum_name">FAST</span>
22024                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22025 frame rate relative to sensor raw output</p></span>
22026                   </li>
22027                   <li>
22028                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
22029                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22030 cost of possibly reduced frame rate.<wbr/></p></span>
22031                   </li>
22032                 </ul>
22033
22034             </td> <!-- entry_type -->
22035
22036             <td class="entry_description">
22037               <p>Quality of lens shading correction applied
22038 to the image data.<wbr/></p>
22039             </td>
22040
22041             <td class="entry_units">
22042             </td>
22043
22044             <td class="entry_range">
22045               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22046             </td>
22047
22048             <td class="entry_tags">
22049             </td>
22050
22051           </tr>
22052           <tr class="entries_header">
22053             <th class="th_details" colspan="5">Details</th>
22054           </tr>
22055           <tr class="entry_cont">
22056             <td class="entry_details" colspan="5">
22057               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22058 camera device,<wbr/> and an identity lens shading map data will be provided
22059 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
22060 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22061 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
22062 map shown below:</p>
22063 <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/>
22064  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/>
22065  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/>
22066  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/>
22067  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/>
22068  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 ]
22069 </code></pre>
22070 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22071 device.<wbr/> Applications can request lens shading map data by setting
22072 <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
22073 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
22074 data will be the one applied by the camera device for this capture request.<wbr/></p>
22075 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22076 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22077 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>
22078 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22079 to be converged before using the returned shading map data.<wbr/></p>
22080             </td>
22081           </tr>
22082
22083
22084           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22085            <!-- end of entry -->
22086         
22087                 
22088           <tr class="entry" id="controls_android.shading.strength">
22089             <td class="entry_name
22090              " rowspan="1">
22091               android.<wbr/>shading.<wbr/>strength
22092             </td>
22093             <td class="entry_type">
22094                 <span class="entry_type_name">byte</span>
22095
22096               <span class="entry_type_visibility"> [system]</span>
22097
22098
22099
22100
22101
22102
22103             </td> <!-- entry_type -->
22104
22105             <td class="entry_description">
22106               <p>Control the amount of shading correction
22107 applied to the images</p>
22108             </td>
22109
22110             <td class="entry_units">
22111               unitless: 1-10; 10 is full shading
22112           compensation
22113             </td>
22114
22115             <td class="entry_range">
22116             </td>
22117
22118             <td class="entry_tags">
22119               <ul class="entry_tags">
22120                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22121               </ul>
22122             </td>
22123
22124           </tr>
22125
22126
22127           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22128            <!-- end of entry -->
22129         
22130         
22131
22132       <!-- end of kind -->
22133       </tbody>
22134       <tr><td colspan="6" class="kind">dynamic</td></tr>
22135
22136       <thead class="entries_header">
22137         <tr>
22138           <th class="th_name">Property Name</th>
22139           <th class="th_type">Type</th>
22140           <th class="th_description">Description</th>
22141           <th class="th_units">Units</th>
22142           <th class="th_range">Range</th>
22143           <th class="th_tags">Tags</th>
22144         </tr>
22145       </thead>
22146
22147       <tbody>
22148
22149         
22150
22151         
22152
22153         
22154
22155         
22156
22157                 
22158           <tr class="entry" id="dynamic_android.shading.mode">
22159             <td class="entry_name
22160              " rowspan="3">
22161               android.<wbr/>shading.<wbr/>mode
22162             </td>
22163             <td class="entry_type">
22164                 <span class="entry_type_name entry_type_name_enum">byte</span>
22165
22166               <span class="entry_type_visibility"> [public]</span>
22167
22168
22169               <span class="entry_type_hwlevel">[full] </span>
22170
22171
22172
22173                 <ul class="entry_type_enum">
22174                   <li>
22175                     <span class="entry_type_enum_name">OFF</span>
22176                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22177                   </li>
22178                   <li>
22179                     <span class="entry_type_enum_name">FAST</span>
22180                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22181 frame rate relative to sensor raw output</p></span>
22182                   </li>
22183                   <li>
22184                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
22185                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22186 cost of possibly reduced frame rate.<wbr/></p></span>
22187                   </li>
22188                 </ul>
22189
22190             </td> <!-- entry_type -->
22191
22192             <td class="entry_description">
22193               <p>Quality of lens shading correction applied
22194 to the image data.<wbr/></p>
22195             </td>
22196
22197             <td class="entry_units">
22198             </td>
22199
22200             <td class="entry_range">
22201               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22202             </td>
22203
22204             <td class="entry_tags">
22205             </td>
22206
22207           </tr>
22208           <tr class="entries_header">
22209             <th class="th_details" colspan="5">Details</th>
22210           </tr>
22211           <tr class="entry_cont">
22212             <td class="entry_details" colspan="5">
22213               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22214 camera device,<wbr/> and an identity lens shading map data will be provided
22215 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
22216 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22217 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
22218 map shown below:</p>
22219 <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/>
22220  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/>
22221  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/>
22222  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/>
22223  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/>
22224  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 ]
22225 </code></pre>
22226 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22227 device.<wbr/> Applications can request lens shading map data by setting
22228 <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
22229 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
22230 data will be the one applied by the camera device for this capture request.<wbr/></p>
22231 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22232 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22233 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>
22234 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22235 to be converged before using the returned shading map data.<wbr/></p>
22236             </td>
22237           </tr>
22238
22239
22240           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22241            <!-- end of entry -->
22242         
22243         
22244
22245       <!-- end of kind -->
22246       </tbody>
22247       <tr><td colspan="6" class="kind">static</td></tr>
22248
22249       <thead class="entries_header">
22250         <tr>
22251           <th class="th_name">Property Name</th>
22252           <th class="th_type">Type</th>
22253           <th class="th_description">Description</th>
22254           <th class="th_units">Units</th>
22255           <th class="th_range">Range</th>
22256           <th class="th_tags">Tags</th>
22257         </tr>
22258       </thead>
22259
22260       <tbody>
22261
22262         
22263
22264         
22265
22266         
22267
22268         
22269
22270                 
22271           <tr class="entry" id="static_android.shading.availableModes">
22272             <td class="entry_name
22273              " rowspan="5">
22274               android.<wbr/>shading.<wbr/>available<wbr/>Modes
22275             </td>
22276             <td class="entry_type">
22277                 <span class="entry_type_name">byte</span>
22278                 <span class="entry_type_container">x</span>
22279
22280                 <span class="entry_type_array">
22281                   n
22282                 </span>
22283               <span class="entry_type_visibility"> [public as enumList]</span>
22284
22285
22286               <span class="entry_type_hwlevel">[legacy] </span>
22287
22288
22289                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
22290
22291
22292             </td> <!-- entry_type -->
22293
22294             <td class="entry_description">
22295               <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>
22296             </td>
22297
22298             <td class="entry_units">
22299             </td>
22300
22301             <td class="entry_range">
22302               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
22303             </td>
22304
22305             <td class="entry_tags">
22306             </td>
22307
22308           </tr>
22309           <tr class="entries_header">
22310             <th class="th_details" colspan="5">Details</th>
22311           </tr>
22312           <tr class="entry_cont">
22313             <td class="entry_details" colspan="5">
22314               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
22315 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
22316 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
22317 LEGACY devices will always only support FAST mode.<wbr/></p>
22318             </td>
22319           </tr>
22320
22321           <tr class="entries_header">
22322             <th class="th_details" colspan="5">HAL Implementation Details</th>
22323           </tr>
22324           <tr class="entry_cont">
22325             <td class="entry_details" colspan="5">
22326               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
22327 available on the camera device,<wbr/> but the underlying implementation can be the same for
22328 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
22329 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
22330             </td>
22331           </tr>
22332
22333           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22334            <!-- end of entry -->
22335         
22336         
22337
22338       <!-- end of kind -->
22339       </tbody>
22340
22341   <!-- end of section -->
22342   <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
22343
22344
22345       <tr><td colspan="6" class="kind">controls</td></tr>
22346
22347       <thead class="entries_header">
22348         <tr>
22349           <th class="th_name">Property Name</th>
22350           <th class="th_type">Type</th>
22351           <th class="th_description">Description</th>
22352           <th class="th_units">Units</th>
22353           <th class="th_range">Range</th>
22354           <th class="th_tags">Tags</th>
22355         </tr>
22356       </thead>
22357
22358       <tbody>
22359
22360         
22361
22362         
22363
22364         
22365
22366         
22367
22368                 
22369           <tr class="entry" id="controls_android.statistics.faceDetectMode">
22370             <td class="entry_name
22371              " rowspan="5">
22372               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22373             </td>
22374             <td class="entry_type">
22375                 <span class="entry_type_name entry_type_name_enum">byte</span>
22376
22377               <span class="entry_type_visibility"> [public]</span>
22378
22379
22380               <span class="entry_type_hwlevel">[legacy] </span>
22381
22382
22383
22384                 <ul class="entry_type_enum">
22385                   <li>
22386                     <span class="entry_type_enum_name">OFF</span>
22387                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22388 results.<wbr/></p></span>
22389                   </li>
22390                   <li>
22391                     <span class="entry_type_enum_name">SIMPLE</span>
22392                     <span class="entry_type_enum_optional">[optional]</span>
22393                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22394                   </li>
22395                   <li>
22396                     <span class="entry_type_enum_name">FULL</span>
22397                     <span class="entry_type_enum_optional">[optional]</span>
22398                     <span class="entry_type_enum_notes"><p>Return all face
22399 metadata.<wbr/></p>
22400 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22401                   </li>
22402                 </ul>
22403
22404             </td> <!-- entry_type -->
22405
22406             <td class="entry_description">
22407               <p>Operating mode for the face detector
22408 unit.<wbr/></p>
22409             </td>
22410
22411             <td class="entry_units">
22412             </td>
22413
22414             <td class="entry_range">
22415               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22416             </td>
22417
22418             <td class="entry_tags">
22419               <ul class="entry_tags">
22420                   <li><a href="#tag_BC">BC</a></li>
22421               </ul>
22422             </td>
22423
22424           </tr>
22425           <tr class="entries_header">
22426             <th class="th_details" colspan="5">Details</th>
22427           </tr>
22428           <tr class="entry_cont">
22429             <td class="entry_details" colspan="5">
22430               <p>Whether face detection is enabled,<wbr/> and whether it
22431 should output just the basic fields or the full set of
22432 fields.<wbr/></p>
22433             </td>
22434           </tr>
22435
22436           <tr class="entries_header">
22437             <th class="th_details" colspan="5">HAL Implementation Details</th>
22438           </tr>
22439           <tr class="entry_cont">
22440             <td class="entry_details" colspan="5">
22441               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22442 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22443 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22444 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22445             </td>
22446           </tr>
22447
22448           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22449            <!-- end of entry -->
22450         
22451                 
22452           <tr class="entry" id="controls_android.statistics.histogramMode">
22453             <td class="entry_name
22454              " rowspan="1">
22455               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22456             </td>
22457             <td class="entry_type">
22458                 <span class="entry_type_name entry_type_name_enum">byte</span>
22459
22460               <span class="entry_type_visibility"> [system as boolean]</span>
22461
22462
22463
22464
22465
22466                 <ul class="entry_type_enum">
22467                   <li>
22468                     <span class="entry_type_enum_name">OFF</span>
22469                   </li>
22470                   <li>
22471                     <span class="entry_type_enum_name">ON</span>
22472                   </li>
22473                 </ul>
22474
22475             </td> <!-- entry_type -->
22476
22477             <td class="entry_description">
22478               <p>Operating mode for histogram
22479 generation</p>
22480             </td>
22481
22482             <td class="entry_units">
22483             </td>
22484
22485             <td class="entry_range">
22486             </td>
22487
22488             <td class="entry_tags">
22489               <ul class="entry_tags">
22490                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22491               </ul>
22492             </td>
22493
22494           </tr>
22495
22496
22497           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22498            <!-- end of entry -->
22499         
22500                 
22501           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
22502             <td class="entry_name
22503              " rowspan="1">
22504               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22505             </td>
22506             <td class="entry_type">
22507                 <span class="entry_type_name entry_type_name_enum">byte</span>
22508
22509               <span class="entry_type_visibility"> [system as boolean]</span>
22510
22511
22512
22513
22514
22515                 <ul class="entry_type_enum">
22516                   <li>
22517                     <span class="entry_type_enum_name">OFF</span>
22518                   </li>
22519                   <li>
22520                     <span class="entry_type_enum_name">ON</span>
22521                   </li>
22522                 </ul>
22523
22524             </td> <!-- entry_type -->
22525
22526             <td class="entry_description">
22527               <p>Operating mode for sharpness map
22528 generation</p>
22529             </td>
22530
22531             <td class="entry_units">
22532             </td>
22533
22534             <td class="entry_range">
22535             </td>
22536
22537             <td class="entry_tags">
22538               <ul class="entry_tags">
22539                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22540               </ul>
22541             </td>
22542
22543           </tr>
22544
22545
22546           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22547            <!-- end of entry -->
22548         
22549                 
22550           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
22551             <td class="entry_name
22552              " rowspan="3">
22553               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22554             </td>
22555             <td class="entry_type">
22556                 <span class="entry_type_name entry_type_name_enum">byte</span>
22557
22558               <span class="entry_type_visibility"> [public as boolean]</span>
22559
22560
22561
22562
22563
22564                 <ul class="entry_type_enum">
22565                   <li>
22566                     <span class="entry_type_enum_name">OFF</span>
22567                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22568                   </li>
22569                   <li>
22570                     <span class="entry_type_enum_name">ON</span>
22571                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22572                   </li>
22573                 </ul>
22574
22575             </td> <!-- entry_type -->
22576
22577             <td class="entry_description">
22578               <p>Operating mode for hot pixel map generation.<wbr/></p>
22579             </td>
22580
22581             <td class="entry_units">
22582             </td>
22583
22584             <td class="entry_range">
22585               <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>
22586             </td>
22587
22588             <td class="entry_tags">
22589               <ul class="entry_tags">
22590                   <li><a href="#tag_V1">V1</a></li>
22591                   <li><a href="#tag_RAW">RAW</a></li>
22592               </ul>
22593             </td>
22594
22595           </tr>
22596           <tr class="entries_header">
22597             <th class="th_details" colspan="5">Details</th>
22598           </tr>
22599           <tr class="entry_cont">
22600             <td class="entry_details" colspan="5">
22601               <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/>
22602 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22603             </td>
22604           </tr>
22605
22606
22607           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22608            <!-- end of entry -->
22609         
22610                 
22611           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
22612             <td class="entry_name
22613              " rowspan="3">
22614               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22615             </td>
22616             <td class="entry_type">
22617                 <span class="entry_type_name entry_type_name_enum">byte</span>
22618
22619               <span class="entry_type_visibility"> [public]</span>
22620
22621
22622               <span class="entry_type_hwlevel">[full] </span>
22623
22624
22625
22626                 <ul class="entry_type_enum">
22627                   <li>
22628                     <span class="entry_type_enum_name">OFF</span>
22629                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22630                   </li>
22631                   <li>
22632                     <span class="entry_type_enum_name">ON</span>
22633                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22634                   </li>
22635                 </ul>
22636
22637             </td> <!-- entry_type -->
22638
22639             <td class="entry_description">
22640               <p>Whether the camera device will output the lens
22641 shading map in output result metadata.<wbr/></p>
22642             </td>
22643
22644             <td class="entry_units">
22645             </td>
22646
22647             <td class="entry_range">
22648               <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>
22649             </td>
22650
22651             <td class="entry_tags">
22652               <ul class="entry_tags">
22653                   <li><a href="#tag_RAW">RAW</a></li>
22654               </ul>
22655             </td>
22656
22657           </tr>
22658           <tr class="entries_header">
22659             <th class="th_details" colspan="5">Details</th>
22660           </tr>
22661           <tr class="entry_cont">
22662             <td class="entry_details" colspan="5">
22663               <p>When set to ON,<wbr/>
22664 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22665 the output result metadata.<wbr/></p>
22666 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
22667             </td>
22668           </tr>
22669
22670
22671           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22672            <!-- end of entry -->
22673         
22674         
22675
22676       <!-- end of kind -->
22677       </tbody>
22678       <tr><td colspan="6" class="kind">static</td></tr>
22679
22680       <thead class="entries_header">
22681         <tr>
22682           <th class="th_name">Property Name</th>
22683           <th class="th_type">Type</th>
22684           <th class="th_description">Description</th>
22685           <th class="th_units">Units</th>
22686           <th class="th_range">Range</th>
22687           <th class="th_tags">Tags</th>
22688         </tr>
22689       </thead>
22690
22691       <tbody>
22692
22693         
22694
22695         
22696
22697         
22698
22699         
22700                 
22701             
22702
22703                 
22704           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
22705             <td class="entry_name
22706              " rowspan="3">
22707               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
22708             </td>
22709             <td class="entry_type">
22710                 <span class="entry_type_name">byte</span>
22711                 <span class="entry_type_container">x</span>
22712
22713                 <span class="entry_type_array">
22714                   n
22715                 </span>
22716               <span class="entry_type_visibility"> [public as enumList]</span>
22717
22718
22719               <span class="entry_type_hwlevel">[legacy] </span>
22720
22721
22722                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
22723
22724
22725             </td> <!-- entry_type -->
22726
22727             <td class="entry_description">
22728               <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
22729 supported by this camera device.<wbr/></p>
22730             </td>
22731
22732             <td class="entry_units">
22733             </td>
22734
22735             <td class="entry_range">
22736               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
22737             </td>
22738
22739             <td class="entry_tags">
22740             </td>
22741
22742           </tr>
22743           <tr class="entries_header">
22744             <th class="th_details" colspan="5">Details</th>
22745           </tr>
22746           <tr class="entry_cont">
22747             <td class="entry_details" colspan="5">
22748               <p>OFF is always supported.<wbr/></p>
22749             </td>
22750           </tr>
22751
22752
22753           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22754            <!-- end of entry -->
22755         
22756                 
22757           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
22758             <td class="entry_name
22759              " rowspan="1">
22760               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
22761             </td>
22762             <td class="entry_type">
22763                 <span class="entry_type_name">int32</span>
22764
22765               <span class="entry_type_visibility"> [system]</span>
22766
22767
22768
22769
22770
22771
22772             </td> <!-- entry_type -->
22773
22774             <td class="entry_description">
22775               <p>Number of histogram buckets
22776 supported</p>
22777             </td>
22778
22779             <td class="entry_units">
22780             </td>
22781
22782             <td class="entry_range">
22783               <p>&gt;= 64</p>
22784             </td>
22785
22786             <td class="entry_tags">
22787               <ul class="entry_tags">
22788                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22789               </ul>
22790             </td>
22791
22792           </tr>
22793
22794
22795           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22796            <!-- end of entry -->
22797         
22798                 
22799           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22800             <td class="entry_name
22801              " rowspan="1">
22802               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22803             </td>
22804             <td class="entry_type">
22805                 <span class="entry_type_name">int32</span>
22806
22807               <span class="entry_type_visibility"> [public]</span>
22808
22809
22810               <span class="entry_type_hwlevel">[legacy] </span>
22811
22812
22813
22814
22815             </td> <!-- entry_type -->
22816
22817             <td class="entry_description">
22818               <p>The maximum number of simultaneously detectable
22819 faces.<wbr/></p>
22820             </td>
22821
22822             <td class="entry_units">
22823             </td>
22824
22825             <td class="entry_range">
22826               <p>0 for cameras without available face detection; otherwise:
22827 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22828 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
22829             </td>
22830
22831             <td class="entry_tags">
22832               <ul class="entry_tags">
22833                   <li><a href="#tag_BC">BC</a></li>
22834               </ul>
22835             </td>
22836
22837           </tr>
22838
22839
22840           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22841            <!-- end of entry -->
22842         
22843                 
22844           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22845             <td class="entry_name
22846              " rowspan="1">
22847               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22848             </td>
22849             <td class="entry_type">
22850                 <span class="entry_type_name">int32</span>
22851
22852               <span class="entry_type_visibility"> [system]</span>
22853
22854
22855
22856
22857
22858
22859             </td> <!-- entry_type -->
22860
22861             <td class="entry_description">
22862               <p>Maximum value possible for a histogram
22863 bucket</p>
22864             </td>
22865
22866             <td class="entry_units">
22867             </td>
22868
22869             <td class="entry_range">
22870             </td>
22871
22872             <td class="entry_tags">
22873               <ul class="entry_tags">
22874                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22875               </ul>
22876             </td>
22877
22878           </tr>
22879
22880
22881           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22882            <!-- end of entry -->
22883         
22884                 
22885           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22886             <td class="entry_name
22887              " rowspan="1">
22888               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22889             </td>
22890             <td class="entry_type">
22891                 <span class="entry_type_name">int32</span>
22892
22893               <span class="entry_type_visibility"> [system]</span>
22894
22895
22896
22897
22898
22899
22900             </td> <!-- entry_type -->
22901
22902             <td class="entry_description">
22903               <p>Maximum value possible for a sharpness map
22904 region.<wbr/></p>
22905             </td>
22906
22907             <td class="entry_units">
22908             </td>
22909
22910             <td class="entry_range">
22911             </td>
22912
22913             <td class="entry_tags">
22914               <ul class="entry_tags">
22915                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22916               </ul>
22917             </td>
22918
22919           </tr>
22920
22921
22922           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22923            <!-- end of entry -->
22924         
22925                 
22926           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22927             <td class="entry_name
22928              " rowspan="1">
22929               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22930             </td>
22931             <td class="entry_type">
22932                 <span class="entry_type_name">int32</span>
22933                 <span class="entry_type_container">x</span>
22934
22935                 <span class="entry_type_array">
22936                   2
22937                 </span>
22938               <span class="entry_type_visibility"> [system as size]</span>
22939
22940
22941
22942
22943                 <div class="entry_type_notes">width x height</div>
22944
22945
22946             </td> <!-- entry_type -->
22947
22948             <td class="entry_description">
22949               <p>Dimensions of the sharpness
22950 map</p>
22951             </td>
22952
22953             <td class="entry_units">
22954             </td>
22955
22956             <td class="entry_range">
22957               <p>Must be at least 32 x 32</p>
22958             </td>
22959
22960             <td class="entry_tags">
22961               <ul class="entry_tags">
22962                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22963               </ul>
22964             </td>
22965
22966           </tr>
22967
22968
22969           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22970            <!-- end of entry -->
22971         
22972                 
22973           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22974             <td class="entry_name
22975              " rowspan="3">
22976               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22977             </td>
22978             <td class="entry_type">
22979                 <span class="entry_type_name">byte</span>
22980                 <span class="entry_type_container">x</span>
22981
22982                 <span class="entry_type_array">
22983                   n
22984                 </span>
22985               <span class="entry_type_visibility"> [public as boolean]</span>
22986
22987
22988
22989
22990                 <div class="entry_type_notes">list of enums</div>
22991
22992
22993             </td> <!-- entry_type -->
22994
22995             <td class="entry_description">
22996               <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
22997 supported by this camera device.<wbr/></p>
22998             </td>
22999
23000             <td class="entry_units">
23001             </td>
23002
23003             <td class="entry_range">
23004               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
23005             </td>
23006
23007             <td class="entry_tags">
23008               <ul class="entry_tags">
23009                   <li><a href="#tag_V1">V1</a></li>
23010                   <li><a href="#tag_RAW">RAW</a></li>
23011               </ul>
23012             </td>
23013
23014           </tr>
23015           <tr class="entries_header">
23016             <th class="th_details" colspan="5">Details</th>
23017           </tr>
23018           <tr class="entry_cont">
23019             <td class="entry_details" colspan="5">
23020               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
23021 <code>false</code>.<wbr/></p>
23022 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23023             </td>
23024           </tr>
23025
23026
23027           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23028            <!-- end of entry -->
23029         
23030                 
23031           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
23032             <td class="entry_name
23033              " rowspan="3">
23034               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
23035             </td>
23036             <td class="entry_type">
23037                 <span class="entry_type_name">byte</span>
23038                 <span class="entry_type_container">x</span>
23039
23040                 <span class="entry_type_array">
23041                   n
23042                 </span>
23043               <span class="entry_type_visibility"> [public as enumList]</span>
23044
23045
23046
23047
23048                 <div class="entry_type_notes">list of enums</div>
23049
23050
23051             </td> <!-- entry_type -->
23052
23053             <td class="entry_description">
23054               <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
23055 are supported by this camera device.<wbr/></p>
23056             </td>
23057
23058             <td class="entry_units">
23059             </td>
23060
23061             <td class="entry_range">
23062               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
23063             </td>
23064
23065             <td class="entry_tags">
23066             </td>
23067
23068           </tr>
23069           <tr class="entries_header">
23070             <th class="th_details" colspan="5">Details</th>
23071           </tr>
23072           <tr class="entry_cont">
23073             <td class="entry_details" colspan="5">
23074               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
23075 contain only OFF.<wbr/></p>
23076 <p>ON is always supported on devices with the RAW capability.<wbr/>
23077 LEGACY mode devices will always only support OFF.<wbr/></p>
23078             </td>
23079           </tr>
23080
23081
23082           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23083            <!-- end of entry -->
23084         
23085         
23086         
23087
23088         
23089
23090       <!-- end of kind -->
23091       </tbody>
23092       <tr><td colspan="6" class="kind">dynamic</td></tr>
23093
23094       <thead class="entries_header">
23095         <tr>
23096           <th class="th_name">Property Name</th>
23097           <th class="th_type">Type</th>
23098           <th class="th_description">Description</th>
23099           <th class="th_units">Units</th>
23100           <th class="th_range">Range</th>
23101           <th class="th_tags">Tags</th>
23102         </tr>
23103       </thead>
23104
23105       <tbody>
23106
23107         
23108
23109         
23110
23111         
23112
23113         
23114
23115                 
23116           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
23117             <td class="entry_name
23118              " rowspan="5">
23119               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23120             </td>
23121             <td class="entry_type">
23122                 <span class="entry_type_name entry_type_name_enum">byte</span>
23123
23124               <span class="entry_type_visibility"> [public]</span>
23125
23126
23127               <span class="entry_type_hwlevel">[legacy] </span>
23128
23129
23130
23131                 <ul class="entry_type_enum">
23132                   <li>
23133                     <span class="entry_type_enum_name">OFF</span>
23134                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23135 results.<wbr/></p></span>
23136                   </li>
23137                   <li>
23138                     <span class="entry_type_enum_name">SIMPLE</span>
23139                     <span class="entry_type_enum_optional">[optional]</span>
23140                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23141                   </li>
23142                   <li>
23143                     <span class="entry_type_enum_name">FULL</span>
23144                     <span class="entry_type_enum_optional">[optional]</span>
23145                     <span class="entry_type_enum_notes"><p>Return all face
23146 metadata.<wbr/></p>
23147 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23148                   </li>
23149                 </ul>
23150
23151             </td> <!-- entry_type -->
23152
23153             <td class="entry_description">
23154               <p>Operating mode for the face detector
23155 unit.<wbr/></p>
23156             </td>
23157
23158             <td class="entry_units">
23159             </td>
23160
23161             <td class="entry_range">
23162               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23163             </td>
23164
23165             <td class="entry_tags">
23166               <ul class="entry_tags">
23167                   <li><a href="#tag_BC">BC</a></li>
23168               </ul>
23169             </td>
23170
23171           </tr>
23172           <tr class="entries_header">
23173             <th class="th_details" colspan="5">Details</th>
23174           </tr>
23175           <tr class="entry_cont">
23176             <td class="entry_details" colspan="5">
23177               <p>Whether face detection is enabled,<wbr/> and whether it
23178 should output just the basic fields or the full set of
23179 fields.<wbr/></p>
23180             </td>
23181           </tr>
23182
23183           <tr class="entries_header">
23184             <th class="th_details" colspan="5">HAL Implementation Details</th>
23185           </tr>
23186           <tr class="entry_cont">
23187             <td class="entry_details" colspan="5">
23188               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23189 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23190 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23191 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23192             </td>
23193           </tr>
23194
23195           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23196            <!-- end of entry -->
23197         
23198                 
23199           <tr class="entry" id="dynamic_android.statistics.faceIds">
23200             <td class="entry_name
23201              " rowspan="3">
23202               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
23203             </td>
23204             <td class="entry_type">
23205                 <span class="entry_type_name">int32</span>
23206                 <span class="entry_type_container">x</span>
23207
23208                 <span class="entry_type_array">
23209                   n
23210                 </span>
23211               <span class="entry_type_visibility"> [ndk_public]</span>
23212
23213
23214               <span class="entry_type_hwlevel">[legacy] </span>
23215
23216
23217
23218
23219             </td> <!-- entry_type -->
23220
23221             <td class="entry_description">
23222               <p>List of unique IDs for detected faces.<wbr/></p>
23223             </td>
23224
23225             <td class="entry_units">
23226             </td>
23227
23228             <td class="entry_range">
23229             </td>
23230
23231             <td class="entry_tags">
23232               <ul class="entry_tags">
23233                   <li><a href="#tag_BC">BC</a></li>
23234               </ul>
23235             </td>
23236
23237           </tr>
23238           <tr class="entries_header">
23239             <th class="th_details" colspan="5">Details</th>
23240           </tr>
23241           <tr class="entry_cont">
23242             <td class="entry_details" colspan="5">
23243               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
23244 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
23245 assigned a new ID.<wbr/></p>
23246 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23247             </td>
23248           </tr>
23249
23250
23251           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23252            <!-- end of entry -->
23253         
23254                 
23255           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
23256             <td class="entry_name
23257              " rowspan="3">
23258               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
23259             </td>
23260             <td class="entry_type">
23261                 <span class="entry_type_name">int32</span>
23262                 <span class="entry_type_container">x</span>
23263
23264                 <span class="entry_type_array">
23265                   n x 6
23266                 </span>
23267               <span class="entry_type_visibility"> [ndk_public]</span>
23268
23269
23270               <span class="entry_type_hwlevel">[legacy] </span>
23271
23272
23273                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
23274
23275
23276             </td> <!-- entry_type -->
23277
23278             <td class="entry_description">
23279               <p>List of landmarks for detected
23280 faces.<wbr/></p>
23281             </td>
23282
23283             <td class="entry_units">
23284             </td>
23285
23286             <td class="entry_range">
23287             </td>
23288
23289             <td class="entry_tags">
23290               <ul class="entry_tags">
23291                   <li><a href="#tag_BC">BC</a></li>
23292               </ul>
23293             </td>
23294
23295           </tr>
23296           <tr class="entries_header">
23297             <th class="th_details" colspan="5">Details</th>
23298           </tr>
23299           <tr class="entry_cont">
23300             <td class="entry_details" colspan="5">
23301               <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
23302 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23303 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23304             </td>
23305           </tr>
23306
23307
23308           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23309            <!-- end of entry -->
23310         
23311                 
23312           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
23313             <td class="entry_name
23314              " rowspan="3">
23315               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
23316             </td>
23317             <td class="entry_type">
23318                 <span class="entry_type_name">int32</span>
23319                 <span class="entry_type_container">x</span>
23320
23321                 <span class="entry_type_array">
23322                   n x 4
23323                 </span>
23324               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
23325
23326
23327               <span class="entry_type_hwlevel">[legacy] </span>
23328
23329
23330                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
23331
23332
23333             </td> <!-- entry_type -->
23334
23335             <td class="entry_description">
23336               <p>List of the bounding rectangles for detected
23337 faces.<wbr/></p>
23338             </td>
23339
23340             <td class="entry_units">
23341             </td>
23342
23343             <td class="entry_range">
23344             </td>
23345
23346             <td class="entry_tags">
23347               <ul class="entry_tags">
23348                   <li><a href="#tag_BC">BC</a></li>
23349               </ul>
23350             </td>
23351
23352           </tr>
23353           <tr class="entries_header">
23354             <th class="th_details" colspan="5">Details</th>
23355           </tr>
23356           <tr class="entry_cont">
23357             <td class="entry_details" colspan="5">
23358               <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
23359 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23360 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
23361             </td>
23362           </tr>
23363
23364
23365           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23366            <!-- end of entry -->
23367         
23368                 
23369           <tr class="entry" id="dynamic_android.statistics.faceScores">
23370             <td class="entry_name
23371              " rowspan="5">
23372               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
23373             </td>
23374             <td class="entry_type">
23375                 <span class="entry_type_name">byte</span>
23376                 <span class="entry_type_container">x</span>
23377
23378                 <span class="entry_type_array">
23379                   n
23380                 </span>
23381               <span class="entry_type_visibility"> [ndk_public]</span>
23382
23383
23384               <span class="entry_type_hwlevel">[legacy] </span>
23385
23386
23387
23388
23389             </td> <!-- entry_type -->
23390
23391             <td class="entry_description">
23392               <p>List of the face confidence scores for
23393 detected faces</p>
23394             </td>
23395
23396             <td class="entry_units">
23397             </td>
23398
23399             <td class="entry_range">
23400               <p>1-100</p>
23401             </td>
23402
23403             <td class="entry_tags">
23404               <ul class="entry_tags">
23405                   <li><a href="#tag_BC">BC</a></li>
23406               </ul>
23407             </td>
23408
23409           </tr>
23410           <tr class="entries_header">
23411             <th class="th_details" colspan="5">Details</th>
23412           </tr>
23413           <tr class="entry_cont">
23414             <td class="entry_details" colspan="5">
23415               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
23416             </td>
23417           </tr>
23418
23419           <tr class="entries_header">
23420             <th class="th_details" colspan="5">HAL Implementation Details</th>
23421           </tr>
23422           <tr class="entry_cont">
23423             <td class="entry_details" colspan="5">
23424               <p>The value should be meaningful (for example,<wbr/> setting 100 at
23425 all times is illegal).<wbr/></p>
23426             </td>
23427           </tr>
23428
23429           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23430            <!-- end of entry -->
23431         
23432                 
23433           <tr class="entry" id="dynamic_android.statistics.faces">
23434             <td class="entry_name
23435              " rowspan="3">
23436               android.<wbr/>statistics.<wbr/>faces
23437             </td>
23438             <td class="entry_type">
23439                 <span class="entry_type_name">int32</span>
23440                 <span class="entry_type_container">x</span>
23441
23442                 <span class="entry_type_array">
23443                   n
23444                 </span>
23445               <span class="entry_type_visibility"> [java_public as face]</span>
23446
23447               <span class="entry_type_synthetic">[synthetic] </span>
23448
23449               <span class="entry_type_hwlevel">[legacy] </span>
23450
23451
23452
23453
23454             </td> <!-- entry_type -->
23455
23456             <td class="entry_description">
23457               <p>List of the faces detected through camera face detection
23458 in this capture.<wbr/></p>
23459             </td>
23460
23461             <td class="entry_units">
23462             </td>
23463
23464             <td class="entry_range">
23465             </td>
23466
23467             <td class="entry_tags">
23468             </td>
23469
23470           </tr>
23471           <tr class="entries_header">
23472             <th class="th_details" colspan="5">Details</th>
23473           </tr>
23474           <tr class="entry_cont">
23475             <td class="entry_details" colspan="5">
23476               <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>
23477             </td>
23478           </tr>
23479
23480
23481           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23482            <!-- end of entry -->
23483         
23484                 
23485           <tr class="entry" id="dynamic_android.statistics.histogram">
23486             <td class="entry_name
23487              " rowspan="3">
23488               android.<wbr/>statistics.<wbr/>histogram
23489             </td>
23490             <td class="entry_type">
23491                 <span class="entry_type_name">int32</span>
23492                 <span class="entry_type_container">x</span>
23493
23494                 <span class="entry_type_array">
23495                   n x 3
23496                 </span>
23497               <span class="entry_type_visibility"> [system]</span>
23498
23499
23500
23501
23502                 <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>
23503
23504
23505             </td> <!-- entry_type -->
23506
23507             <td class="entry_description">
23508               <p>A 3-channel histogram based on the raw
23509 sensor data</p>
23510             </td>
23511
23512             <td class="entry_units">
23513             </td>
23514
23515             <td class="entry_range">
23516             </td>
23517
23518             <td class="entry_tags">
23519               <ul class="entry_tags">
23520                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23521               </ul>
23522             </td>
23523
23524           </tr>
23525           <tr class="entries_header">
23526             <th class="th_details" colspan="5">Details</th>
23527           </tr>
23528           <tr class="entry_cont">
23529             <td class="entry_details" colspan="5">
23530               <p>The k'th bucket (0-based) covers the input range
23531 (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/>
23532 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
23533 supported,<wbr/> all channels should have the same data</p>
23534             </td>
23535           </tr>
23536
23537
23538           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23539            <!-- end of entry -->
23540         
23541                 
23542           <tr class="entry" id="dynamic_android.statistics.histogramMode">
23543             <td class="entry_name
23544              " rowspan="1">
23545               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23546             </td>
23547             <td class="entry_type">
23548                 <span class="entry_type_name entry_type_name_enum">byte</span>
23549
23550               <span class="entry_type_visibility"> [system as boolean]</span>
23551
23552
23553
23554
23555
23556                 <ul class="entry_type_enum">
23557                   <li>
23558                     <span class="entry_type_enum_name">OFF</span>
23559                   </li>
23560                   <li>
23561                     <span class="entry_type_enum_name">ON</span>
23562                   </li>
23563                 </ul>
23564
23565             </td> <!-- entry_type -->
23566
23567             <td class="entry_description">
23568               <p>Operating mode for histogram
23569 generation</p>
23570             </td>
23571
23572             <td class="entry_units">
23573             </td>
23574
23575             <td class="entry_range">
23576             </td>
23577
23578             <td class="entry_tags">
23579               <ul class="entry_tags">
23580                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23581               </ul>
23582             </td>
23583
23584           </tr>
23585
23586
23587           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23588            <!-- end of entry -->
23589         
23590                 
23591           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
23592             <td class="entry_name
23593              " rowspan="3">
23594               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
23595             </td>
23596             <td class="entry_type">
23597                 <span class="entry_type_name">int32</span>
23598                 <span class="entry_type_container">x</span>
23599
23600                 <span class="entry_type_array">
23601                   n x m x 3
23602                 </span>
23603               <span class="entry_type_visibility"> [system]</span>
23604
23605
23606
23607
23608                 <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>
23609
23610
23611             </td> <!-- entry_type -->
23612
23613             <td class="entry_description">
23614               <p>A 3-channel sharpness map,<wbr/> based on the raw
23615 sensor data</p>
23616             </td>
23617
23618             <td class="entry_units">
23619             </td>
23620
23621             <td class="entry_range">
23622             </td>
23623
23624             <td class="entry_tags">
23625               <ul class="entry_tags">
23626                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23627               </ul>
23628             </td>
23629
23630           </tr>
23631           <tr class="entries_header">
23632             <th class="th_details" colspan="5">Details</th>
23633           </tr>
23634           <tr class="entry_cont">
23635             <td class="entry_details" colspan="5">
23636               <p>If only a monochrome sharpness map is supported,<wbr/>
23637 all channels should have the same data</p>
23638             </td>
23639           </tr>
23640
23641
23642           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23643            <!-- end of entry -->
23644         
23645                 
23646           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
23647             <td class="entry_name
23648              " rowspan="1">
23649               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23650             </td>
23651             <td class="entry_type">
23652                 <span class="entry_type_name entry_type_name_enum">byte</span>
23653
23654               <span class="entry_type_visibility"> [system as boolean]</span>
23655
23656
23657
23658
23659
23660                 <ul class="entry_type_enum">
23661                   <li>
23662                     <span class="entry_type_enum_name">OFF</span>
23663                   </li>
23664                   <li>
23665                     <span class="entry_type_enum_name">ON</span>
23666                   </li>
23667                 </ul>
23668
23669             </td> <!-- entry_type -->
23670
23671             <td class="entry_description">
23672               <p>Operating mode for sharpness map
23673 generation</p>
23674             </td>
23675
23676             <td class="entry_units">
23677             </td>
23678
23679             <td class="entry_range">
23680             </td>
23681
23682             <td class="entry_tags">
23683               <ul class="entry_tags">
23684                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23685               </ul>
23686             </td>
23687
23688           </tr>
23689
23690
23691           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23692            <!-- end of entry -->
23693         
23694                 
23695           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
23696             <td class="entry_name
23697              " rowspan="3">
23698               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
23699             </td>
23700             <td class="entry_type">
23701                 <span class="entry_type_name">byte</span>
23702
23703               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
23704
23705
23706               <span class="entry_type_hwlevel">[full] </span>
23707
23708
23709
23710
23711             </td> <!-- entry_type -->
23712
23713             <td class="entry_description">
23714               <p>The shading map is a low-resolution floating-point map
23715 that lists the coefficients used to correct for vignetting,<wbr/> for each
23716 Bayer color channel.<wbr/></p>
23717             </td>
23718
23719             <td class="entry_units">
23720             </td>
23721
23722             <td class="entry_range">
23723               <p>Each gain factor is &gt;= 1</p>
23724             </td>
23725
23726             <td class="entry_tags">
23727             </td>
23728
23729           </tr>
23730           <tr class="entries_header">
23731             <th class="th_details" colspan="5">Details</th>
23732           </tr>
23733           <tr class="entry_cont">
23734             <td class="entry_details" colspan="5">
23735               <p>The map provided here is the same map that is used by the camera device to
23736 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23737 <p>When there is no lens shading correction applied to RAW
23738 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23739 false),<wbr/> this map is the complete lens shading correction
23740 map; when there is some lens shading correction applied to
23741 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
23742 correction map that needs to be applied to get shading
23743 corrected images that match the camera device's output for
23744 non-RAW formats.<wbr/></p>
23745 <p>For a complete shading correction map,<wbr/> the least shaded
23746 section of the image will have a gain factor of 1; all
23747 other sections will have gains above 1.<wbr/></p>
23748 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23749 will take into account the colorCorrection settings.<wbr/></p>
23750 <p>The shading map is for the entire active pixel array,<wbr/> and is not
23751 affected by the crop region specified in the request.<wbr/> Each shading map
23752 entry is the value of the shading compensation map over a specific
23753 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23754 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23755 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23756 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23757 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23758 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23759 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23760 The shading map is stored in a fully interleaved format.<wbr/></p>
23761 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23762 and will be smaller than 64x64.<wbr/></p>
23763 <p>As an example,<wbr/> given a very small map defined as:</p>
23764 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
23765 values =
23766 [ 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/>
23767     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/>
23768   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/>
23769     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/>
23770   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/>
23771     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 ]
23772 </code></pre>
23773 <p>The low-resolution scaling map images for each channel are
23774 (displayed using nearest-neighbor interpolation):</p>
23775 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23776 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23777 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23778 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23779 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
23780 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
23781 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23782             </td>
23783           </tr>
23784
23785
23786           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23787            <!-- end of entry -->
23788         
23789                 
23790           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23791             <td class="entry_name
23792              " rowspan="5">
23793               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23794             </td>
23795             <td class="entry_type">
23796                 <span class="entry_type_name">float</span>
23797                 <span class="entry_type_container">x</span>
23798
23799                 <span class="entry_type_array">
23800                   4 x n x m
23801                 </span>
23802               <span class="entry_type_visibility"> [ndk_public]</span>
23803
23804
23805               <span class="entry_type_hwlevel">[full] </span>
23806
23807
23808                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23809
23810
23811             </td> <!-- entry_type -->
23812
23813             <td class="entry_description">
23814               <p>The shading map is a low-resolution floating-point map
23815 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
23816 for each Bayer color channel of RAW image data.<wbr/></p>
23817             </td>
23818
23819             <td class="entry_units">
23820             </td>
23821
23822             <td class="entry_range">
23823               <p>Each gain factor is &gt;= 1</p>
23824             </td>
23825
23826             <td class="entry_tags">
23827             </td>
23828
23829           </tr>
23830           <tr class="entries_header">
23831             <th class="th_details" colspan="5">Details</th>
23832           </tr>
23833           <tr class="entry_cont">
23834             <td class="entry_details" colspan="5">
23835               <p>The map provided here is the same map that is used by the camera device to
23836 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23837 <p>When there is no lens shading correction applied to RAW
23838 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23839 false),<wbr/> this map is the complete lens shading correction
23840 map; when there is some lens shading correction applied to
23841 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
23842 correction map that needs to be applied to get shading
23843 corrected images that match the camera device's output for
23844 non-RAW formats.<wbr/></p>
23845 <p>For a complete shading correction map,<wbr/> the least shaded
23846 section of the image will have a gain factor of 1; all
23847 other sections will have gains above 1.<wbr/></p>
23848 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23849 will take into account the colorCorrection settings.<wbr/></p>
23850 <p>The shading map is for the entire active pixel array,<wbr/> and is not
23851 affected by the crop region specified in the request.<wbr/> Each shading map
23852 entry is the value of the shading compensation map over a specific
23853 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23854 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23855 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23856 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23857 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23858 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23859 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23860 The shading map is stored in a fully interleaved format,<wbr/> and its size
23861 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>
23862 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23863 and will be smaller than 64x64.<wbr/></p>
23864 <p>As an example,<wbr/> given a very small map defined as:</p>
23865 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23866 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23867 [ 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/>
23868     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/>
23869   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/>
23870     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/>
23871   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/>
23872     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 ]
23873 </code></pre>
23874 <p>The low-resolution scaling map images for each channel are
23875 (displayed using nearest-neighbor interpolation):</p>
23876 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23877 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23878 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23879 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23880 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
23881 image of a gray wall (using bicubic interpolation for visual quality)
23882 as captured by the sensor gives:</p>
23883 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23884 <p>Note that the RAW image data might be subject to lens shading
23885 correction not reported on this map.<wbr/> Query
23886 <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
23887 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>
23888 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23889 correction.<wbr/> In the case full lens shading correction is applied to RAW
23890 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23891 In other words,<wbr/> the map reported in this key is the remaining lens shading
23892 that needs to be applied on the RAW image to get images without lens shading
23893 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
23894 formats.<wbr/></p>
23895             </td>
23896           </tr>
23897
23898           <tr class="entries_header">
23899             <th class="th_details" colspan="5">HAL Implementation Details</th>
23900           </tr>
23901           <tr class="entry_cont">
23902             <td class="entry_details" colspan="5">
23903               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23904 When AE and AWB are in AUTO modes
23905 (<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
23906 may have all the information it need to generate most accurate lens shading map.<wbr/> When
23907 AE or AWB are in manual mode
23908 (<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
23909 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23910 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23911 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23912             </td>
23913           </tr>
23914
23915           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23916            <!-- end of entry -->
23917         
23918                 
23919           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23920             <td class="entry_name
23921                 entry_name_deprecated
23922              " rowspan="3">
23923               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23924             </td>
23925             <td class="entry_type">
23926                 <span class="entry_type_name">float</span>
23927                 <span class="entry_type_container">x</span>
23928
23929                 <span class="entry_type_array">
23930                   4
23931                 </span>
23932               <span class="entry_type_visibility"> [hidden]</span>
23933
23934
23935
23936               <span class="entry_type_deprecated">[deprecated] </span>
23937
23938                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23939
23940
23941             </td> <!-- entry_type -->
23942
23943             <td class="entry_description">
23944               <p>The best-fit color channel gains calculated
23945 by the camera device's statistics units for the current output frame.<wbr/></p>
23946             </td>
23947
23948             <td class="entry_units">
23949             </td>
23950
23951             <td class="entry_range">
23952               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23953             </td>
23954
23955             <td class="entry_tags">
23956             </td>
23957
23958           </tr>
23959           <tr class="entries_header">
23960             <th class="th_details" colspan="5">Details</th>
23961           </tr>
23962           <tr class="entry_cont">
23963             <td class="entry_details" colspan="5">
23964               <p>This may be different than the gains used for this frame,<wbr/>
23965 since statistics processing on data from a new frame
23966 typically completes after the transform has already been
23967 applied to that frame.<wbr/></p>
23968 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
23969 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23970 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23971 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23972             </td>
23973           </tr>
23974
23975
23976           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23977            <!-- end of entry -->
23978         
23979                 
23980           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23981             <td class="entry_name
23982                 entry_name_deprecated
23983              " rowspan="3">
23984               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23985             </td>
23986             <td class="entry_type">
23987                 <span class="entry_type_name">rational</span>
23988                 <span class="entry_type_container">x</span>
23989
23990                 <span class="entry_type_array">
23991                   3 x 3
23992                 </span>
23993               <span class="entry_type_visibility"> [hidden]</span>
23994
23995
23996
23997               <span class="entry_type_deprecated">[deprecated] </span>
23998
23999                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
24000
24001
24002             </td> <!-- entry_type -->
24003
24004             <td class="entry_description">
24005               <p>The best-fit color transform matrix estimate
24006 calculated by the camera device's statistics units for the current
24007 output frame.<wbr/></p>
24008             </td>
24009
24010             <td class="entry_units">
24011             </td>
24012
24013             <td class="entry_range">
24014               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24015             </td>
24016
24017             <td class="entry_tags">
24018             </td>
24019
24020           </tr>
24021           <tr class="entries_header">
24022             <th class="th_details" colspan="5">Details</th>
24023           </tr>
24024           <tr class="entry_cont">
24025             <td class="entry_details" colspan="5">
24026               <p>The camera device will provide the estimate from its
24027 statistics unit on the white balance transforms to use
24028 for the next frame.<wbr/> These are the values the camera device believes
24029 are the best fit for the current output frame.<wbr/> This may
24030 be different than the transform used for this frame,<wbr/> since
24031 statistics processing on data from a new frame typically
24032 completes after the transform has already been applied to
24033 that frame.<wbr/></p>
24034 <p>These estimates must be provided for all frames,<wbr/> even if
24035 capture settings and color transforms are set by the application.<wbr/></p>
24036 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
24037 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
24038             </td>
24039           </tr>
24040
24041
24042           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24043            <!-- end of entry -->
24044         
24045                 
24046           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
24047             <td class="entry_name
24048              " rowspan="3">
24049               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
24050             </td>
24051             <td class="entry_type">
24052                 <span class="entry_type_name entry_type_name_enum">byte</span>
24053
24054               <span class="entry_type_visibility"> [public]</span>
24055
24056
24057               <span class="entry_type_hwlevel">[full] </span>
24058
24059
24060
24061                 <ul class="entry_type_enum">
24062                   <li>
24063                     <span class="entry_type_enum_name">NONE</span>
24064                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
24065 in the current scene.<wbr/></p></span>
24066                   </li>
24067                   <li>
24068                     <span class="entry_type_enum_name">50HZ</span>
24069                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
24070 in the current scene.<wbr/></p></span>
24071                   </li>
24072                   <li>
24073                     <span class="entry_type_enum_name">60HZ</span>
24074                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
24075 in the current scene.<wbr/></p></span>
24076                   </li>
24077                 </ul>
24078
24079             </td> <!-- entry_type -->
24080
24081             <td class="entry_description">
24082               <p>The camera device estimated scene illumination lighting
24083 frequency.<wbr/></p>
24084             </td>
24085
24086             <td class="entry_units">
24087             </td>
24088
24089             <td class="entry_range">
24090             </td>
24091
24092             <td class="entry_tags">
24093             </td>
24094
24095           </tr>
24096           <tr class="entries_header">
24097             <th class="th_details" colspan="5">Details</th>
24098           </tr>
24099           <tr class="entry_cont">
24100             <td class="entry_details" colspan="5">
24101               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
24102 that depends on the local utility power standards.<wbr/> This flicker must be
24103 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
24104 The camera device uses this entry to tell the application what the scene
24105 illuminant frequency is.<wbr/></p>
24106 <p>When manual exposure control is enabled
24107 (<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> ==
24108 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
24109 antibanding,<wbr/> and the application can ensure it selects
24110 exposure times that do not cause banding issues by looking
24111 into this metadata field.<wbr/> See
24112 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
24113 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
24114             </td>
24115           </tr>
24116
24117
24118           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24119            <!-- end of entry -->
24120         
24121                 
24122           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
24123             <td class="entry_name
24124              " rowspan="3">
24125               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24126             </td>
24127             <td class="entry_type">
24128                 <span class="entry_type_name entry_type_name_enum">byte</span>
24129
24130               <span class="entry_type_visibility"> [public as boolean]</span>
24131
24132
24133
24134
24135
24136                 <ul class="entry_type_enum">
24137                   <li>
24138                     <span class="entry_type_enum_name">OFF</span>
24139                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24140                   </li>
24141                   <li>
24142                     <span class="entry_type_enum_name">ON</span>
24143                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24144                   </li>
24145                 </ul>
24146
24147             </td> <!-- entry_type -->
24148
24149             <td class="entry_description">
24150               <p>Operating mode for hot pixel map generation.<wbr/></p>
24151             </td>
24152
24153             <td class="entry_units">
24154             </td>
24155
24156             <td class="entry_range">
24157               <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>
24158             </td>
24159
24160             <td class="entry_tags">
24161               <ul class="entry_tags">
24162                   <li><a href="#tag_V1">V1</a></li>
24163                   <li><a href="#tag_RAW">RAW</a></li>
24164               </ul>
24165             </td>
24166
24167           </tr>
24168           <tr class="entries_header">
24169             <th class="th_details" colspan="5">Details</th>
24170           </tr>
24171           <tr class="entry_cont">
24172             <td class="entry_details" colspan="5">
24173               <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/>
24174 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24175             </td>
24176           </tr>
24177
24178
24179           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24180            <!-- end of entry -->
24181         
24182                 
24183           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
24184             <td class="entry_name
24185              " rowspan="5">
24186               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
24187             </td>
24188             <td class="entry_type">
24189                 <span class="entry_type_name">int32</span>
24190                 <span class="entry_type_container">x</span>
24191
24192                 <span class="entry_type_array">
24193                   2 x n
24194                 </span>
24195               <span class="entry_type_visibility"> [public as point]</span>
24196
24197
24198
24199
24200                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
24201
24202
24203             </td> <!-- entry_type -->
24204
24205             <td class="entry_description">
24206               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
24207             </td>
24208
24209             <td class="entry_units">
24210             </td>
24211
24212             <td class="entry_range">
24213               <p>n &lt;= number of pixels on the sensor.<wbr/>
24214 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
24215 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24216             </td>
24217
24218             <td class="entry_tags">
24219               <ul class="entry_tags">
24220                   <li><a href="#tag_V1">V1</a></li>
24221                   <li><a href="#tag_RAW">RAW</a></li>
24222               </ul>
24223             </td>
24224
24225           </tr>
24226           <tr class="entries_header">
24227             <th class="th_details" colspan="5">Details</th>
24228           </tr>
24229           <tr class="entry_cont">
24230             <td class="entry_details" colspan="5">
24231               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
24232 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
24233 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
24234 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/>
24235 This may include hot pixels that lie outside of the active array
24236 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24237             </td>
24238           </tr>
24239
24240           <tr class="entries_header">
24241             <th class="th_details" colspan="5">HAL Implementation Details</th>
24242           </tr>
24243           <tr class="entry_cont">
24244             <td class="entry_details" colspan="5">
24245               <p>A hotpixel map contains the coordinates of pixels on the camera
24246 sensor that do report valid values (usually due to defects in
24247 the camera sensor).<wbr/> This includes pixels that are stuck at certain
24248 values,<wbr/> or have a response that does not accuractly encode the
24249 incoming light from the scene.<wbr/></p>
24250 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
24251 pixels than actual pixels on the camera sensor.<wbr/></p>
24252             </td>
24253           </tr>
24254
24255           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24256            <!-- end of entry -->
24257         
24258                 
24259           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
24260             <td class="entry_name
24261              " rowspan="3">
24262               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24263             </td>
24264             <td class="entry_type">
24265                 <span class="entry_type_name entry_type_name_enum">byte</span>
24266
24267               <span class="entry_type_visibility"> [public]</span>
24268
24269
24270               <span class="entry_type_hwlevel">[full] </span>
24271
24272
24273
24274                 <ul class="entry_type_enum">
24275                   <li>
24276                     <span class="entry_type_enum_name">OFF</span>
24277                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24278                   </li>
24279                   <li>
24280                     <span class="entry_type_enum_name">ON</span>
24281                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24282                   </li>
24283                 </ul>
24284
24285             </td> <!-- entry_type -->
24286
24287             <td class="entry_description">
24288               <p>Whether the camera device will output the lens
24289 shading map in output result metadata.<wbr/></p>
24290             </td>
24291
24292             <td class="entry_units">
24293             </td>
24294
24295             <td class="entry_range">
24296               <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>
24297             </td>
24298
24299             <td class="entry_tags">
24300               <ul class="entry_tags">
24301                   <li><a href="#tag_RAW">RAW</a></li>
24302               </ul>
24303             </td>
24304
24305           </tr>
24306           <tr class="entries_header">
24307             <th class="th_details" colspan="5">Details</th>
24308           </tr>
24309           <tr class="entry_cont">
24310             <td class="entry_details" colspan="5">
24311               <p>When set to ON,<wbr/>
24312 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24313 the output result metadata.<wbr/></p>
24314 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24315             </td>
24316           </tr>
24317
24318
24319           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24320            <!-- end of entry -->
24321         
24322         
24323
24324       <!-- end of kind -->
24325       </tbody>
24326
24327   <!-- end of section -->
24328   <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
24329
24330
24331       <tr><td colspan="6" class="kind">controls</td></tr>
24332
24333       <thead class="entries_header">
24334         <tr>
24335           <th class="th_name">Property Name</th>
24336           <th class="th_type">Type</th>
24337           <th class="th_description">Description</th>
24338           <th class="th_units">Units</th>
24339           <th class="th_range">Range</th>
24340           <th class="th_tags">Tags</th>
24341         </tr>
24342       </thead>
24343
24344       <tbody>
24345
24346         
24347
24348         
24349
24350         
24351
24352         
24353
24354                 
24355           <tr class="entry" id="controls_android.tonemap.curveBlue">
24356             <td class="entry_name
24357              " rowspan="3">
24358               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24359             </td>
24360             <td class="entry_type">
24361                 <span class="entry_type_name">float</span>
24362                 <span class="entry_type_container">x</span>
24363
24364                 <span class="entry_type_array">
24365                   n x 2
24366                 </span>
24367               <span class="entry_type_visibility"> [ndk_public]</span>
24368
24369
24370               <span class="entry_type_hwlevel">[full] </span>
24371
24372
24373                 <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>
24374
24375
24376             </td> <!-- entry_type -->
24377
24378             <td class="entry_description">
24379               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24380 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24381 CONTRAST_<wbr/>CURVE.<wbr/></p>
24382             </td>
24383
24384             <td class="entry_units">
24385             </td>
24386
24387             <td class="entry_range">
24388             </td>
24389
24390             <td class="entry_tags">
24391             </td>
24392
24393           </tr>
24394           <tr class="entries_header">
24395             <th class="th_details" colspan="5">Details</th>
24396           </tr>
24397           <tr class="entry_cont">
24398             <td class="entry_details" colspan="5">
24399               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24400             </td>
24401           </tr>
24402
24403
24404           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24405            <!-- end of entry -->
24406         
24407                 
24408           <tr class="entry" id="controls_android.tonemap.curveGreen">
24409             <td class="entry_name
24410              " rowspan="3">
24411               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24412             </td>
24413             <td class="entry_type">
24414                 <span class="entry_type_name">float</span>
24415                 <span class="entry_type_container">x</span>
24416
24417                 <span class="entry_type_array">
24418                   n x 2
24419                 </span>
24420               <span class="entry_type_visibility"> [ndk_public]</span>
24421
24422
24423               <span class="entry_type_hwlevel">[full] </span>
24424
24425
24426                 <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>
24427
24428
24429             </td> <!-- entry_type -->
24430
24431             <td class="entry_description">
24432               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24433 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24434 CONTRAST_<wbr/>CURVE.<wbr/></p>
24435             </td>
24436
24437             <td class="entry_units">
24438             </td>
24439
24440             <td class="entry_range">
24441             </td>
24442
24443             <td class="entry_tags">
24444             </td>
24445
24446           </tr>
24447           <tr class="entries_header">
24448             <th class="th_details" colspan="5">Details</th>
24449           </tr>
24450           <tr class="entry_cont">
24451             <td class="entry_details" colspan="5">
24452               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24453             </td>
24454           </tr>
24455
24456
24457           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24458            <!-- end of entry -->
24459         
24460                 
24461           <tr class="entry" id="controls_android.tonemap.curveRed">
24462             <td class="entry_name
24463              " rowspan="5">
24464               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24465             </td>
24466             <td class="entry_type">
24467                 <span class="entry_type_name">float</span>
24468                 <span class="entry_type_container">x</span>
24469
24470                 <span class="entry_type_array">
24471                   n x 2
24472                 </span>
24473               <span class="entry_type_visibility"> [ndk_public]</span>
24474
24475
24476               <span class="entry_type_hwlevel">[full] </span>
24477
24478
24479                 <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>
24480
24481
24482             </td> <!-- entry_type -->
24483
24484             <td class="entry_description">
24485               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24486 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24487 CONTRAST_<wbr/>CURVE.<wbr/></p>
24488             </td>
24489
24490             <td class="entry_units">
24491             </td>
24492
24493             <td class="entry_range">
24494               <p>0-1 on both input and output coordinates,<wbr/> normalized
24495 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24496             </td>
24497
24498             <td class="entry_tags">
24499             </td>
24500
24501           </tr>
24502           <tr class="entries_header">
24503             <th class="th_details" colspan="5">Details</th>
24504           </tr>
24505           <tr class="entry_cont">
24506             <td class="entry_details" colspan="5">
24507               <p>Each channel's curve is defined by an array of control points:</p>
24508 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24509   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
24510 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24511 <p>These are sorted in order of increasing <code>Pin</code>; it is
24512 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24513 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24514 the camera device must linearly interpolate between the control
24515 points.<wbr/></p>
24516 <p>Each curve can have an independent number of points,<wbr/> and the number
24517 of points can be less than max (that is,<wbr/> the request doesn't have to
24518 always provide a curve with number of points equivalent to
24519 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24520 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24521 only specify the red channel and the precision is limited to 4
24522 digits,<wbr/> for conciseness.<wbr/></p>
24523 <p>Linear mapping:</p>
24524 <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 ]
24525 </code></pre>
24526 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24527 <p>Invert mapping:</p>
24528 <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 ]
24529 </code></pre>
24530 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24531 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24532 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24533   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/>
24534   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/>
24535   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/>
24536   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 ]
24537 </code></pre>
24538 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24539 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24540 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24541   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/>
24542   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/>
24543   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/>
24544   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 ]
24545 </code></pre>
24546 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24547             </td>
24548           </tr>
24549
24550           <tr class="entries_header">
24551             <th class="th_details" colspan="5">HAL Implementation Details</th>
24552           </tr>
24553           <tr class="entry_cont">
24554             <td class="entry_details" colspan="5">
24555               <p>For good quality of mapping,<wbr/> at least 128 control points are
24556 preferred.<wbr/></p>
24557 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24558 control points used as are available.<wbr/></p>
24559             </td>
24560           </tr>
24561
24562           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24563            <!-- end of entry -->
24564         
24565                 
24566           <tr class="entry" id="controls_android.tonemap.curve">
24567             <td class="entry_name
24568              " rowspan="5">
24569               android.<wbr/>tonemap.<wbr/>curve
24570             </td>
24571             <td class="entry_type">
24572                 <span class="entry_type_name">float</span>
24573
24574               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
24575
24576               <span class="entry_type_synthetic">[synthetic] </span>
24577
24578               <span class="entry_type_hwlevel">[full] </span>
24579
24580
24581
24582
24583             </td> <!-- entry_type -->
24584
24585             <td class="entry_description">
24586               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24587 is CONTRAST_<wbr/>CURVE.<wbr/></p>
24588             </td>
24589
24590             <td class="entry_units">
24591             </td>
24592
24593             <td class="entry_range">
24594             </td>
24595
24596             <td class="entry_tags">
24597             </td>
24598
24599           </tr>
24600           <tr class="entries_header">
24601             <th class="th_details" colspan="5">Details</th>
24602           </tr>
24603           <tr class="entry_cont">
24604             <td class="entry_details" colspan="5">
24605               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24606 channels respectively.<wbr/> The following example uses the red channel as an
24607 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24608 Each channel's curve is defined by an array of control points:</p>
24609 <pre><code>curveRed =
24610   [ 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) ]
24611 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24612 <p>These are sorted in order of increasing <code>Pin</code>; it is always
24613 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24614 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24615 the camera device must linearly interpolate between the control
24616 points.<wbr/></p>
24617 <p>Each curve can have an independent number of points,<wbr/> and the number
24618 of points can be less than max (that is,<wbr/> the request doesn't have to
24619 always provide a curve with number of points equivalent to
24620 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24621 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24622 only specify the red channel and the precision is limited to 4
24623 digits,<wbr/> for conciseness.<wbr/></p>
24624 <p>Linear mapping:</p>
24625 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24626 </code></pre>
24627 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24628 <p>Invert mapping:</p>
24629 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24630 </code></pre>
24631 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24632 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24633 <pre><code>curveRed = [
24634   (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/>
24635   (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/>
24636   (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/>
24637   (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) ]
24638 </code></pre>
24639 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24640 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24641 <pre><code>curveRed = [
24642   (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/>
24643   (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/>
24644   (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/>
24645   (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) ]
24646 </code></pre>
24647 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24648             </td>
24649           </tr>
24650
24651           <tr class="entries_header">
24652             <th class="th_details" colspan="5">HAL Implementation Details</th>
24653           </tr>
24654           <tr class="entry_cont">
24655             <td class="entry_details" colspan="5">
24656               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24657 curveBlue entries.<wbr/></p>
24658             </td>
24659           </tr>
24660
24661           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24662            <!-- end of entry -->
24663         
24664                 
24665           <tr class="entry" id="controls_android.tonemap.mode">
24666             <td class="entry_name
24667              " rowspan="3">
24668               android.<wbr/>tonemap.<wbr/>mode
24669             </td>
24670             <td class="entry_type">
24671                 <span class="entry_type_name entry_type_name_enum">byte</span>
24672
24673               <span class="entry_type_visibility"> [public]</span>
24674
24675
24676               <span class="entry_type_hwlevel">[full] </span>
24677
24678
24679
24680                 <ul class="entry_type_enum">
24681                   <li>
24682                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24683                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24684 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24685 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24686 for applying the tonemapping curve specified by
24687 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24688 <p>Must not slow down frame rate relative to raw
24689 sensor output.<wbr/></p></span>
24690                   </li>
24691                   <li>
24692                     <span class="entry_type_enum_name">FAST</span>
24693                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24694 reducing frame rate compared to raw sensor output.<wbr/></p></span>
24695                   </li>
24696                   <li>
24697                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
24698                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24699 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24700                   </li>
24701                   <li>
24702                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
24703                     <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
24704 tonemapping.<wbr/></p>
24705 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24706 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24707 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24708                   </li>
24709                   <li>
24710                     <span class="entry_type_enum_name">PRESET_CURVE</span>
24711                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24712 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24713 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24714 for applying the tonemapping curve specified by
24715 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24716 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24717                   </li>
24718                 </ul>
24719
24720             </td> <!-- entry_type -->
24721
24722             <td class="entry_description">
24723               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24724             </td>
24725
24726             <td class="entry_units">
24727             </td>
24728
24729             <td class="entry_range">
24730               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24731             </td>
24732
24733             <td class="entry_tags">
24734             </td>
24735
24736           </tr>
24737           <tr class="entries_header">
24738             <th class="th_details" colspan="5">Details</th>
24739           </tr>
24740           <tr class="entry_cont">
24741             <td class="entry_details" colspan="5">
24742               <p>When switching to an application-defined contrast curve by setting
24743 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24744 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24745 mapping from input high-bit-depth pixel value to the output
24746 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24747 and output may change depending on the camera pipeline,<wbr/> the values
24748 are specified by normalized floating-point numbers.<wbr/></p>
24749 <p>More-complex color mapping operations such as 3D color look-up
24750 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24751 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24752 CONTRAST_<wbr/>CURVE.<wbr/></p>
24753 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24754 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24755 These values are always available,<wbr/> and as close as possible to the
24756 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24757 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24758 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24759 roughly the same.<wbr/></p>
24760             </td>
24761           </tr>
24762
24763
24764           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24765            <!-- end of entry -->
24766         
24767                 
24768           <tr class="entry" id="controls_android.tonemap.gamma">
24769             <td class="entry_name
24770              " rowspan="3">
24771               android.<wbr/>tonemap.<wbr/>gamma
24772             </td>
24773             <td class="entry_type">
24774                 <span class="entry_type_name">float</span>
24775
24776               <span class="entry_type_visibility"> [public]</span>
24777
24778
24779
24780
24781
24782
24783             </td> <!-- entry_type -->
24784
24785             <td class="entry_description">
24786               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24787 GAMMA_<wbr/>VALUE</p>
24788             </td>
24789
24790             <td class="entry_units">
24791             </td>
24792
24793             <td class="entry_range">
24794             </td>
24795
24796             <td class="entry_tags">
24797             </td>
24798
24799           </tr>
24800           <tr class="entries_header">
24801             <th class="th_details" colspan="5">Details</th>
24802           </tr>
24803           <tr class="entry_cont">
24804             <td class="entry_details" colspan="5">
24805               <p>The tonemap curve will be defined the following formula:
24806 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24807 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24808 pow is the power function and gamma is the gamma value specified by this
24809 key.<wbr/></p>
24810 <p>The same curve will be applied to all color channels.<wbr/> The camera device
24811 may clip the input gamma value to its supported range.<wbr/> The actual applied
24812 value will be returned in capture result.<wbr/></p>
24813 <p>The valid range of gamma value varies on different devices,<wbr/> but values
24814 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24815             </td>
24816           </tr>
24817
24818
24819           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24820            <!-- end of entry -->
24821         
24822                 
24823           <tr class="entry" id="controls_android.tonemap.presetCurve">
24824             <td class="entry_name
24825              " rowspan="3">
24826               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24827             </td>
24828             <td class="entry_type">
24829                 <span class="entry_type_name entry_type_name_enum">byte</span>
24830
24831               <span class="entry_type_visibility"> [public]</span>
24832
24833
24834
24835
24836
24837                 <ul class="entry_type_enum">
24838                   <li>
24839                     <span class="entry_type_enum_name">SRGB</span>
24840                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24841                   </li>
24842                   <li>
24843                     <span class="entry_type_enum_name">REC709</span>
24844                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24845                   </li>
24846                 </ul>
24847
24848             </td> <!-- entry_type -->
24849
24850             <td class="entry_description">
24851               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24852 PRESET_<wbr/>CURVE</p>
24853             </td>
24854
24855             <td class="entry_units">
24856             </td>
24857
24858             <td class="entry_range">
24859             </td>
24860
24861             <td class="entry_tags">
24862             </td>
24863
24864           </tr>
24865           <tr class="entries_header">
24866             <th class="th_details" colspan="5">Details</th>
24867           </tr>
24868           <tr class="entry_cont">
24869             <td class="entry_details" colspan="5">
24870               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24871 <p>sRGB (approximated by 16 control points):</p>
24872 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24873 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24874 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24875 <p>Note that above figures show a 16 control points approximation of preset
24876 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24877             </td>
24878           </tr>
24879
24880
24881           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24882            <!-- end of entry -->
24883         
24884         
24885
24886       <!-- end of kind -->
24887       </tbody>
24888       <tr><td colspan="6" class="kind">static</td></tr>
24889
24890       <thead class="entries_header">
24891         <tr>
24892           <th class="th_name">Property Name</th>
24893           <th class="th_type">Type</th>
24894           <th class="th_description">Description</th>
24895           <th class="th_units">Units</th>
24896           <th class="th_range">Range</th>
24897           <th class="th_tags">Tags</th>
24898         </tr>
24899       </thead>
24900
24901       <tbody>
24902
24903         
24904
24905         
24906
24907         
24908
24909         
24910
24911                 
24912           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24913             <td class="entry_name
24914              " rowspan="5">
24915               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24916             </td>
24917             <td class="entry_type">
24918                 <span class="entry_type_name">int32</span>
24919
24920               <span class="entry_type_visibility"> [public]</span>
24921
24922
24923               <span class="entry_type_hwlevel">[full] </span>
24924
24925
24926
24927
24928             </td> <!-- entry_type -->
24929
24930             <td class="entry_description">
24931               <p>Maximum number of supported points in the
24932 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24933             </td>
24934
24935             <td class="entry_units">
24936             </td>
24937
24938             <td class="entry_range">
24939             </td>
24940
24941             <td class="entry_tags">
24942             </td>
24943
24944           </tr>
24945           <tr class="entries_header">
24946             <th class="th_details" colspan="5">Details</th>
24947           </tr>
24948           <tr class="entry_cont">
24949             <td class="entry_details" colspan="5">
24950               <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
24951 less than this maximum,<wbr/> the camera device will resample the curve to its internal
24952 representation,<wbr/> using linear interpolation.<wbr/></p>
24953 <p>The output curves in the result metadata may have a different number
24954 of points than the input curves,<wbr/> and will represent the actual
24955 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24956             </td>
24957           </tr>
24958
24959           <tr class="entries_header">
24960             <th class="th_details" colspan="5">HAL Implementation Details</th>
24961           </tr>
24962           <tr class="entry_cont">
24963             <td class="entry_details" colspan="5">
24964               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24965             </td>
24966           </tr>
24967
24968           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24969            <!-- end of entry -->
24970         
24971                 
24972           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24973             <td class="entry_name
24974              " rowspan="5">
24975               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24976             </td>
24977             <td class="entry_type">
24978                 <span class="entry_type_name">byte</span>
24979                 <span class="entry_type_container">x</span>
24980
24981                 <span class="entry_type_array">
24982                   n
24983                 </span>
24984               <span class="entry_type_visibility"> [public as enumList]</span>
24985
24986
24987               <span class="entry_type_hwlevel">[full] </span>
24988
24989
24990                 <div class="entry_type_notes">list of enums</div>
24991
24992
24993             </td> <!-- entry_type -->
24994
24995             <td class="entry_description">
24996               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24997 device.<wbr/></p>
24998             </td>
24999
25000             <td class="entry_units">
25001             </td>
25002
25003             <td class="entry_range">
25004               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
25005             </td>
25006
25007             <td class="entry_tags">
25008             </td>
25009
25010           </tr>
25011           <tr class="entries_header">
25012             <th class="th_details" colspan="5">Details</th>
25013           </tr>
25014           <tr class="entry_cont">
25015             <td class="entry_details" colspan="5">
25016               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
25017 at least one of below mode combinations:</p>
25018 <ul>
25019 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25020 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25021 </ul>
25022 <p>This includes all FULL level devices.<wbr/></p>
25023             </td>
25024           </tr>
25025
25026           <tr class="entries_header">
25027             <th class="th_details" colspan="5">HAL Implementation Details</th>
25028           </tr>
25029           <tr class="entry_cont">
25030             <td class="entry_details" colspan="5">
25031               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
25032 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
25033 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
25034 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
25035             </td>
25036           </tr>
25037
25038           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25039            <!-- end of entry -->
25040         
25041         
25042
25043       <!-- end of kind -->
25044       </tbody>
25045       <tr><td colspan="6" class="kind">dynamic</td></tr>
25046
25047       <thead class="entries_header">
25048         <tr>
25049           <th class="th_name">Property Name</th>
25050           <th class="th_type">Type</th>
25051           <th class="th_description">Description</th>
25052           <th class="th_units">Units</th>
25053           <th class="th_range">Range</th>
25054           <th class="th_tags">Tags</th>
25055         </tr>
25056       </thead>
25057
25058       <tbody>
25059
25060         
25061
25062         
25063
25064         
25065
25066         
25067
25068                 
25069           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
25070             <td class="entry_name
25071              " rowspan="3">
25072               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25073             </td>
25074             <td class="entry_type">
25075                 <span class="entry_type_name">float</span>
25076                 <span class="entry_type_container">x</span>
25077
25078                 <span class="entry_type_array">
25079                   n x 2
25080                 </span>
25081               <span class="entry_type_visibility"> [ndk_public]</span>
25082
25083
25084               <span class="entry_type_hwlevel">[full] </span>
25085
25086
25087                 <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>
25088
25089
25090             </td> <!-- entry_type -->
25091
25092             <td class="entry_description">
25093               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25094 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25095 CONTRAST_<wbr/>CURVE.<wbr/></p>
25096             </td>
25097
25098             <td class="entry_units">
25099             </td>
25100
25101             <td class="entry_range">
25102             </td>
25103
25104             <td class="entry_tags">
25105             </td>
25106
25107           </tr>
25108           <tr class="entries_header">
25109             <th class="th_details" colspan="5">Details</th>
25110           </tr>
25111           <tr class="entry_cont">
25112             <td class="entry_details" colspan="5">
25113               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25114             </td>
25115           </tr>
25116
25117
25118           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25119            <!-- end of entry -->
25120         
25121                 
25122           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
25123             <td class="entry_name
25124              " rowspan="3">
25125               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25126             </td>
25127             <td class="entry_type">
25128                 <span class="entry_type_name">float</span>
25129                 <span class="entry_type_container">x</span>
25130
25131                 <span class="entry_type_array">
25132                   n x 2
25133                 </span>
25134               <span class="entry_type_visibility"> [ndk_public]</span>
25135
25136
25137               <span class="entry_type_hwlevel">[full] </span>
25138
25139
25140                 <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>
25141
25142
25143             </td> <!-- entry_type -->
25144
25145             <td class="entry_description">
25146               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25147 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25148 CONTRAST_<wbr/>CURVE.<wbr/></p>
25149             </td>
25150
25151             <td class="entry_units">
25152             </td>
25153
25154             <td class="entry_range">
25155             </td>
25156
25157             <td class="entry_tags">
25158             </td>
25159
25160           </tr>
25161           <tr class="entries_header">
25162             <th class="th_details" colspan="5">Details</th>
25163           </tr>
25164           <tr class="entry_cont">
25165             <td class="entry_details" colspan="5">
25166               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25167             </td>
25168           </tr>
25169
25170
25171           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25172            <!-- end of entry -->
25173         
25174                 
25175           <tr class="entry" id="dynamic_android.tonemap.curveRed">
25176             <td class="entry_name
25177              " rowspan="5">
25178               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25179             </td>
25180             <td class="entry_type">
25181                 <span class="entry_type_name">float</span>
25182                 <span class="entry_type_container">x</span>
25183
25184                 <span class="entry_type_array">
25185                   n x 2
25186                 </span>
25187               <span class="entry_type_visibility"> [ndk_public]</span>
25188
25189
25190               <span class="entry_type_hwlevel">[full] </span>
25191
25192
25193                 <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>
25194
25195
25196             </td> <!-- entry_type -->
25197
25198             <td class="entry_description">
25199               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25200 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25201 CONTRAST_<wbr/>CURVE.<wbr/></p>
25202             </td>
25203
25204             <td class="entry_units">
25205             </td>
25206
25207             <td class="entry_range">
25208               <p>0-1 on both input and output coordinates,<wbr/> normalized
25209 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25210             </td>
25211
25212             <td class="entry_tags">
25213             </td>
25214
25215           </tr>
25216           <tr class="entries_header">
25217             <th class="th_details" colspan="5">Details</th>
25218           </tr>
25219           <tr class="entry_cont">
25220             <td class="entry_details" colspan="5">
25221               <p>Each channel's curve is defined by an array of control points:</p>
25222 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25223   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25224 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25225 <p>These are sorted in order of increasing <code>Pin</code>; it is
25226 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25227 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25228 the camera device must linearly interpolate between the control
25229 points.<wbr/></p>
25230 <p>Each curve can have an independent number of points,<wbr/> and the number
25231 of points can be less than max (that is,<wbr/> the request doesn't have to
25232 always provide a curve with number of points equivalent to
25233 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25234 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25235 only specify the red channel and the precision is limited to 4
25236 digits,<wbr/> for conciseness.<wbr/></p>
25237 <p>Linear mapping:</p>
25238 <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 ]
25239 </code></pre>
25240 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25241 <p>Invert mapping:</p>
25242 <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 ]
25243 </code></pre>
25244 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25245 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25246 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25247   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/>
25248   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/>
25249   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/>
25250   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 ]
25251 </code></pre>
25252 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25253 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25254 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25255   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/>
25256   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/>
25257   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/>
25258   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 ]
25259 </code></pre>
25260 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25261             </td>
25262           </tr>
25263
25264           <tr class="entries_header">
25265             <th class="th_details" colspan="5">HAL Implementation Details</th>
25266           </tr>
25267           <tr class="entry_cont">
25268             <td class="entry_details" colspan="5">
25269               <p>For good quality of mapping,<wbr/> at least 128 control points are
25270 preferred.<wbr/></p>
25271 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25272 control points used as are available.<wbr/></p>
25273             </td>
25274           </tr>
25275
25276           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25277            <!-- end of entry -->
25278         
25279                 
25280           <tr class="entry" id="dynamic_android.tonemap.curve">
25281             <td class="entry_name
25282              " rowspan="5">
25283               android.<wbr/>tonemap.<wbr/>curve
25284             </td>
25285             <td class="entry_type">
25286                 <span class="entry_type_name">float</span>
25287
25288               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25289
25290               <span class="entry_type_synthetic">[synthetic] </span>
25291
25292               <span class="entry_type_hwlevel">[full] </span>
25293
25294
25295
25296
25297             </td> <!-- entry_type -->
25298
25299             <td class="entry_description">
25300               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25301 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25302             </td>
25303
25304             <td class="entry_units">
25305             </td>
25306
25307             <td class="entry_range">
25308             </td>
25309
25310             <td class="entry_tags">
25311             </td>
25312
25313           </tr>
25314           <tr class="entries_header">
25315             <th class="th_details" colspan="5">Details</th>
25316           </tr>
25317           <tr class="entry_cont">
25318             <td class="entry_details" colspan="5">
25319               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25320 channels respectively.<wbr/> The following example uses the red channel as an
25321 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25322 Each channel's curve is defined by an array of control points:</p>
25323 <pre><code>curveRed =
25324   [ 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) ]
25325 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25326 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25327 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25328 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25329 the camera device must linearly interpolate between the control
25330 points.<wbr/></p>
25331 <p>Each curve can have an independent number of points,<wbr/> and the number
25332 of points can be less than max (that is,<wbr/> the request doesn't have to
25333 always provide a curve with number of points equivalent to
25334 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25335 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25336 only specify the red channel and the precision is limited to 4
25337 digits,<wbr/> for conciseness.<wbr/></p>
25338 <p>Linear mapping:</p>
25339 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25340 </code></pre>
25341 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25342 <p>Invert mapping:</p>
25343 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25344 </code></pre>
25345 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25346 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25347 <pre><code>curveRed = [
25348   (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/>
25349   (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/>
25350   (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/>
25351   (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) ]
25352 </code></pre>
25353 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25354 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25355 <pre><code>curveRed = [
25356   (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/>
25357   (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/>
25358   (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/>
25359   (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) ]
25360 </code></pre>
25361 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25362             </td>
25363           </tr>
25364
25365           <tr class="entries_header">
25366             <th class="th_details" colspan="5">HAL Implementation Details</th>
25367           </tr>
25368           <tr class="entry_cont">
25369             <td class="entry_details" colspan="5">
25370               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25371 curveBlue entries.<wbr/></p>
25372             </td>
25373           </tr>
25374
25375           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25376            <!-- end of entry -->
25377         
25378                 
25379           <tr class="entry" id="dynamic_android.tonemap.mode">
25380             <td class="entry_name
25381              " rowspan="3">
25382               android.<wbr/>tonemap.<wbr/>mode
25383             </td>
25384             <td class="entry_type">
25385                 <span class="entry_type_name entry_type_name_enum">byte</span>
25386
25387               <span class="entry_type_visibility"> [public]</span>
25388
25389
25390               <span class="entry_type_hwlevel">[full] </span>
25391
25392
25393
25394                 <ul class="entry_type_enum">
25395                   <li>
25396                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25397                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25398 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25399 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25400 for applying the tonemapping curve specified by
25401 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25402 <p>Must not slow down frame rate relative to raw
25403 sensor output.<wbr/></p></span>
25404                   </li>
25405                   <li>
25406                     <span class="entry_type_enum_name">FAST</span>
25407                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25408 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25409                   </li>
25410                   <li>
25411                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
25412                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25413 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25414                   </li>
25415                   <li>
25416                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
25417                     <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
25418 tonemapping.<wbr/></p>
25419 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25420 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25421 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25422                   </li>
25423                   <li>
25424                     <span class="entry_type_enum_name">PRESET_CURVE</span>
25425                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25426 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25427 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25428 for applying the tonemapping curve specified by
25429 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25430 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25431                   </li>
25432                 </ul>
25433
25434             </td> <!-- entry_type -->
25435
25436             <td class="entry_description">
25437               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25438             </td>
25439
25440             <td class="entry_units">
25441             </td>
25442
25443             <td class="entry_range">
25444               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25445             </td>
25446
25447             <td class="entry_tags">
25448             </td>
25449
25450           </tr>
25451           <tr class="entries_header">
25452             <th class="th_details" colspan="5">Details</th>
25453           </tr>
25454           <tr class="entry_cont">
25455             <td class="entry_details" colspan="5">
25456               <p>When switching to an application-defined contrast curve by setting
25457 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25458 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25459 mapping from input high-bit-depth pixel value to the output
25460 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
25461 and output may change depending on the camera pipeline,<wbr/> the values
25462 are specified by normalized floating-point numbers.<wbr/></p>
25463 <p>More-complex color mapping operations such as 3D color look-up
25464 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25465 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25466 CONTRAST_<wbr/>CURVE.<wbr/></p>
25467 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25468 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25469 These values are always available,<wbr/> and as close as possible to the
25470 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25471 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25472 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25473 roughly the same.<wbr/></p>
25474             </td>
25475           </tr>
25476
25477
25478           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25479            <!-- end of entry -->
25480         
25481                 
25482           <tr class="entry" id="dynamic_android.tonemap.gamma">
25483             <td class="entry_name
25484              " rowspan="3">
25485               android.<wbr/>tonemap.<wbr/>gamma
25486             </td>
25487             <td class="entry_type">
25488                 <span class="entry_type_name">float</span>
25489
25490               <span class="entry_type_visibility"> [public]</span>
25491
25492
25493
25494
25495
25496
25497             </td> <!-- entry_type -->
25498
25499             <td class="entry_description">
25500               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25501 GAMMA_<wbr/>VALUE</p>
25502             </td>
25503
25504             <td class="entry_units">
25505             </td>
25506
25507             <td class="entry_range">
25508             </td>
25509
25510             <td class="entry_tags">
25511             </td>
25512
25513           </tr>
25514           <tr class="entries_header">
25515             <th class="th_details" colspan="5">Details</th>
25516           </tr>
25517           <tr class="entry_cont">
25518             <td class="entry_details" colspan="5">
25519               <p>The tonemap curve will be defined the following formula:
25520 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25521 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25522 pow is the power function and gamma is the gamma value specified by this
25523 key.<wbr/></p>
25524 <p>The same curve will be applied to all color channels.<wbr/> The camera device
25525 may clip the input gamma value to its supported range.<wbr/> The actual applied
25526 value will be returned in capture result.<wbr/></p>
25527 <p>The valid range of gamma value varies on different devices,<wbr/> but values
25528 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25529             </td>
25530           </tr>
25531
25532
25533           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25534            <!-- end of entry -->
25535         
25536                 
25537           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
25538             <td class="entry_name
25539              " rowspan="3">
25540               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25541             </td>
25542             <td class="entry_type">
25543                 <span class="entry_type_name entry_type_name_enum">byte</span>
25544
25545               <span class="entry_type_visibility"> [public]</span>
25546
25547
25548
25549
25550
25551                 <ul class="entry_type_enum">
25552                   <li>
25553                     <span class="entry_type_enum_name">SRGB</span>
25554                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
25555                   </li>
25556                   <li>
25557                     <span class="entry_type_enum_name">REC709</span>
25558                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
25559                   </li>
25560                 </ul>
25561
25562             </td> <!-- entry_type -->
25563
25564             <td class="entry_description">
25565               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25566 PRESET_<wbr/>CURVE</p>
25567             </td>
25568
25569             <td class="entry_units">
25570             </td>
25571
25572             <td class="entry_range">
25573             </td>
25574
25575             <td class="entry_tags">
25576             </td>
25577
25578           </tr>
25579           <tr class="entries_header">
25580             <th class="th_details" colspan="5">Details</th>
25581           </tr>
25582           <tr class="entry_cont">
25583             <td class="entry_details" colspan="5">
25584               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
25585 <p>sRGB (approximated by 16 control points):</p>
25586 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25587 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
25588 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
25589 <p>Note that above figures show a 16 control points approximation of preset
25590 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
25591             </td>
25592           </tr>
25593
25594
25595           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25596            <!-- end of entry -->
25597         
25598         
25599
25600       <!-- end of kind -->
25601       </tbody>
25602
25603   <!-- end of section -->
25604   <tr><td colspan="6" id="section_led" class="section">led</td></tr>
25605
25606
25607       <tr><td colspan="6" class="kind">controls</td></tr>
25608
25609       <thead class="entries_header">
25610         <tr>
25611           <th class="th_name">Property Name</th>
25612           <th class="th_type">Type</th>
25613           <th class="th_description">Description</th>
25614           <th class="th_units">Units</th>
25615           <th class="th_range">Range</th>
25616           <th class="th_tags">Tags</th>
25617         </tr>
25618       </thead>
25619
25620       <tbody>
25621
25622         
25623
25624         
25625
25626         
25627
25628         
25629
25630                 
25631           <tr class="entry" id="controls_android.led.transmit">
25632             <td class="entry_name
25633              " rowspan="1">
25634               android.<wbr/>led.<wbr/>transmit
25635             </td>
25636             <td class="entry_type">
25637                 <span class="entry_type_name entry_type_name_enum">byte</span>
25638
25639               <span class="entry_type_visibility"> [hidden as boolean]</span>
25640
25641
25642
25643
25644
25645                 <ul class="entry_type_enum">
25646                   <li>
25647                     <span class="entry_type_enum_name">OFF</span>
25648                   </li>
25649                   <li>
25650                     <span class="entry_type_enum_name">ON</span>
25651                   </li>
25652                 </ul>
25653
25654             </td> <!-- entry_type -->
25655
25656             <td class="entry_description">
25657               <p>This LED is nominally used to indicate to the user
25658 that the camera is powered on and may be streaming images back to the
25659 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25660 disable this when video is processed locally and not transmitted to
25661 any untrusted applications.<wbr/></p>
25662 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25663 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25664 data is stored locally on the device.<wbr/></p>
25665 <p>The LED <em>may</em> be off if a trusted application is using the data that
25666 doesn't violate the above rules.<wbr/></p>
25667             </td>
25668
25669             <td class="entry_units">
25670             </td>
25671
25672             <td class="entry_range">
25673             </td>
25674
25675             <td class="entry_tags">
25676             </td>
25677
25678           </tr>
25679
25680
25681           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25682            <!-- end of entry -->
25683         
25684         
25685
25686       <!-- end of kind -->
25687       </tbody>
25688       <tr><td colspan="6" class="kind">dynamic</td></tr>
25689
25690       <thead class="entries_header">
25691         <tr>
25692           <th class="th_name">Property Name</th>
25693           <th class="th_type">Type</th>
25694           <th class="th_description">Description</th>
25695           <th class="th_units">Units</th>
25696           <th class="th_range">Range</th>
25697           <th class="th_tags">Tags</th>
25698         </tr>
25699       </thead>
25700
25701       <tbody>
25702
25703         
25704
25705         
25706
25707         
25708
25709         
25710
25711                 
25712           <tr class="entry" id="dynamic_android.led.transmit">
25713             <td class="entry_name
25714              " rowspan="1">
25715               android.<wbr/>led.<wbr/>transmit
25716             </td>
25717             <td class="entry_type">
25718                 <span class="entry_type_name entry_type_name_enum">byte</span>
25719
25720               <span class="entry_type_visibility"> [hidden as boolean]</span>
25721
25722
25723
25724
25725
25726                 <ul class="entry_type_enum">
25727                   <li>
25728                     <span class="entry_type_enum_name">OFF</span>
25729                   </li>
25730                   <li>
25731                     <span class="entry_type_enum_name">ON</span>
25732                   </li>
25733                 </ul>
25734
25735             </td> <!-- entry_type -->
25736
25737             <td class="entry_description">
25738               <p>This LED is nominally used to indicate to the user
25739 that the camera is powered on and may be streaming images back to the
25740 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25741 disable this when video is processed locally and not transmitted to
25742 any untrusted applications.<wbr/></p>
25743 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25744 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25745 data is stored locally on the device.<wbr/></p>
25746 <p>The LED <em>may</em> be off if a trusted application is using the data that
25747 doesn't violate the above rules.<wbr/></p>
25748             </td>
25749
25750             <td class="entry_units">
25751             </td>
25752
25753             <td class="entry_range">
25754             </td>
25755
25756             <td class="entry_tags">
25757             </td>
25758
25759           </tr>
25760
25761
25762           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25763            <!-- end of entry -->
25764         
25765         
25766
25767       <!-- end of kind -->
25768       </tbody>
25769       <tr><td colspan="6" class="kind">static</td></tr>
25770
25771       <thead class="entries_header">
25772         <tr>
25773           <th class="th_name">Property Name</th>
25774           <th class="th_type">Type</th>
25775           <th class="th_description">Description</th>
25776           <th class="th_units">Units</th>
25777           <th class="th_range">Range</th>
25778           <th class="th_tags">Tags</th>
25779         </tr>
25780       </thead>
25781
25782       <tbody>
25783
25784         
25785
25786         
25787
25788         
25789
25790         
25791
25792                 
25793           <tr class="entry" id="static_android.led.availableLeds">
25794             <td class="entry_name
25795              " rowspan="1">
25796               android.<wbr/>led.<wbr/>available<wbr/>Leds
25797             </td>
25798             <td class="entry_type">
25799                 <span class="entry_type_name entry_type_name_enum">byte</span>
25800                 <span class="entry_type_container">x</span>
25801
25802                 <span class="entry_type_array">
25803                   n
25804                 </span>
25805               <span class="entry_type_visibility"> [hidden]</span>
25806
25807
25808
25809
25810
25811                 <ul class="entry_type_enum">
25812                   <li>
25813                     <span class="entry_type_enum_name">TRANSMIT</span>
25814                     <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>
25815                   </li>
25816                 </ul>
25817
25818             </td> <!-- entry_type -->
25819
25820             <td class="entry_description">
25821               <p>A list of camera LEDs that are available on this system.<wbr/></p>
25822             </td>
25823
25824             <td class="entry_units">
25825             </td>
25826
25827             <td class="entry_range">
25828             </td>
25829
25830             <td class="entry_tags">
25831             </td>
25832
25833           </tr>
25834
25835
25836           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25837            <!-- end of entry -->
25838         
25839         
25840
25841       <!-- end of kind -->
25842       </tbody>
25843
25844   <!-- end of section -->
25845   <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25846
25847
25848       <tr><td colspan="6" class="kind">static</td></tr>
25849
25850       <thead class="entries_header">
25851         <tr>
25852           <th class="th_name">Property Name</th>
25853           <th class="th_type">Type</th>
25854           <th class="th_description">Description</th>
25855           <th class="th_units">Units</th>
25856           <th class="th_range">Range</th>
25857           <th class="th_tags">Tags</th>
25858         </tr>
25859       </thead>
25860
25861       <tbody>
25862
25863         
25864
25865         
25866
25867         
25868
25869         
25870
25871                 
25872           <tr class="entry" id="static_android.info.supportedHardwareLevel">
25873             <td class="entry_name
25874              " rowspan="5">
25875               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25876             </td>
25877             <td class="entry_type">
25878                 <span class="entry_type_name entry_type_name_enum">byte</span>
25879
25880               <span class="entry_type_visibility"> [public]</span>
25881
25882
25883               <span class="entry_type_hwlevel">[legacy] </span>
25884
25885
25886
25887                 <ul class="entry_type_enum">
25888                   <li>
25889                     <span class="entry_type_enum_name">LIMITED</span>
25890                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
25891 better.<wbr/></p>
25892 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
25893 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25894 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
25895 support for color image capture.<wbr/> The only exception is that the device may
25896 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
25897 measurements and not color images.<wbr/></p>
25898 <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>
25899 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
25900 capturing a high-quality still image.<wbr/></p>
25901 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
25902 required to support full-automatic operation and post-processing (<code>OFF</code> is not
25903 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
25904 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
25905 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
25906 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
25907                   </li>
25908                   <li>
25909                     <span class="entry_type_enum_name">FULL</span>
25910                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
25911 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
25912 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25913 <p>A <code>FULL</code> device will support below capabilities:</p>
25914 <ul>
25915 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25916   <code>BURST_<wbr/>CAPTURE</code>)</li>
25917 <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>
25918 <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>
25919 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25920   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
25921 <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>
25922 <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>
25923 </ul>
25924 <p>Note:
25925 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25926 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
25927 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
25928                   </li>
25929                   <li>
25930                     <span class="entry_type_enum_name">LEGACY</span>
25931                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
25932 <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>
25933 documentation are supported.<wbr/></p>
25934 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25935 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
25936 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
25937 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25938 <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>
25939 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
25940 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
25941 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
25942 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
25943 enable the flash.<wbr/></p></span>
25944                   </li>
25945                   <li>
25946                     <span class="entry_type_enum_name">3</span>
25947                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
25948 FULL-level capabilities.<wbr/></p>
25949 <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
25950 <code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25951 documentation are guaranteed to be supported.<wbr/></p>
25952 <p>The following additional capabilities are guaranteed to be supported:</p>
25953 <ul>
25954 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25955   <code>YUV_<wbr/>REPROCESSING</code>)</li>
25956 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25957   <code>RAW</code>)</li>
25958 </ul></span>
25959                   </li>
25960                 </ul>
25961
25962             </td> <!-- entry_type -->
25963
25964             <td class="entry_description">
25965               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25966             </td>
25967
25968             <td class="entry_units">
25969             </td>
25970
25971             <td class="entry_range">
25972             </td>
25973
25974             <td class="entry_tags">
25975             </td>
25976
25977           </tr>
25978           <tr class="entries_header">
25979             <th class="th_details" colspan="5">Details</th>
25980           </tr>
25981           <tr class="entry_cont">
25982             <td class="entry_details" colspan="5">
25983               <p>The supported hardware level is a high-level description of the camera device's
25984 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
25985 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
25986 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
25987 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
25988 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
25989 the following code snippet can be used:</p>
25990 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
25991 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
25992     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
25993     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
25994         return requiredLevel == deviceLevel;
25995     }
25996     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
25997     return requiredLevel &lt;= deviceLevel;
25998 }
25999 </code></pre>
26000 <p>At a high level,<wbr/> the levels are:</p>
26001 <ul>
26002 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
26003   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
26004 <li><code>LIMITED</code> devices represent the
26005   baseline feature set,<wbr/> and may also include additional capabilities that are
26006   subsets of <code>FULL</code>.<wbr/></li>
26007 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
26008   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
26009 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
26010   with additional output stream configurations.<wbr/></li>
26011 </ul>
26012 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
26013 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
26014 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
26015 ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
26016 <p>Some features are not part of any particular hardware level or capability and must be
26017 queried separately.<wbr/> These include:</p>
26018 <ul>
26019 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
26020 <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>
26021 <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>
26022 <li>Optical or electrical image stabilization
26023   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
26024    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
26025 </ul>
26026             </td>
26027           </tr>
26028
26029           <tr class="entries_header">
26030             <th class="th_details" colspan="5">HAL Implementation Details</th>
26031           </tr>
26032           <tr class="entry_cont">
26033             <td class="entry_details" colspan="5">
26034               <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
26035 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
26036 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
26037 mode has hardware requirements roughly in line with those for a camera HAL device v1
26038 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
26039 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
26040 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
26041 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
26042 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
26043 by the camera framework code.<wbr/></p>
26044             </td>
26045           </tr>
26046
26047           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26048            <!-- end of entry -->
26049         
26050         
26051
26052       <!-- end of kind -->
26053       </tbody>
26054
26055   <!-- end of section -->
26056   <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
26057
26058
26059       <tr><td colspan="6" class="kind">controls</td></tr>
26060
26061       <thead class="entries_header">
26062         <tr>
26063           <th class="th_name">Property Name</th>
26064           <th class="th_type">Type</th>
26065           <th class="th_description">Description</th>
26066           <th class="th_units">Units</th>
26067           <th class="th_range">Range</th>
26068           <th class="th_tags">Tags</th>
26069         </tr>
26070       </thead>
26071
26072       <tbody>
26073
26074         
26075
26076         
26077
26078         
26079
26080         
26081
26082                 
26083           <tr class="entry" id="controls_android.blackLevel.lock">
26084             <td class="entry_name
26085              " rowspan="5">
26086               android.<wbr/>black<wbr/>Level.<wbr/>lock
26087             </td>
26088             <td class="entry_type">
26089                 <span class="entry_type_name entry_type_name_enum">byte</span>
26090
26091               <span class="entry_type_visibility"> [public as boolean]</span>
26092
26093
26094               <span class="entry_type_hwlevel">[full] </span>
26095
26096
26097
26098                 <ul class="entry_type_enum">
26099                   <li>
26100                     <span class="entry_type_enum_name">OFF</span>
26101                   </li>
26102                   <li>
26103                     <span class="entry_type_enum_name">ON</span>
26104                   </li>
26105                 </ul>
26106
26107             </td> <!-- entry_type -->
26108
26109             <td class="entry_description">
26110               <p>Whether black-level compensation is locked
26111 to its current values,<wbr/> or is free to vary.<wbr/></p>
26112             </td>
26113
26114             <td class="entry_units">
26115             </td>
26116
26117             <td class="entry_range">
26118             </td>
26119
26120             <td class="entry_tags">
26121               <ul class="entry_tags">
26122                   <li><a href="#tag_HAL2">HAL2</a></li>
26123               </ul>
26124             </td>
26125
26126           </tr>
26127           <tr class="entries_header">
26128             <th class="th_details" colspan="5">Details</th>
26129           </tr>
26130           <tr class="entry_cont">
26131             <td class="entry_details" colspan="5">
26132               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
26133 compensation will not change until the lock is set to
26134 <code>false</code> (OFF).<wbr/></p>
26135 <p>Since changes to certain capture parameters (such as
26136 exposure time) may require resetting of black level
26137 compensation,<wbr/> the camera device must report whether setting
26138 the black level lock was successful in the output result
26139 metadata.<wbr/></p>
26140 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
26141 <ul>
26142 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26143 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26144 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26145 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26146 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26147 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26148 </ul>
26149 <p>And the exposure change in Request 4 requires the camera
26150 device to reset the black level offsets,<wbr/> then the output
26151 result metadata is expected to be:</p>
26152 <ul>
26153 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26154 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26155 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26156 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
26157 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26158 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26159 </ul>
26160 <p>This indicates to the application that on frame 4,<wbr/> black
26161 levels were reset due to exposure value changes,<wbr/> and pixel
26162 values may not be consistent across captures.<wbr/></p>
26163 <p>The camera device will maintain the lock to the extent
26164 possible,<wbr/> only overriding the lock to OFF when changes to
26165 other request parameters require a black level recalculation
26166 or reset.<wbr/></p>
26167             </td>
26168           </tr>
26169
26170           <tr class="entries_header">
26171             <th class="th_details" colspan="5">HAL Implementation Details</th>
26172           </tr>
26173           <tr class="entry_cont">
26174             <td class="entry_details" colspan="5">
26175               <p>If for some reason black level locking is no longer possible
26176 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
26177 black level offsets to be recalculated),<wbr/> then the HAL must
26178 override this request (and it must report 'OFF' when this
26179 does happen) until the next capture for which locking is
26180 possible again.<wbr/></p>
26181             </td>
26182           </tr>
26183
26184           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26185            <!-- end of entry -->
26186         
26187         
26188
26189       <!-- end of kind -->
26190       </tbody>
26191       <tr><td colspan="6" class="kind">dynamic</td></tr>
26192
26193       <thead class="entries_header">
26194         <tr>
26195           <th class="th_name">Property Name</th>
26196           <th class="th_type">Type</th>
26197           <th class="th_description">Description</th>
26198           <th class="th_units">Units</th>
26199           <th class="th_range">Range</th>
26200           <th class="th_tags">Tags</th>
26201         </tr>
26202       </thead>
26203
26204       <tbody>
26205
26206         
26207
26208         
26209
26210         
26211
26212         
26213
26214                 
26215           <tr class="entry" id="dynamic_android.blackLevel.lock">
26216             <td class="entry_name
26217              " rowspan="5">
26218               android.<wbr/>black<wbr/>Level.<wbr/>lock
26219             </td>
26220             <td class="entry_type">
26221                 <span class="entry_type_name entry_type_name_enum">byte</span>
26222
26223               <span class="entry_type_visibility"> [public as boolean]</span>
26224
26225
26226               <span class="entry_type_hwlevel">[full] </span>
26227
26228
26229
26230                 <ul class="entry_type_enum">
26231                   <li>
26232                     <span class="entry_type_enum_name">OFF</span>
26233                   </li>
26234                   <li>
26235                     <span class="entry_type_enum_name">ON</span>
26236                   </li>
26237                 </ul>
26238
26239             </td> <!-- entry_type -->
26240
26241             <td class="entry_description">
26242               <p>Whether black-level compensation is locked
26243 to its current values,<wbr/> or is free to vary.<wbr/></p>
26244             </td>
26245
26246             <td class="entry_units">
26247             </td>
26248
26249             <td class="entry_range">
26250             </td>
26251
26252             <td class="entry_tags">
26253               <ul class="entry_tags">
26254                   <li><a href="#tag_HAL2">HAL2</a></li>
26255               </ul>
26256             </td>
26257
26258           </tr>
26259           <tr class="entries_header">
26260             <th class="th_details" colspan="5">Details</th>
26261           </tr>
26262           <tr class="entry_cont">
26263             <td class="entry_details" colspan="5">
26264               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
26265 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
26266 a change in other capture settings forced the camera device to
26267 perform a black level reset.<wbr/></p>
26268             </td>
26269           </tr>
26270
26271           <tr class="entries_header">
26272             <th class="th_details" colspan="5">HAL Implementation Details</th>
26273           </tr>
26274           <tr class="entry_cont">
26275             <td class="entry_details" colspan="5">
26276               <p>If for some reason black level locking is no longer possible
26277 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
26278 black level offsets to be recalculated),<wbr/> then the HAL must
26279 override this request (and it must report 'OFF' when this
26280 does happen) until the next capture for which locking is
26281 possible again.<wbr/></p>
26282             </td>
26283           </tr>
26284
26285           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26286            <!-- end of entry -->
26287         
26288         
26289
26290       <!-- end of kind -->
26291       </tbody>
26292
26293   <!-- end of section -->
26294   <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
26295
26296
26297       <tr><td colspan="6" class="kind">dynamic</td></tr>
26298
26299       <thead class="entries_header">
26300         <tr>
26301           <th class="th_name">Property Name</th>
26302           <th class="th_type">Type</th>
26303           <th class="th_description">Description</th>
26304           <th class="th_units">Units</th>
26305           <th class="th_range">Range</th>
26306           <th class="th_tags">Tags</th>
26307         </tr>
26308       </thead>
26309
26310       <tbody>
26311
26312         
26313
26314         
26315
26316         
26317
26318         
26319
26320                 
26321           <tr class="entry" id="dynamic_android.sync.frameNumber">
26322             <td class="entry_name
26323              " rowspan="5">
26324               android.<wbr/>sync.<wbr/>frame<wbr/>Number
26325             </td>
26326             <td class="entry_type">
26327                 <span class="entry_type_name entry_type_name_enum">int64</span>
26328
26329               <span class="entry_type_visibility"> [ndk_public]</span>
26330
26331
26332               <span class="entry_type_hwlevel">[legacy] </span>
26333
26334
26335
26336                 <ul class="entry_type_enum">
26337                   <li>
26338                     <span class="entry_type_enum_name">CONVERGING</span>
26339                     <span class="entry_type_enum_value">-1</span>
26340                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
26341 <p>Synchronization is in progress,<wbr/> and reading metadata from this
26342 result may include a mix of data that have taken effect since the
26343 last synchronization time.<wbr/></p>
26344 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
26345 this value will update to the actual frame number frame number
26346 the result is guaranteed to be synchronized to (as long as the
26347 request settings remain constant).<wbr/></p></span>
26348                   </li>
26349                   <li>
26350                     <span class="entry_type_enum_name">UNKNOWN</span>
26351                     <span class="entry_type_enum_value">-2</span>
26352                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
26353 <p>The result may have already converged,<wbr/> or it may be in
26354 progress.<wbr/>  Reading from this result may include some mix
26355 of settings from past requests.<wbr/></p>
26356 <p>After a settings change,<wbr/> the new settings will eventually all
26357 take effect for the output buffers and results.<wbr/> However,<wbr/> this
26358 value will not change when that happens.<wbr/> Altering settings
26359 rapidly may provide outcomes using mixes of settings from recent
26360 requests.<wbr/></p>
26361 <p>This value is intended primarily for backwards compatibility with
26362 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
26363                   </li>
26364                 </ul>
26365
26366             </td> <!-- entry_type -->
26367
26368             <td class="entry_description">
26369               <p>The frame number corresponding to the last request
26370 with which the output result (metadata + buffers) has been fully
26371 synchronized.<wbr/></p>
26372             </td>
26373
26374             <td class="entry_units">
26375             </td>
26376
26377             <td class="entry_range">
26378               <p>Either a non-negative value corresponding to a
26379 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
26380             </td>
26381
26382             <td class="entry_tags">
26383               <ul class="entry_tags">
26384                   <li><a href="#tag_V1">V1</a></li>
26385               </ul>
26386             </td>
26387
26388           </tr>
26389           <tr class="entries_header">
26390             <th class="th_details" colspan="5">Details</th>
26391           </tr>
26392           <tr class="entry_cont">
26393             <td class="entry_details" colspan="5">
26394               <p>When a request is submitted to the camera device,<wbr/> there is usually a
26395 delay of several frames before the controls get applied.<wbr/> A camera
26396 device may either choose to account for this delay by implementing a
26397 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
26398 it may start streaming control changes that span over several frame
26399 boundaries.<wbr/></p>
26400 <p>In the latter case,<wbr/> whenever a request's settings change relative to
26401 the previous submitted request,<wbr/> the full set of changes may take
26402 multiple frame durations to fully take effect.<wbr/> Some settings may
26403 take effect sooner (in less frame durations) than others.<wbr/></p>
26404 <p>While a set of control changes are being propagated,<wbr/> this value
26405 will be CONVERGING.<wbr/></p>
26406 <p>Once it is fully known that a set of control changes have been
26407 finished propagating,<wbr/> and the resulting updated control settings
26408 have been read back by the camera device,<wbr/> this value will be set
26409 to a non-negative frame number (corresponding to the request to
26410 which the results have synchronized to).<wbr/></p>
26411 <p>Older camera device implementations may not have a way to detect
26412 when all camera controls have been applied,<wbr/> and will always set this
26413 value to UNKNOWN.<wbr/></p>
26414 <p>FULL capability devices will always have this value set to the
26415 frame number of the request corresponding to this result.<wbr/></p>
26416 <p><em>Further details</em>:</p>
26417 <ul>
26418 <li>Whenever a request differs from the last request,<wbr/> any future
26419 results not yet returned may have this value set to CONVERGING (this
26420 could include any in-progress captures not yet returned by the camera
26421 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
26422 <li>Submitting a series of multiple requests that differ from the
26423 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
26424 moves the new synchronization frame to the last non-repeating
26425 request (using the smallest frame number from the contiguous list of
26426 repeating requests).<wbr/></li>
26427 <li>Submitting the same request repeatedly will not change this value
26428 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
26429 <li>When this value changes to non-negative,<wbr/> that means that all of the
26430 metadata controls from the request have been applied,<wbr/> all of the
26431 metadata controls from the camera device have been read to the
26432 updated values (into the result),<wbr/> and all of the graphics buffers
26433 corresponding to this result are also synchronized to the request.<wbr/></li>
26434 </ul>
26435 <p><em>Pipeline considerations</em>:</p>
26436 <p>Submitting a request with updated controls relative to the previously
26437 submitted requests may also invalidate the synchronization state
26438 of all the results corresponding to currently in-flight requests.<wbr/></p>
26439 <p>In other words,<wbr/> results for this current request and up to
26440 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
26441 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
26442             </td>
26443           </tr>
26444
26445           <tr class="entries_header">
26446             <th class="th_details" colspan="5">HAL Implementation Details</th>
26447           </tr>
26448           <tr class="entry_cont">
26449             <td class="entry_details" colspan="5">
26450               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
26451 is also UNKNOWN.<wbr/></p>
26452 <p>FULL capability devices should simply set this value to the
26453 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
26454             </td>
26455           </tr>
26456
26457           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26458            <!-- end of entry -->
26459         
26460         
26461
26462       <!-- end of kind -->
26463       </tbody>
26464       <tr><td colspan="6" class="kind">static</td></tr>
26465
26466       <thead class="entries_header">
26467         <tr>
26468           <th class="th_name">Property Name</th>
26469           <th class="th_type">Type</th>
26470           <th class="th_description">Description</th>
26471           <th class="th_units">Units</th>
26472           <th class="th_range">Range</th>
26473           <th class="th_tags">Tags</th>
26474         </tr>
26475       </thead>
26476
26477       <tbody>
26478
26479         
26480
26481         
26482
26483         
26484
26485         
26486
26487                 
26488           <tr class="entry" id="static_android.sync.maxLatency">
26489             <td class="entry_name
26490              " rowspan="5">
26491               android.<wbr/>sync.<wbr/>max<wbr/>Latency
26492             </td>
26493             <td class="entry_type">
26494                 <span class="entry_type_name entry_type_name_enum">int32</span>
26495
26496               <span class="entry_type_visibility"> [public]</span>
26497
26498
26499               <span class="entry_type_hwlevel">[legacy] </span>
26500
26501
26502
26503                 <ul class="entry_type_enum">
26504                   <li>
26505                     <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
26506                     <span class="entry_type_enum_value">0</span>
26507                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
26508 <p>Changing controls over multiple requests one after another will
26509 produce results that have those controls applied atomically
26510 each frame.<wbr/></p>
26511 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
26512                   </li>
26513                   <li>
26514                     <span class="entry_type_enum_name">UNKNOWN</span>
26515                     <span class="entry_type_enum_value">-1</span>
26516                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
26517 of the past requests applied to the camera settings.<wbr/></p>
26518 <p>By submitting a series of identical requests,<wbr/> the camera device
26519 will eventually have the camera settings applied,<wbr/> but it is
26520 unknown when that exact point will be.<wbr/></p>
26521 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
26522                   </li>
26523                 </ul>
26524
26525             </td> <!-- entry_type -->
26526
26527             <td class="entry_description">
26528               <p>The maximum number of frames that can occur after a request
26529 (different than the previous) has been submitted,<wbr/> and before the
26530 result's state becomes synchronized.<wbr/></p>
26531             </td>
26532
26533             <td class="entry_units">
26534               Frame counts
26535             </td>
26536
26537             <td class="entry_range">
26538               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
26539             </td>
26540
26541             <td class="entry_tags">
26542               <ul class="entry_tags">
26543                   <li><a href="#tag_V1">V1</a></li>
26544               </ul>
26545             </td>
26546
26547           </tr>
26548           <tr class="entries_header">
26549             <th class="th_details" colspan="5">Details</th>
26550           </tr>
26551           <tr class="entry_cont">
26552             <td class="entry_details" colspan="5">
26553               <p>This defines the maximum distance (in number of metadata results),<wbr/>
26554 between the frame number of the request that has new controls to apply
26555 and the frame number of the result that has all the controls applied.<wbr/></p>
26556 <p>In other words this acts as an upper boundary for how many frames
26557 must occur before the camera device knows for a fact that the new
26558 submitted camera settings have been applied in outgoing frames.<wbr/></p>
26559             </td>
26560           </tr>
26561
26562           <tr class="entries_header">
26563             <th class="th_details" colspan="5">HAL Implementation Details</th>
26564           </tr>
26565           <tr class="entry_cont">
26566             <td class="entry_details" colspan="5">
26567               <p>For example if maxLatency was 2,<wbr/></p>
26568 <pre><code>initial request = X (repeating)
26569 request1 = X
26570 request2 = Y
26571 request3 = Y
26572 request4 = Y
26573
26574 where requestN has frameNumber N,<wbr/> and the first of the repeating
26575 initial request's has frameNumber F (and F &lt; 1).<wbr/>
26576
26577 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26578 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26579 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26580 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26581 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
26582
26583 where resultN has frameNumber N.<wbr/>
26584 </code></pre>
26585 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
26586 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
26587 <code>4 - 2 = 2</code>.<wbr/></p>
26588 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
26589 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
26590 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
26591 <p>LIMITED devices are strongly encouraged to use a non-negative
26592 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
26593 to know when sensor settings have been applied.<wbr/></p>
26594             </td>
26595           </tr>
26596
26597           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26598            <!-- end of entry -->
26599         
26600         
26601
26602       <!-- end of kind -->
26603       </tbody>
26604
26605   <!-- end of section -->
26606   <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
26607
26608
26609       <tr><td colspan="6" class="kind">controls</td></tr>
26610
26611       <thead class="entries_header">
26612         <tr>
26613           <th class="th_name">Property Name</th>
26614           <th class="th_type">Type</th>
26615           <th class="th_description">Description</th>
26616           <th class="th_units">Units</th>
26617           <th class="th_range">Range</th>
26618           <th class="th_tags">Tags</th>
26619         </tr>
26620       </thead>
26621
26622       <tbody>
26623
26624         
26625
26626         
26627
26628         
26629
26630         
26631
26632                 
26633           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
26634             <td class="entry_name
26635              " rowspan="3">
26636               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26637             </td>
26638             <td class="entry_type">
26639                 <span class="entry_type_name">float</span>
26640
26641               <span class="entry_type_visibility"> [java_public]</span>
26642
26643
26644               <span class="entry_type_hwlevel">[limited] </span>
26645
26646
26647
26648
26649             </td> <!-- entry_type -->
26650
26651             <td class="entry_description">
26652               <p>The amount of exposure time increase factor applied to the original output
26653 frame by the application processing before sending for reprocessing.<wbr/></p>
26654             </td>
26655
26656             <td class="entry_units">
26657               Relative exposure time increase factor.<wbr/>
26658             </td>
26659
26660             <td class="entry_range">
26661               <p>&gt;= 1.<wbr/>0</p>
26662             </td>
26663
26664             <td class="entry_tags">
26665               <ul class="entry_tags">
26666                   <li><a href="#tag_REPROC">REPROC</a></li>
26667               </ul>
26668             </td>
26669
26670           </tr>
26671           <tr class="entries_header">
26672             <th class="th_details" colspan="5">Details</th>
26673           </tr>
26674           <tr class="entry_cont">
26675             <td class="entry_details" colspan="5">
26676               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26677 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26678 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26679 output frames to effectively reduce the noise to the same level as a frame that was
26680 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26681 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26682 the camera device is that the amount of noise in the image would be approximately what
26683 would be expected if the original capture parameters had been a sensitivity of
26684 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26685 than S and T respectively.<wbr/> If the captured images were processed by the application
26686 before being sent for reprocessing,<wbr/> then the application may have used image processing
26687 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26688 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26689 control,<wbr/> the application can communicate to the camera device the actual noise level
26690 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26691 device can select appropriate noise reduction and edge enhancement parameters to avoid
26692 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26693 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26694 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26695 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26696 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26697 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26698 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26699 produce the best quality images.<wbr/></p>
26700 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26701 buffer in a way that affects its effective exposure time.<wbr/></p>
26702 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26703 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/>
26704 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26705 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26706             </td>
26707           </tr>
26708
26709
26710           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26711            <!-- end of entry -->
26712         
26713         
26714
26715       <!-- end of kind -->
26716       </tbody>
26717       <tr><td colspan="6" class="kind">dynamic</td></tr>
26718
26719       <thead class="entries_header">
26720         <tr>
26721           <th class="th_name">Property Name</th>
26722           <th class="th_type">Type</th>
26723           <th class="th_description">Description</th>
26724           <th class="th_units">Units</th>
26725           <th class="th_range">Range</th>
26726           <th class="th_tags">Tags</th>
26727         </tr>
26728       </thead>
26729
26730       <tbody>
26731
26732         
26733
26734         
26735
26736         
26737
26738         
26739
26740                 
26741           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
26742             <td class="entry_name
26743              " rowspan="3">
26744               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26745             </td>
26746             <td class="entry_type">
26747                 <span class="entry_type_name">float</span>
26748
26749               <span class="entry_type_visibility"> [java_public]</span>
26750
26751
26752               <span class="entry_type_hwlevel">[limited] </span>
26753
26754
26755
26756
26757             </td> <!-- entry_type -->
26758
26759             <td class="entry_description">
26760               <p>The amount of exposure time increase factor applied to the original output
26761 frame by the application processing before sending for reprocessing.<wbr/></p>
26762             </td>
26763
26764             <td class="entry_units">
26765               Relative exposure time increase factor.<wbr/>
26766             </td>
26767
26768             <td class="entry_range">
26769               <p>&gt;= 1.<wbr/>0</p>
26770             </td>
26771
26772             <td class="entry_tags">
26773               <ul class="entry_tags">
26774                   <li><a href="#tag_REPROC">REPROC</a></li>
26775               </ul>
26776             </td>
26777
26778           </tr>
26779           <tr class="entries_header">
26780             <th class="th_details" colspan="5">Details</th>
26781           </tr>
26782           <tr class="entry_cont">
26783             <td class="entry_details" colspan="5">
26784               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26785 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26786 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26787 output frames to effectively reduce the noise to the same level as a frame that was
26788 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26789 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26790 the camera device is that the amount of noise in the image would be approximately what
26791 would be expected if the original capture parameters had been a sensitivity of
26792 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26793 than S and T respectively.<wbr/> If the captured images were processed by the application
26794 before being sent for reprocessing,<wbr/> then the application may have used image processing
26795 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26796 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26797 control,<wbr/> the application can communicate to the camera device the actual noise level
26798 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26799 device can select appropriate noise reduction and edge enhancement parameters to avoid
26800 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26801 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26802 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26803 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26804 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26805 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26806 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26807 produce the best quality images.<wbr/></p>
26808 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26809 buffer in a way that affects its effective exposure time.<wbr/></p>
26810 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26811 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/>
26812 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26813 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26814             </td>
26815           </tr>
26816
26817
26818           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26819            <!-- end of entry -->
26820         
26821         
26822
26823       <!-- end of kind -->
26824       </tbody>
26825       <tr><td colspan="6" class="kind">static</td></tr>
26826
26827       <thead class="entries_header">
26828         <tr>
26829           <th class="th_name">Property Name</th>
26830           <th class="th_type">Type</th>
26831           <th class="th_description">Description</th>
26832           <th class="th_units">Units</th>
26833           <th class="th_range">Range</th>
26834           <th class="th_tags">Tags</th>
26835         </tr>
26836       </thead>
26837
26838       <tbody>
26839
26840         
26841
26842         
26843
26844         
26845
26846         
26847
26848                 
26849           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
26850             <td class="entry_name
26851              " rowspan="3">
26852               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
26853             </td>
26854             <td class="entry_type">
26855                 <span class="entry_type_name">int32</span>
26856
26857               <span class="entry_type_visibility"> [java_public]</span>
26858
26859
26860               <span class="entry_type_hwlevel">[limited] </span>
26861
26862
26863
26864
26865             </td> <!-- entry_type -->
26866
26867             <td class="entry_description">
26868               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26869 reprocess capture request.<wbr/></p>
26870             </td>
26871
26872             <td class="entry_units">
26873               Number of frames.<wbr/>
26874             </td>
26875
26876             <td class="entry_range">
26877               <p>&lt;= 4</p>
26878             </td>
26879
26880             <td class="entry_tags">
26881               <ul class="entry_tags">
26882                   <li><a href="#tag_REPROC">REPROC</a></li>
26883               </ul>
26884             </td>
26885
26886           </tr>
26887           <tr class="entries_header">
26888             <th class="th_details" colspan="5">Details</th>
26889           </tr>
26890           <tr class="entry_cont">
26891             <td class="entry_details" colspan="5">
26892               <p>The key describes the maximal interference that one reprocess (input) request
26893 can introduce to the camera simultaneous streaming of regular (output) capture
26894 requests,<wbr/> including repeating requests.<wbr/></p>
26895 <p>When a reprocessing capture request is submitted while a camera output repeating request
26896 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26897 pipeline for at least one frame duration so that the camera device is unable to process
26898 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26899 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26900 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26901 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26902 the worst-case number of frame stall introduced by one reprocess request with any kind of
26903 formats/<wbr/>sizes combination.<wbr/></p>
26904 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26905 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26906 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26907 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26908 YUV_<wbr/>REPROCESSING).<wbr/></p>
26909             </td>
26910           </tr>
26911
26912
26913           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26914            <!-- end of entry -->
26915         
26916         
26917
26918       <!-- end of kind -->
26919       </tbody>
26920
26921   <!-- end of section -->
26922   <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26923
26924
26925       <tr><td colspan="6" class="kind">static</td></tr>
26926
26927       <thead class="entries_header">
26928         <tr>
26929           <th class="th_name">Property Name</th>
26930           <th class="th_type">Type</th>
26931           <th class="th_description">Description</th>
26932           <th class="th_units">Units</th>
26933           <th class="th_range">Range</th>
26934           <th class="th_tags">Tags</th>
26935         </tr>
26936       </thead>
26937
26938       <tbody>
26939
26940         
26941
26942         
26943
26944         
26945
26946         
26947
26948                 
26949           <tr class="entry" id="static_android.depth.maxDepthSamples">
26950             <td class="entry_name
26951              " rowspan="3">
26952               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26953             </td>
26954             <td class="entry_type">
26955                 <span class="entry_type_name">int32</span>
26956
26957               <span class="entry_type_visibility"> [system]</span>
26958
26959
26960               <span class="entry_type_hwlevel">[limited] </span>
26961
26962
26963
26964
26965             </td> <!-- entry_type -->
26966
26967             <td class="entry_description">
26968               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26969             </td>
26970
26971             <td class="entry_units">
26972             </td>
26973
26974             <td class="entry_range">
26975             </td>
26976
26977             <td class="entry_tags">
26978               <ul class="entry_tags">
26979                   <li><a href="#tag_DEPTH">DEPTH</a></li>
26980               </ul>
26981             </td>
26982
26983           </tr>
26984           <tr class="entries_header">
26985             <th class="th_details" colspan="5">Details</th>
26986           </tr>
26987           <tr class="entry_cont">
26988             <td class="entry_details" colspan="5">
26989               <p>If a camera device supports outputting depth range data in the form of a depth point
26990 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
26991 number of points an output buffer may contain.<wbr/></p>
26992 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26993 If output in the depth point cloud format is not supported,<wbr/> this entry will
26994 not be defined.<wbr/></p>
26995             </td>
26996           </tr>
26997
26998
26999           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27000            <!-- end of entry -->
27001         
27002                 
27003           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
27004             <td class="entry_name
27005              " rowspan="3">
27006               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
27007             </td>
27008             <td class="entry_type">
27009                 <span class="entry_type_name entry_type_name_enum">int32</span>
27010                 <span class="entry_type_container">x</span>
27011
27012                 <span class="entry_type_array">
27013                   n x 4
27014                 </span>
27015               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
27016
27017
27018               <span class="entry_type_hwlevel">[limited] </span>
27019
27020
27021
27022                 <ul class="entry_type_enum">
27023                   <li>
27024                     <span class="entry_type_enum_name">OUTPUT</span>
27025                   </li>
27026                   <li>
27027                     <span class="entry_type_enum_name">INPUT</span>
27028                   </li>
27029                 </ul>
27030
27031             </td> <!-- entry_type -->
27032
27033             <td class="entry_description">
27034               <p>The available depth dataspace stream
27035 configurations that this camera device supports
27036 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
27037             </td>
27038
27039             <td class="entry_units">
27040             </td>
27041
27042             <td class="entry_range">
27043             </td>
27044
27045             <td class="entry_tags">
27046               <ul class="entry_tags">
27047                   <li><a href="#tag_DEPTH">DEPTH</a></li>
27048               </ul>
27049             </td>
27050
27051           </tr>
27052           <tr class="entries_header">
27053             <th class="th_details" colspan="5">Details</th>
27054           </tr>
27055           <tr class="entry_cont">
27056             <td class="entry_details" colspan="5">
27057               <p>These are output stream configurations for use with
27058 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
27059 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
27060 <p>Only devices that support depth output for at least
27061 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
27062 this entry.<wbr/></p>
27063 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
27064 sparse depth point cloud must report a single entry for
27065 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
27066 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
27067 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
27068             </td>
27069           </tr>
27070
27071
27072           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27073            <!-- end of entry -->
27074         
27075                 
27076           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
27077             <td class="entry_name
27078              " rowspan="3">
27079               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
27080             </td>
27081             <td class="entry_type">
27082                 <span class="entry_type_name">int64</span>
27083                 <span class="entry_type_container">x</span>
27084
27085                 <span class="entry_type_array">
27086                   4 x n
27087                 </span>
27088               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27089
27090
27091               <span class="entry_type_hwlevel">[limited] </span>
27092
27093
27094
27095
27096             </td> <!-- entry_type -->
27097
27098             <td class="entry_description">
27099               <p>This lists the minimum frame duration for each
27100 format/<wbr/>size combination for depth output formats.<wbr/></p>
27101             </td>
27102
27103             <td class="entry_units">
27104               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27105             </td>
27106
27107             <td class="entry_range">
27108             </td>
27109
27110             <td class="entry_tags">
27111               <ul class="entry_tags">
27112                   <li><a href="#tag_DEPTH">DEPTH</a></li>
27113               </ul>
27114             </td>
27115
27116           </tr>
27117           <tr class="entries_header">
27118             <th class="th_details" colspan="5">Details</th>
27119           </tr>
27120           <tr class="entry_cont">
27121             <td class="entry_details" colspan="5">
27122               <p>This should correspond to the frame duration when only that
27123 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
27124 set to either OFF or FAST.<wbr/></p>
27125 <p>When multiple streams are used in a request,<wbr/> the minimum frame
27126 duration will be max(individual stream min durations).<wbr/></p>
27127 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
27128 is the same regardless of whether the stream is input or output.<wbr/></p>
27129 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
27130 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
27131 calculating the max frame rate.<wbr/></p>
27132 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
27133             </td>
27134           </tr>
27135
27136
27137           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27138            <!-- end of entry -->
27139         
27140                 
27141           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
27142             <td class="entry_name
27143              " rowspan="3">
27144               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
27145             </td>
27146             <td class="entry_type">
27147                 <span class="entry_type_name">int64</span>
27148                 <span class="entry_type_container">x</span>
27149
27150                 <span class="entry_type_array">
27151                   4 x n
27152                 </span>
27153               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27154
27155
27156               <span class="entry_type_hwlevel">[limited] </span>
27157
27158
27159
27160
27161             </td> <!-- entry_type -->
27162
27163             <td class="entry_description">
27164               <p>This lists the maximum stall duration for each
27165 output format/<wbr/>size combination for depth streams.<wbr/></p>
27166             </td>
27167
27168             <td class="entry_units">
27169               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27170             </td>
27171
27172             <td class="entry_range">
27173             </td>
27174
27175             <td class="entry_tags">
27176               <ul class="entry_tags">
27177                   <li><a href="#tag_DEPTH">DEPTH</a></li>
27178               </ul>
27179             </td>
27180
27181           </tr>
27182           <tr class="entries_header">
27183             <th class="th_details" colspan="5">Details</th>
27184           </tr>
27185           <tr class="entry_cont">
27186             <td class="entry_details" colspan="5">
27187               <p>A stall duration is how much extra time would get added
27188 to the normal minimum frame duration for a repeating request
27189 that has streams with non-zero stall.<wbr/></p>
27190 <p>This functions similarly to
27191 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
27192 streams.<wbr/></p>
27193 <p>All depth output stream formats may have a nonzero stall
27194 duration.<wbr/></p>
27195             </td>
27196           </tr>
27197
27198
27199           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27200            <!-- end of entry -->
27201         
27202                 
27203           <tr class="entry" id="static_android.depth.depthIsExclusive">
27204             <td class="entry_name
27205              " rowspan="3">
27206               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
27207             </td>
27208             <td class="entry_type">
27209                 <span class="entry_type_name entry_type_name_enum">byte</span>
27210
27211               <span class="entry_type_visibility"> [public as boolean]</span>
27212
27213
27214               <span class="entry_type_hwlevel">[limited] </span>
27215
27216
27217
27218                 <ul class="entry_type_enum">
27219                   <li>
27220                     <span class="entry_type_enum_name">FALSE</span>
27221                   </li>
27222                   <li>
27223                     <span class="entry_type_enum_name">TRUE</span>
27224                   </li>
27225                 </ul>
27226
27227             </td> <!-- entry_type -->
27228
27229             <td class="entry_description">
27230               <p>Indicates whether a capture request may target both a
27231 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
27232 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
27233             </td>
27234
27235             <td class="entry_units">
27236             </td>
27237
27238             <td class="entry_range">
27239             </td>
27240
27241             <td class="entry_tags">
27242             </td>
27243
27244           </tr>
27245           <tr class="entries_header">
27246             <th class="th_details" colspan="5">Details</th>
27247           </tr>
27248           <tr class="entry_cont">
27249             <td class="entry_details" colspan="5">
27250               <p>If TRUE,<wbr/> including both depth and color outputs in a single
27251 capture request is not supported.<wbr/> An application must interleave color
27252 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
27253 of output.<wbr/></p>
27254 <p>Typically,<wbr/> this restriction exists on camera devices that
27255 need to emit a specific pattern or wavelength of light to
27256 measure depth values,<wbr/> which causes the color image to be
27257 corrupted during depth measurement.<wbr/></p>
27258             </td>
27259           </tr>
27260
27261
27262           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27263            <!-- end of entry -->
27264         
27265         
27266
27267       <!-- end of kind -->
27268       </tbody>
27269
27270   <!-- end of section -->
27271 <!-- </namespace> -->
27272   </table>
27273
27274   <div class="tags" id="tag_index">
27275     <h2>Tags</h2>
27276     <ul>
27277       <li id="tag_BC">BC - 
27278         Needed for backwards compatibility with old Java API
27279     
27280         <ul class="tags_entries">
27281           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
27282           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
27283           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
27284           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
27285           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
27286           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
27287           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
27288           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
27289           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
27290           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
27291           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
27292           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
27293           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
27294           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
27295           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
27296           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
27297           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
27298           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
27299           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
27300           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
27301           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
27302           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
27303           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
27304           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
27305           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
27306           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
27307           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
27308           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
27309           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
27310           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
27311           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
27312           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
27313           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
27314           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
27315           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
27316           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
27317           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
27318           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
27319           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
27320           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
27321           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
27322           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
27323           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27324           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27325           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
27326           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
27327           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
27328           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
27329           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
27330           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
27331           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
27332           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
27333           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
27334           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
27335           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27336           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27337           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27338           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
27339           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
27340           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
27341           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
27342           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
27343           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
27344           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
27345           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
27346           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
27347           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
27348         </ul>
27349       </li> <!-- tag_BC -->
27350       <li id="tag_V1">V1 - 
27351         New features for first camera 2 release (API1)
27352     
27353         <ul class="tags_entries">
27354           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
27355           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
27356           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27357           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27358           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27359           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27360           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
27361           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
27362           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
27363           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27364           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
27365           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
27366           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
27367           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27368           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
27369           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
27370           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
27371           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
27372           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
27373           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27374           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27375           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
27376           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
27377           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
27378           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
27379           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
27380           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
27381           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27382           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
27383           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
27384           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27385           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
27386           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27387           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
27388           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27389           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27390           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27391           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
27392           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
27393           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27394           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27395           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
27396           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
27397           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
27398           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27399         </ul>
27400       </li> <!-- tag_V1 -->
27401       <li id="tag_RAW">RAW - 
27402         Needed for useful RAW image processing and DNG file support
27403     
27404         <ul class="tags_entries">
27405           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27406           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27407           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
27408           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
27409           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27410           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
27411           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
27412           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
27413           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
27414           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
27415           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
27416           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
27417           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
27418           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
27419           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
27420           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
27421           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
27422           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
27423           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
27424           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
27425           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
27426           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
27427           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
27428           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
27429           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27430           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27431           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27432           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
27433           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27434         </ul>
27435       </li> <!-- tag_RAW -->
27436       <li id="tag_HAL2">HAL2 - 
27437         Entry is only used by camera device HAL 2.x
27438     
27439         <ul class="tags_entries">
27440           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
27441           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
27442           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
27443           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
27444           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
27445         </ul>
27446       </li> <!-- tag_HAL2 -->
27447       <li id="tag_FULL">FULL - 
27448         Entry is required for full hardware level devices, and optional for other hardware levels
27449     
27450         <ul class="tags_entries">
27451           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27452         </ul>
27453       </li> <!-- tag_FULL -->
27454       <li id="tag_DEPTH">DEPTH - 
27455         Entry is required for the depth capability.
27456     
27457         <ul class="tags_entries">
27458           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
27459           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
27460           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
27461           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
27462           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
27463           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
27464           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
27465           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
27466         </ul>
27467       </li> <!-- tag_DEPTH -->
27468       <li id="tag_REPROC">REPROC - 
27469         Entry is required for the YUV or PRIVATE reprocessing capability.
27470     
27471         <ul class="tags_entries">
27472           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27473           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27474           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27475           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27476           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
27477           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
27478           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
27479           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
27480           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27481           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27482         </ul>
27483       </li> <!-- tag_REPROC -->
27484       <li id="tag_FUTURE">FUTURE - 
27485         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
27486         do not implement or use it, it may be revised for future.
27487     
27488         <ul class="tags_entries">
27489           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
27490           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
27491           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
27492           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
27493           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
27494           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
27495           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
27496           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
27497           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
27498           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
27499           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
27500           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
27501           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
27502           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
27503           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
27504           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
27505           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
27506           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
27507           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
27508           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
27509           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
27510         </ul>
27511       </li> <!-- tag_FUTURE -->
27512     </ul>
27513   </div>
27514
27515   [ <a href="#">top</a> ]
27516
27517 </body>
27518 </html>