• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<!-- Copyright (C) 2012 The Android Open Source Project
4
5     Licensed under the Apache License, Version 2.0 (the "License");
6     you may not use this file except in compliance with the License.
7     You may obtain a copy of the License at
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
11     Unless required by applicable law or agreed to in writing, software
12     distributed under the License is distributed on an "AS IS" BASIS,
13     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14     See the License for the specific language governing permissions and
15     limitations under the License.
16-->
17<head>
18  <!-- automatically generated from html.mako. do NOT edit directly -->
19  <meta charset="utf-8" />
20  <title>Android Camera HAL3.4 Properties</title>
21  <style type="text/css">
22     body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23     h1 { color: #333333; }
24     h2 { color: #333333; }
25     a:link { color: #258aaf; text-decoration: none}
26     a:hover { color: #459aaf; text-decoration: underline }
27     a:visited { color: #154a5f; text-decoration: none}
28    .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29    .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30    .entry { background-color: #f0f0f0 }
31    .entry_cont { background-color: #f0f0f0 }
32    .entries_header { background-color: #dddddd; text-align: center}
33
34    /* toc style */
35    .toc_section_header { font-size:1.3em;  }
36    .toc_kind_header { font-size:1.2em;  }
37    .toc_deprecated { text-decoration:line-through; }
38
39    /* table column sizes */
40    table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41    td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42    .th_name { width: 20% }
43    .th_units { width: 10% }
44    .th_tags { width: 5% }
45    .th_details { width: 25% }
46    .th_type { width: 17% }
47    .th_description { width: 20% }
48    .th_range { width: 8% }
49    .th_hal_version { width: 5% }
50    td { font-size: 0.9em; }
51
52    /* hide the first thead, we need it there only to enforce column sizes */
53    .thead_dummy { visibility: hidden; }
54
55    /* Entry flair */
56    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57    .entry_name_deprecated { text-decoration:line-through; }
58
59    /* Entry type flair */
60    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62    .entry_type_visibility { font-weight: bolder; padding-left:1em}
63    .entry_type_synthetic { font-weight: bolder; color: #996600; }
64    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67    .entry_type_enum_notes:before { content:" - " }
68    .entry_type_enum_notes>p:first-child { display:inline; }
69    .entry_type_enum_value:before { content:" = " }
70    .entry_type_enum_value { font-family: monospace; }
71    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73    .entry_range_deprecated { font-weight: bolder; }
74
75    /* Entry tags flair */
76    .entry_tags ul { list-style-type: none; }
77
78    /* Entry details (full docs) flair */
79    .entry_details_header { font-weight: bold; background-color: #dddddd;
80      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
81
82    /* Entry spacer flair */
83    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84
85    /* TODO: generate abbr element for each tag link? */
86    /* TODO for each x.y.z try to link it to the entry */
87
88  </style>
89
90  <style>
91
92    {
93      /* broken...
94         supposedly there is a bug in chrome that it lays out tables before
95         it knows its being printed, so the page-break-* styles are ignored
96         */
97        tr { page-break-after: always; page-break-inside: avoid; }
98    }
99
100  </style>
101</head>
102
103
104
105<body>
106  <h1>Android Camera HAL3.2 Properties</h1>
107
108
109  <h2>Table of Contents</h2>
110  <ul class="toc">
111    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112    <li>
113      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114      <ul class="toc_section">
115        <li>
116          <span class="toc_kind_header">controls</span>
117          <ul class="toc_section">
118            <li
119            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120            <li
121            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122            <li
123            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124            <li
125            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
126          </ul>
127        </li>
128        <li>
129          <span class="toc_kind_header">dynamic</span>
130          <ul class="toc_section">
131            <li
132            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133            <li
134            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135            <li
136            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137            <li
138            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
139          </ul>
140        </li>
141        <li>
142          <span class="toc_kind_header">static</span>
143          <ul class="toc_section">
144            <li
145            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
146          </ul>
147        </li>
148      </ul> <!-- toc_section -->
149    </li>
150    <li>
151      <span class="toc_section_header"><a href="#section_control">control</a></span>
152      <ul class="toc_section">
153        <li>
154          <span class="toc_kind_header">controls</span>
155          <ul class="toc_section">
156            <li
157            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158            <li
159            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160            <li
161            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162            <li
163            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164            <li
165            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166            <li
167            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168            <li
169            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170            <li
171            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172            <li
173            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174            <li
175            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176            <li
177            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178            <li
179            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180            <li
181            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182            <li
183            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184            <li
185            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186            <li
187            ><a href="#controls_android.control.mode">android.control.mode</a></li>
188            <li
189            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190            <li
191            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192            <li
193            ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194            <li
195            ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
196          </ul>
197        </li>
198        <li>
199          <span class="toc_kind_header">static</span>
200          <ul class="toc_section">
201            <li
202            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203            <li
204            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205            <li
206            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207            <li
208            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209            <li
210            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211            <li
212            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213            <li
214            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215            <li
216            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217            <li
218            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219            <li
220            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221            <li
222            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223            <li
224            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225            <li
226            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227            <li
228            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229            <li
230            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231            <li
232            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233            <li
234            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235            <li
236            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237            <li
238            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239            <li
240            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
241          </ul>
242        </li>
243        <li>
244          <span class="toc_kind_header">dynamic</span>
245          <ul class="toc_section">
246            <li
247                class="toc_deprecated"
248            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249            <li
250            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251            <li
252            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253            <li
254            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255            <li
256            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257            <li
258            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259            <li
260            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261            <li
262            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263            <li
264            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265            <li
266            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267            <li
268            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269            <li
270            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271            <li
272            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273            <li
274                class="toc_deprecated"
275            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276            <li
277            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278            <li
279            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280            <li
281            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282            <li
283            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284            <li
285            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286            <li
287            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288            <li
289            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290            <li
291            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292            <li
293            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294            <li
295            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296            <li
297            ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
298            <li
299            ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
300          </ul>
301        </li>
302      </ul> <!-- toc_section -->
303    </li>
304    <li>
305      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306      <ul class="toc_section">
307        <li>
308          <span class="toc_kind_header">controls</span>
309          <ul class="toc_section">
310            <li
311            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
312          </ul>
313        </li>
314      </ul> <!-- toc_section -->
315    </li>
316    <li>
317      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318      <ul class="toc_section">
319        <li>
320          <span class="toc_kind_header">controls</span>
321          <ul class="toc_section">
322            <li
323            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
324            <li
325            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326          </ul>
327        </li>
328        <li>
329          <span class="toc_kind_header">static</span>
330          <ul class="toc_section">
331            <li
332            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333          </ul>
334        </li>
335        <li>
336          <span class="toc_kind_header">dynamic</span>
337          <ul class="toc_section">
338            <li
339            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
340          </ul>
341        </li>
342      </ul> <!-- toc_section -->
343    </li>
344    <li>
345      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346      <ul class="toc_section">
347        <li>
348          <span class="toc_kind_header">controls</span>
349          <ul class="toc_section">
350            <li
351            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
352            <li
353            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
354            <li
355            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356          </ul>
357        </li>
358        <li>
359          <span class="toc_kind_header">static</span>
360          <ul class="toc_section">
361
362            <li
363            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
364            <li
365            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
366
367            <li
368            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
369            <li
370            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371          </ul>
372        </li>
373        <li>
374          <span class="toc_kind_header">dynamic</span>
375          <ul class="toc_section">
376            <li
377            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
378            <li
379            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
380            <li
381            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
382            <li
383            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
384          </ul>
385        </li>
386      </ul> <!-- toc_section -->
387    </li>
388    <li>
389      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390      <ul class="toc_section">
391        <li>
392          <span class="toc_kind_header">controls</span>
393          <ul class="toc_section">
394            <li
395            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396          </ul>
397        </li>
398        <li>
399          <span class="toc_kind_header">static</span>
400          <ul class="toc_section">
401            <li
402            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403          </ul>
404        </li>
405        <li>
406          <span class="toc_kind_header">dynamic</span>
407          <ul class="toc_section">
408            <li
409            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
410          </ul>
411        </li>
412      </ul> <!-- toc_section -->
413    </li>
414    <li>
415      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416      <ul class="toc_section">
417        <li>
418          <span class="toc_kind_header">controls</span>
419          <ul class="toc_section">
420            <li
421            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
422            <li
423            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
424            <li
425            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
426            <li
427            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
428            <li
429            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
430            <li
431            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
432            <li
433            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
434            <li
435            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436          </ul>
437        </li>
438        <li>
439          <span class="toc_kind_header">static</span>
440          <ul class="toc_section">
441            <li
442            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
443            <li
444            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445          </ul>
446        </li>
447        <li>
448          <span class="toc_kind_header">dynamic</span>
449          <ul class="toc_section">
450            <li
451            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
452            <li
453            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
454            <li
455            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
456            <li
457            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
458            <li
459            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
460            <li
461            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
462            <li
463            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
464            <li
465            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
466            <li
467            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
468          </ul>
469        </li>
470      </ul> <!-- toc_section -->
471    </li>
472    <li>
473      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474      <ul class="toc_section">
475        <li>
476          <span class="toc_kind_header">controls</span>
477          <ul class="toc_section">
478            <li
479            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
480            <li
481            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
482            <li
483            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
484            <li
485            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
486            <li
487            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488          </ul>
489        </li>
490        <li>
491          <span class="toc_kind_header">static</span>
492          <ul class="toc_section">
493
494            <li
495            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
496            <li
497            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
498            <li
499            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
500            <li
501            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
502            <li
503            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
504            <li
505            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
506            <li
507            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
508            <li
509            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
510
511            <li
512            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
513            <li
514            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
515            <li
516            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
517            <li
518            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
519            <li
520                class="toc_deprecated"
521            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
522            <li
523            ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
524            <li
525            ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
526          </ul>
527        </li>
528        <li>
529          <span class="toc_kind_header">dynamic</span>
530          <ul class="toc_section">
531            <li
532            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
533            <li
534            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
535            <li
536            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
537            <li
538            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
539            <li
540            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
541            <li
542            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
543            <li
544            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
545            <li
546            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
547            <li
548            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
549            <li
550            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
551            <li
552                class="toc_deprecated"
553            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
554            <li
555            ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
556          </ul>
557        </li>
558      </ul> <!-- toc_section -->
559    </li>
560    <li>
561      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
562      <ul class="toc_section">
563        <li>
564          <span class="toc_kind_header">controls</span>
565          <ul class="toc_section">
566            <li
567            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
568            <li
569            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
570          </ul>
571        </li>
572        <li>
573          <span class="toc_kind_header">static</span>
574          <ul class="toc_section">
575            <li
576            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
577          </ul>
578        </li>
579        <li>
580          <span class="toc_kind_header">dynamic</span>
581          <ul class="toc_section">
582            <li
583            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
584          </ul>
585        </li>
586      </ul> <!-- toc_section -->
587    </li>
588    <li>
589      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
590      <ul class="toc_section">
591        <li>
592          <span class="toc_kind_header">static</span>
593          <ul class="toc_section">
594            <li
595                class="toc_deprecated"
596            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
597            <li
598                class="toc_deprecated"
599            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
600            <li
601                class="toc_deprecated"
602            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
603            <li
604                class="toc_deprecated"
605            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
606          </ul>
607        </li>
608        <li>
609          <span class="toc_kind_header">dynamic</span>
610          <ul class="toc_section">
611            <li
612                class="toc_deprecated"
613            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
614          </ul>
615        </li>
616      </ul> <!-- toc_section -->
617    </li>
618    <li>
619      <span class="toc_section_header"><a href="#section_request">request</a></span>
620      <ul class="toc_section">
621        <li>
622          <span class="toc_kind_header">controls</span>
623          <ul class="toc_section">
624            <li
625                class="toc_deprecated"
626            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
627            <li
628            ><a href="#controls_android.request.id">android.request.id</a></li>
629            <li
630                class="toc_deprecated"
631            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
632            <li
633            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
634            <li
635                class="toc_deprecated"
636            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
637            <li
638                class="toc_deprecated"
639            ><a href="#controls_android.request.type">android.request.type</a></li>
640          </ul>
641        </li>
642        <li>
643          <span class="toc_kind_header">static</span>
644          <ul class="toc_section">
645            <li
646            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
647            <li
648            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
649            <li
650            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
651            <li
652            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
653            <li
654                class="toc_deprecated"
655            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
656            <li
657            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
658            <li
659            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
660            <li
661            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
662            <li
663            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
664            <li
665            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
666            <li
667            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
668            <li
669            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
670            <li
671            ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
672            <li
673            ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
674          </ul>
675        </li>
676        <li>
677          <span class="toc_kind_header">dynamic</span>
678          <ul class="toc_section">
679            <li
680                class="toc_deprecated"
681            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
682            <li
683            ><a href="#dynamic_android.request.id">android.request.id</a></li>
684            <li
685            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
686            <li
687                class="toc_deprecated"
688            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
689            <li
690            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
691          </ul>
692        </li>
693      </ul> <!-- toc_section -->
694    </li>
695    <li>
696      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
697      <ul class="toc_section">
698        <li>
699          <span class="toc_kind_header">controls</span>
700          <ul class="toc_section">
701            <li
702            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
703          </ul>
704        </li>
705        <li>
706          <span class="toc_kind_header">static</span>
707          <ul class="toc_section">
708            <li
709                class="toc_deprecated"
710            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
711            <li
712                class="toc_deprecated"
713            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
714            <li
715                class="toc_deprecated"
716            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
717            <li
718            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
719            <li
720                class="toc_deprecated"
721            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
722            <li
723                class="toc_deprecated"
724            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
725            <li
726                class="toc_deprecated"
727            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
728            <li
729                class="toc_deprecated"
730            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
731            <li
732            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
733            <li
734            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
735            <li
736            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
737            <li
738            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
739            <li
740            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
741            <li
742            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
743          </ul>
744        </li>
745        <li>
746          <span class="toc_kind_header">dynamic</span>
747          <ul class="toc_section">
748            <li
749            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
750          </ul>
751        </li>
752      </ul> <!-- toc_section -->
753    </li>
754    <li>
755      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
756      <ul class="toc_section">
757        <li>
758          <span class="toc_kind_header">controls</span>
759          <ul class="toc_section">
760            <li
761            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
762            <li
763            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
764            <li
765            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
766            <li
767            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
768            <li
769            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
770          </ul>
771        </li>
772        <li>
773          <span class="toc_kind_header">static</span>
774          <ul class="toc_section">
775
776            <li
777            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
778            <li
779            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
780            <li
781            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
782            <li
783            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
784            <li
785            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
786            <li
787            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
788            <li
789            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
790            <li
791            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
792            <li
793            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
794            <li
795            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
796            <li
797            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
798
799            <li
800            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
801            <li
802            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
803            <li
804            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
805            <li
806            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
807            <li
808            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
809            <li
810            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
811            <li
812            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
813            <li
814            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
815            <li
816            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
817            <li
818            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
819            <li
820            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
821            <li
822            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
823            <li
824            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
825            <li
826            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
827            <li
828            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
829            <li
830            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
831          </ul>
832        </li>
833        <li>
834          <span class="toc_kind_header">dynamic</span>
835          <ul class="toc_section">
836            <li
837            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
838            <li
839            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
840            <li
841            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
842            <li
843            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
844            <li
845            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
846            <li
847            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
848            <li
849            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
850            <li
851            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
852            <li
853            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
854            <li
855            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
856            <li
857            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
858            <li
859            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
860            <li
861            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
862            <li
863            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
864            <li
865            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
866          </ul>
867        </li>
868      </ul> <!-- toc_section -->
869    </li>
870    <li>
871      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
872      <ul class="toc_section">
873        <li>
874          <span class="toc_kind_header">controls</span>
875          <ul class="toc_section">
876            <li
877            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
878            <li
879            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
880          </ul>
881        </li>
882        <li>
883          <span class="toc_kind_header">dynamic</span>
884          <ul class="toc_section">
885            <li
886            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
887          </ul>
888        </li>
889        <li>
890          <span class="toc_kind_header">static</span>
891          <ul class="toc_section">
892            <li
893            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
894          </ul>
895        </li>
896      </ul> <!-- toc_section -->
897    </li>
898    <li>
899      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
900      <ul class="toc_section">
901        <li>
902          <span class="toc_kind_header">controls</span>
903          <ul class="toc_section">
904            <li
905            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
906            <li
907            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
908            <li
909            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
910            <li
911            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
912            <li
913            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
914            <li
915            ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
916          </ul>
917        </li>
918        <li>
919          <span class="toc_kind_header">static</span>
920          <ul class="toc_section">
921
922            <li
923            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
924            <li
925            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
926            <li
927            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
928            <li
929            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
930            <li
931            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
932            <li
933            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
934            <li
935            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
936            <li
937            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
938            <li
939            ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
940
941          </ul>
942        </li>
943        <li>
944          <span class="toc_kind_header">dynamic</span>
945          <ul class="toc_section">
946            <li
947            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
948            <li
949            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
950            <li
951            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
952            <li
953            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
954            <li
955            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
956            <li
957            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
958            <li
959            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
960            <li
961            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
962            <li
963            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
964            <li
965            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
966            <li
967            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
968            <li
969            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
970            <li
971                class="toc_deprecated"
972            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
973            <li
974                class="toc_deprecated"
975            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
976            <li
977            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
978            <li
979            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
980            <li
981            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
982            <li
983            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
984            <li
985            ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
986            <li
987            ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
988            <li
989            ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
990            <li
991            ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
992            <li
993            ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
994          </ul>
995        </li>
996      </ul> <!-- toc_section -->
997    </li>
998    <li>
999      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1000      <ul class="toc_section">
1001        <li>
1002          <span class="toc_kind_header">controls</span>
1003          <ul class="toc_section">
1004            <li
1005            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1006            <li
1007            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1008            <li
1009            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1010            <li
1011            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1012            <li
1013            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1014            <li
1015            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1016            <li
1017            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1018          </ul>
1019        </li>
1020        <li>
1021          <span class="toc_kind_header">static</span>
1022          <ul class="toc_section">
1023            <li
1024            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1025            <li
1026            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1027          </ul>
1028        </li>
1029        <li>
1030          <span class="toc_kind_header">dynamic</span>
1031          <ul class="toc_section">
1032            <li
1033            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1034            <li
1035            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1036            <li
1037            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1038            <li
1039            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1040            <li
1041            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1042            <li
1043            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1044            <li
1045            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1046          </ul>
1047        </li>
1048      </ul> <!-- toc_section -->
1049    </li>
1050    <li>
1051      <span class="toc_section_header"><a href="#section_led">led</a></span>
1052      <ul class="toc_section">
1053        <li>
1054          <span class="toc_kind_header">controls</span>
1055          <ul class="toc_section">
1056            <li
1057            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1058          </ul>
1059        </li>
1060        <li>
1061          <span class="toc_kind_header">dynamic</span>
1062          <ul class="toc_section">
1063            <li
1064            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1065          </ul>
1066        </li>
1067        <li>
1068          <span class="toc_kind_header">static</span>
1069          <ul class="toc_section">
1070            <li
1071            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1072          </ul>
1073        </li>
1074      </ul> <!-- toc_section -->
1075    </li>
1076    <li>
1077      <span class="toc_section_header"><a href="#section_info">info</a></span>
1078      <ul class="toc_section">
1079        <li>
1080          <span class="toc_kind_header">static</span>
1081          <ul class="toc_section">
1082            <li
1083            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1084            <li
1085            ><a href="#static_android.info.version">android.info.version</a></li>
1086          </ul>
1087        </li>
1088      </ul> <!-- toc_section -->
1089    </li>
1090    <li>
1091      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1092      <ul class="toc_section">
1093        <li>
1094          <span class="toc_kind_header">controls</span>
1095          <ul class="toc_section">
1096            <li
1097            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1098          </ul>
1099        </li>
1100        <li>
1101          <span class="toc_kind_header">dynamic</span>
1102          <ul class="toc_section">
1103            <li
1104            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1105          </ul>
1106        </li>
1107      </ul> <!-- toc_section -->
1108    </li>
1109    <li>
1110      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1111      <ul class="toc_section">
1112        <li>
1113          <span class="toc_kind_header">dynamic</span>
1114          <ul class="toc_section">
1115            <li
1116            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1117          </ul>
1118        </li>
1119        <li>
1120          <span class="toc_kind_header">static</span>
1121          <ul class="toc_section">
1122            <li
1123            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1124          </ul>
1125        </li>
1126      </ul> <!-- toc_section -->
1127    </li>
1128    <li>
1129      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1130      <ul class="toc_section">
1131        <li>
1132          <span class="toc_kind_header">controls</span>
1133          <ul class="toc_section">
1134            <li
1135            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1136          </ul>
1137        </li>
1138        <li>
1139          <span class="toc_kind_header">dynamic</span>
1140          <ul class="toc_section">
1141            <li
1142            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1143          </ul>
1144        </li>
1145        <li>
1146          <span class="toc_kind_header">static</span>
1147          <ul class="toc_section">
1148            <li
1149            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1150          </ul>
1151        </li>
1152      </ul> <!-- toc_section -->
1153    </li>
1154    <li>
1155      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1156      <ul class="toc_section">
1157        <li>
1158          <span class="toc_kind_header">static</span>
1159          <ul class="toc_section">
1160            <li
1161            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1162            <li
1163            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1164            <li
1165            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1166            <li
1167            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1168            <li
1169            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1170          </ul>
1171        </li>
1172      </ul> <!-- toc_section -->
1173    </li>
1174    <li>
1175      <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1176      <ul class="toc_section">
1177        <li>
1178          <span class="toc_kind_header">static</span>
1179          <ul class="toc_section">
1180            <li
1181            ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1182            <li
1183            ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1184          </ul>
1185        </li>
1186      </ul> <!-- toc_section -->
1187    </li>
1188    <li>
1189      <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1190      <ul class="toc_section">
1191        <li>
1192          <span class="toc_kind_header">controls</span>
1193          <ul class="toc_section">
1194            <li
1195            ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1196          </ul>
1197        </li>
1198        <li>
1199          <span class="toc_kind_header">static</span>
1200          <ul class="toc_section">
1201            <li
1202            ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1203          </ul>
1204        </li>
1205        <li>
1206          <span class="toc_kind_header">dynamic</span>
1207          <ul class="toc_section">
1208            <li
1209            ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1210          </ul>
1211        </li>
1212      </ul> <!-- toc_section -->
1213    </li>
1214  </ul>
1215
1216
1217  <h1>Properties</h1>
1218  <table class="properties">
1219
1220    <thead class="thead_dummy">
1221      <tr>
1222        <th class="th_name">Property Name</th>
1223        <th class="th_type">Type</th>
1224        <th class="th_description">Description</th>
1225        <th class="th_units">Units</th>
1226        <th class="th_range">Range</th>
1227        <th class="th_hal_version">HIDL HAL version</th>
1228        <th class="th_tags">Tags</th>
1229      </tr>
1230    </thead> <!-- so that the first occurrence of thead is not
1231                         above the first occurrence of tr -->
1232<!-- <namespace name="android"> -->
1233  <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1234
1235
1236      <tr><td colspan="7" class="kind">controls</td></tr>
1237
1238      <thead class="entries_header">
1239        <tr>
1240          <th class="th_name">Property Name</th>
1241          <th class="th_type">Type</th>
1242          <th class="th_description">Description</th>
1243          <th class="th_units">Units</th>
1244          <th class="th_range">Range</th>
1245          <th class="th_hal_version">Initial HIDL HAL version</th>
1246          <th class="th_tags">Tags</th>
1247        </tr>
1248      </thead>
1249
1250      <tbody>
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261          <tr class="entry" id="controls_android.colorCorrection.mode">
1262            <td class="entry_name
1263             " rowspan="5">
1264              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1265            </td>
1266            <td class="entry_type">
1267                <span class="entry_type_name entry_type_name_enum">byte</span>
1268
1269              <span class="entry_type_visibility"> [public]</span>
1270
1271
1272              <span class="entry_type_hwlevel">[full] </span>
1273
1274
1275
1276                <ul class="entry_type_enum">
1277                  <li>
1278                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1279                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1280and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1281<p>All advanced white balance adjustments (not specified
1282by our white balance pipeline) must be disabled.<wbr/></p>
1283<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1284TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1285this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1286                  </li>
1287                  <li>
1288                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1289                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1290capture rate relative to sensor raw output.<wbr/></p>
1291<p>Advanced white balance adjustments above and beyond
1292the specified white balance pipeline may be applied.<wbr/></p>
1293<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1294the camera device uses the last frame's AWB values
1295(or defaults if AWB has never been run).<wbr/></p></span>
1296                  </li>
1297                  <li>
1298                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1299                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1300quality but the capture rate might be reduced (relative to sensor
1301raw output rate)</p>
1302<p>Advanced white balance adjustments above and beyond
1303the specified white balance pipeline may be applied.<wbr/></p>
1304<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1305the camera device uses the last frame's AWB values
1306(or defaults if AWB has never been run).<wbr/></p></span>
1307                  </li>
1308                </ul>
1309
1310            </td> <!-- entry_type -->
1311
1312            <td class="entry_description">
1313              <p>The mode control selects how the image data is converted from the
1314sensor's native color into linear sRGB color.<wbr/></p>
1315            </td>
1316
1317            <td class="entry_units">
1318            </td>
1319
1320            <td class="entry_range">
1321            </td>
1322
1323            <td class="entry_hal_version">
1324              <p>3.<wbr/>2</p>
1325            </td>
1326
1327            <td class="entry_tags">
1328            </td>
1329
1330          </tr>
1331          <tr class="entries_header">
1332            <th class="th_details" colspan="6">Details</th>
1333          </tr>
1334          <tr class="entry_cont">
1335            <td class="entry_details" colspan="6">
1336              <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1337control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1338application controls how the color mapping is performed.<wbr/></p>
1339<p>We define the expected processing pipeline below.<wbr/> For consistency
1340across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1341<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1342do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1343<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1344camera device (in the results) and be roughly correct.<wbr/></p>
1345<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1346FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1347as what was produced by the camera device in the earlier frame.<wbr/></p>
1348<p>The expected processing pipeline is as follows:</p>
1349<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1350<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1351gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1352matrix (applied after demosaic).<wbr/></p>
1353<p>The 4-channel white-balance gains are defined as:</p>
1354<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1355</code></pre>
1356<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1357output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1358These may be identical for a given camera device implementation; if
1359the camera device does not support a separate gain for even/<wbr/>odd green
1360channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1361<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1362<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1363<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1364</code></pre>
1365<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1366to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1367<p>with colors as follows:</p>
1368<pre><code>r' = I0r + I1g + I2b
1369g' = I3r + I4g + I5b
1370b' = I6r + I7g + I8b
1371</code></pre>
1372<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1373values are clipped to fit within the range.<wbr/></p>
1374            </td>
1375          </tr>
1376
1377          <tr class="entries_header">
1378            <th class="th_details" colspan="6">HAL Implementation Details</th>
1379          </tr>
1380          <tr class="entry_cont">
1381            <td class="entry_details" colspan="6">
1382              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1383on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1384That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1385capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1386            </td>
1387          </tr>
1388
1389          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1390           <!-- end of entry -->
1391
1392
1393          <tr class="entry" id="controls_android.colorCorrection.transform">
1394            <td class="entry_name
1395             " rowspan="3">
1396              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1397            </td>
1398            <td class="entry_type">
1399                <span class="entry_type_name">rational</span>
1400                <span class="entry_type_container">x</span>
1401
1402                <span class="entry_type_array">
1403                  3 x 3
1404                </span>
1405              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1406
1407
1408              <span class="entry_type_hwlevel">[full] </span>
1409
1410
1411                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1412
1413
1414            </td> <!-- entry_type -->
1415
1416            <td class="entry_description">
1417              <p>A color transform matrix to use to transform
1418from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1419            </td>
1420
1421            <td class="entry_units">
1422              Unitless scale factors
1423            </td>
1424
1425            <td class="entry_range">
1426            </td>
1427
1428            <td class="entry_hal_version">
1429              <p>3.<wbr/>2</p>
1430            </td>
1431
1432            <td class="entry_tags">
1433            </td>
1434
1435          </tr>
1436          <tr class="entries_header">
1437            <th class="th_details" colspan="6">Details</th>
1438          </tr>
1439          <tr class="entry_cont">
1440            <td class="entry_details" colspan="6">
1441              <p>This matrix is either set by the camera device when the request
1442<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1443directly by the application in the request when the
1444<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1445<p>In the latter case,<wbr/> the camera device may round the matrix to account
1446for precision issues; the final rounded matrix should be reported back
1447in this matrix result metadata.<wbr/> The transform should keep the magnitude
1448of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1449values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1450<p>The valid range of each matrix element varies on different devices,<wbr/> but
1451values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1452            </td>
1453          </tr>
1454
1455
1456          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1457           <!-- end of entry -->
1458
1459
1460          <tr class="entry" id="controls_android.colorCorrection.gains">
1461            <td class="entry_name
1462             " rowspan="5">
1463              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1464            </td>
1465            <td class="entry_type">
1466                <span class="entry_type_name">float</span>
1467                <span class="entry_type_container">x</span>
1468
1469                <span class="entry_type_array">
1470                  4
1471                </span>
1472              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1473
1474
1475              <span class="entry_type_hwlevel">[full] </span>
1476
1477
1478                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1479
1480
1481            </td> <!-- entry_type -->
1482
1483            <td class="entry_description">
1484              <p>Gains applying to Bayer raw color channels for
1485white-balance.<wbr/></p>
1486            </td>
1487
1488            <td class="entry_units">
1489              Unitless gain factors
1490            </td>
1491
1492            <td class="entry_range">
1493            </td>
1494
1495            <td class="entry_hal_version">
1496              <p>3.<wbr/>2</p>
1497            </td>
1498
1499            <td class="entry_tags">
1500            </td>
1501
1502          </tr>
1503          <tr class="entries_header">
1504            <th class="th_details" colspan="6">Details</th>
1505          </tr>
1506          <tr class="entry_cont">
1507            <td class="entry_details" colspan="6">
1508              <p>These per-channel gains are either set by the camera device
1509when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1510TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1511request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1512TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1513<p>The gains in the result metadata are the gains actually
1514applied by the camera device to the current frame.<wbr/></p>
1515<p>The valid range of gains varies on different devices,<wbr/> but gains
1516between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1517device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1518this can create color artifacts.<wbr/></p>
1519            </td>
1520          </tr>
1521
1522          <tr class="entries_header">
1523            <th class="th_details" colspan="6">HAL Implementation Details</th>
1524          </tr>
1525          <tr class="entry_cont">
1526            <td class="entry_details" colspan="6">
1527              <p>The 4-channel white-balance gains are defined in
1528the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1529for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1530is the gain for green pixels on the odd rows.<wbr/></p>
1531<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1532channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1533<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1534            </td>
1535          </tr>
1536
1537          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1538           <!-- end of entry -->
1539
1540
1541          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1542            <td class="entry_name
1543             " rowspan="3">
1544              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1545            </td>
1546            <td class="entry_type">
1547                <span class="entry_type_name entry_type_name_enum">byte</span>
1548
1549              <span class="entry_type_visibility"> [public]</span>
1550
1551
1552              <span class="entry_type_hwlevel">[legacy] </span>
1553
1554
1555
1556                <ul class="entry_type_enum">
1557                  <li>
1558                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1559                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1560                  </li>
1561                  <li>
1562                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1563                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1564relative to sensor raw output.<wbr/></p></span>
1565                  </li>
1566                  <li>
1567                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1568                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1569reduced (relative to sensor raw output rate)</p></span>
1570                  </li>
1571                </ul>
1572
1573            </td> <!-- entry_type -->
1574
1575            <td class="entry_description">
1576              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1577            </td>
1578
1579            <td class="entry_units">
1580            </td>
1581
1582            <td class="entry_range">
1583              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1584            </td>
1585
1586            <td class="entry_hal_version">
1587              <p>3.<wbr/>2</p>
1588            </td>
1589
1590            <td class="entry_tags">
1591            </td>
1592
1593          </tr>
1594          <tr class="entries_header">
1595            <th class="th_details" colspan="6">Details</th>
1596          </tr>
1597          <tr class="entry_cont">
1598            <td class="entry_details" colspan="6">
1599              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1600can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1601the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1602minimize the chromatic artifacts that may occur along the object boundaries in an
1603image.<wbr/></p>
1604<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1605correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1606use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1607capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1608applying aberration correction.<wbr/></p>
1609<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1610            </td>
1611          </tr>
1612
1613
1614          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1615           <!-- end of entry -->
1616
1617
1618
1619      <!-- end of kind -->
1620      </tbody>
1621      <tr><td colspan="7" class="kind">dynamic</td></tr>
1622
1623      <thead class="entries_header">
1624        <tr>
1625          <th class="th_name">Property Name</th>
1626          <th class="th_type">Type</th>
1627          <th class="th_description">Description</th>
1628          <th class="th_units">Units</th>
1629          <th class="th_range">Range</th>
1630          <th class="th_hal_version">Initial HIDL HAL version</th>
1631          <th class="th_tags">Tags</th>
1632        </tr>
1633      </thead>
1634
1635      <tbody>
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1647            <td class="entry_name
1648             " rowspan="5">
1649              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1650            </td>
1651            <td class="entry_type">
1652                <span class="entry_type_name entry_type_name_enum">byte</span>
1653
1654              <span class="entry_type_visibility"> [public]</span>
1655
1656
1657              <span class="entry_type_hwlevel">[full] </span>
1658
1659
1660
1661                <ul class="entry_type_enum">
1662                  <li>
1663                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1664                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1665and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1666<p>All advanced white balance adjustments (not specified
1667by our white balance pipeline) must be disabled.<wbr/></p>
1668<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1669TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1670this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1671                  </li>
1672                  <li>
1673                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1674                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1675capture rate relative to sensor raw output.<wbr/></p>
1676<p>Advanced white balance adjustments above and beyond
1677the specified white balance pipeline may be applied.<wbr/></p>
1678<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1679the camera device uses the last frame's AWB values
1680(or defaults if AWB has never been run).<wbr/></p></span>
1681                  </li>
1682                  <li>
1683                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1684                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1685quality but the capture rate might be reduced (relative to sensor
1686raw output rate)</p>
1687<p>Advanced white balance adjustments above and beyond
1688the specified white balance pipeline may be applied.<wbr/></p>
1689<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1690the camera device uses the last frame's AWB values
1691(or defaults if AWB has never been run).<wbr/></p></span>
1692                  </li>
1693                </ul>
1694
1695            </td> <!-- entry_type -->
1696
1697            <td class="entry_description">
1698              <p>The mode control selects how the image data is converted from the
1699sensor's native color into linear sRGB color.<wbr/></p>
1700            </td>
1701
1702            <td class="entry_units">
1703            </td>
1704
1705            <td class="entry_range">
1706            </td>
1707
1708            <td class="entry_hal_version">
1709              <p>3.<wbr/>2</p>
1710            </td>
1711
1712            <td class="entry_tags">
1713            </td>
1714
1715          </tr>
1716          <tr class="entries_header">
1717            <th class="th_details" colspan="6">Details</th>
1718          </tr>
1719          <tr class="entry_cont">
1720            <td class="entry_details" colspan="6">
1721              <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1722control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1723application controls how the color mapping is performed.<wbr/></p>
1724<p>We define the expected processing pipeline below.<wbr/> For consistency
1725across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1726<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1727do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1728<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1729camera device (in the results) and be roughly correct.<wbr/></p>
1730<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1731FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1732as what was produced by the camera device in the earlier frame.<wbr/></p>
1733<p>The expected processing pipeline is as follows:</p>
1734<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1735<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1736gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1737matrix (applied after demosaic).<wbr/></p>
1738<p>The 4-channel white-balance gains are defined as:</p>
1739<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1740</code></pre>
1741<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1742output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1743These may be identical for a given camera device implementation; if
1744the camera device does not support a separate gain for even/<wbr/>odd green
1745channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1746<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1747<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1748<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1749</code></pre>
1750<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1751to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1752<p>with colors as follows:</p>
1753<pre><code>r' = I0r + I1g + I2b
1754g' = I3r + I4g + I5b
1755b' = I6r + I7g + I8b
1756</code></pre>
1757<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1758values are clipped to fit within the range.<wbr/></p>
1759            </td>
1760          </tr>
1761
1762          <tr class="entries_header">
1763            <th class="th_details" colspan="6">HAL Implementation Details</th>
1764          </tr>
1765          <tr class="entry_cont">
1766            <td class="entry_details" colspan="6">
1767              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1768on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1769That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1770capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1771            </td>
1772          </tr>
1773
1774          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1775           <!-- end of entry -->
1776
1777
1778          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1779            <td class="entry_name
1780             " rowspan="3">
1781              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1782            </td>
1783            <td class="entry_type">
1784                <span class="entry_type_name">rational</span>
1785                <span class="entry_type_container">x</span>
1786
1787                <span class="entry_type_array">
1788                  3 x 3
1789                </span>
1790              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1791
1792
1793              <span class="entry_type_hwlevel">[full] </span>
1794
1795
1796                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1797
1798
1799            </td> <!-- entry_type -->
1800
1801            <td class="entry_description">
1802              <p>A color transform matrix to use to transform
1803from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1804            </td>
1805
1806            <td class="entry_units">
1807              Unitless scale factors
1808            </td>
1809
1810            <td class="entry_range">
1811            </td>
1812
1813            <td class="entry_hal_version">
1814              <p>3.<wbr/>2</p>
1815            </td>
1816
1817            <td class="entry_tags">
1818            </td>
1819
1820          </tr>
1821          <tr class="entries_header">
1822            <th class="th_details" colspan="6">Details</th>
1823          </tr>
1824          <tr class="entry_cont">
1825            <td class="entry_details" colspan="6">
1826              <p>This matrix is either set by the camera device when the request
1827<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1828directly by the application in the request when the
1829<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1830<p>In the latter case,<wbr/> the camera device may round the matrix to account
1831for precision issues; the final rounded matrix should be reported back
1832in this matrix result metadata.<wbr/> The transform should keep the magnitude
1833of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1834values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1835<p>The valid range of each matrix element varies on different devices,<wbr/> but
1836values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1837            </td>
1838          </tr>
1839
1840
1841          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1842           <!-- end of entry -->
1843
1844
1845          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1846            <td class="entry_name
1847             " rowspan="5">
1848              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1849            </td>
1850            <td class="entry_type">
1851                <span class="entry_type_name">float</span>
1852                <span class="entry_type_container">x</span>
1853
1854                <span class="entry_type_array">
1855                  4
1856                </span>
1857              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1858
1859
1860              <span class="entry_type_hwlevel">[full] </span>
1861
1862
1863                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1864
1865
1866            </td> <!-- entry_type -->
1867
1868            <td class="entry_description">
1869              <p>Gains applying to Bayer raw color channels for
1870white-balance.<wbr/></p>
1871            </td>
1872
1873            <td class="entry_units">
1874              Unitless gain factors
1875            </td>
1876
1877            <td class="entry_range">
1878            </td>
1879
1880            <td class="entry_hal_version">
1881              <p>3.<wbr/>2</p>
1882            </td>
1883
1884            <td class="entry_tags">
1885            </td>
1886
1887          </tr>
1888          <tr class="entries_header">
1889            <th class="th_details" colspan="6">Details</th>
1890          </tr>
1891          <tr class="entry_cont">
1892            <td class="entry_details" colspan="6">
1893              <p>These per-channel gains are either set by the camera device
1894when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1895TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1896request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1897TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1898<p>The gains in the result metadata are the gains actually
1899applied by the camera device to the current frame.<wbr/></p>
1900<p>The valid range of gains varies on different devices,<wbr/> but gains
1901between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1902device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1903this can create color artifacts.<wbr/></p>
1904            </td>
1905          </tr>
1906
1907          <tr class="entries_header">
1908            <th class="th_details" colspan="6">HAL Implementation Details</th>
1909          </tr>
1910          <tr class="entry_cont">
1911            <td class="entry_details" colspan="6">
1912              <p>The 4-channel white-balance gains are defined in
1913the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1914for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1915is the gain for green pixels on the odd rows.<wbr/></p>
1916<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1917channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1918<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1919            </td>
1920          </tr>
1921
1922          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1923           <!-- end of entry -->
1924
1925
1926          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1927            <td class="entry_name
1928             " rowspan="3">
1929              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1930            </td>
1931            <td class="entry_type">
1932                <span class="entry_type_name entry_type_name_enum">byte</span>
1933
1934              <span class="entry_type_visibility"> [public]</span>
1935
1936
1937              <span class="entry_type_hwlevel">[legacy] </span>
1938
1939
1940
1941                <ul class="entry_type_enum">
1942                  <li>
1943                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1944                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1945                  </li>
1946                  <li>
1947                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1948                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1949relative to sensor raw output.<wbr/></p></span>
1950                  </li>
1951                  <li>
1952                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1953                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1954reduced (relative to sensor raw output rate)</p></span>
1955                  </li>
1956                </ul>
1957
1958            </td> <!-- entry_type -->
1959
1960            <td class="entry_description">
1961              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1962            </td>
1963
1964            <td class="entry_units">
1965            </td>
1966
1967            <td class="entry_range">
1968              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1969            </td>
1970
1971            <td class="entry_hal_version">
1972              <p>3.<wbr/>2</p>
1973            </td>
1974
1975            <td class="entry_tags">
1976            </td>
1977
1978          </tr>
1979          <tr class="entries_header">
1980            <th class="th_details" colspan="6">Details</th>
1981          </tr>
1982          <tr class="entry_cont">
1983            <td class="entry_details" colspan="6">
1984              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1985can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1986the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1987minimize the chromatic artifacts that may occur along the object boundaries in an
1988image.<wbr/></p>
1989<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1990correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1991use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1992capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1993applying aberration correction.<wbr/></p>
1994<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1995            </td>
1996          </tr>
1997
1998
1999          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2000           <!-- end of entry -->
2001
2002
2003
2004      <!-- end of kind -->
2005      </tbody>
2006      <tr><td colspan="7" class="kind">static</td></tr>
2007
2008      <thead class="entries_header">
2009        <tr>
2010          <th class="th_name">Property Name</th>
2011          <th class="th_type">Type</th>
2012          <th class="th_description">Description</th>
2013          <th class="th_units">Units</th>
2014          <th class="th_range">Range</th>
2015          <th class="th_hal_version">Initial HIDL HAL version</th>
2016          <th class="th_tags">Tags</th>
2017        </tr>
2018      </thead>
2019
2020      <tbody>
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2032            <td class="entry_name
2033             " rowspan="5">
2034              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2035            </td>
2036            <td class="entry_type">
2037                <span class="entry_type_name">byte</span>
2038                <span class="entry_type_container">x</span>
2039
2040                <span class="entry_type_array">
2041                  n
2042                </span>
2043              <span class="entry_type_visibility"> [public as enumList]</span>
2044
2045
2046              <span class="entry_type_hwlevel">[legacy] </span>
2047
2048
2049                <div class="entry_type_notes">list of enums</div>
2050
2051
2052            </td> <!-- entry_type -->
2053
2054            <td class="entry_description">
2055              <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
2056supported by this camera device.<wbr/></p>
2057            </td>
2058
2059            <td class="entry_units">
2060            </td>
2061
2062            <td class="entry_range">
2063              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2064            </td>
2065
2066            <td class="entry_hal_version">
2067              <p>3.<wbr/>2</p>
2068            </td>
2069
2070            <td class="entry_tags">
2071              <ul class="entry_tags">
2072                  <li><a href="#tag_V1">V1</a></li>
2073              </ul>
2074            </td>
2075
2076          </tr>
2077          <tr class="entries_header">
2078            <th class="th_details" colspan="6">Details</th>
2079          </tr>
2080          <tr class="entry_cont">
2081            <td class="entry_details" colspan="6">
2082              <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/>  If no
2083aberration correction modes are available for a device,<wbr/> this list will solely include
2084OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2085<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2086OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2087<p>LEGACY devices will always only support FAST mode.<wbr/></p>
2088            </td>
2089          </tr>
2090
2091          <tr class="entries_header">
2092            <th class="th_details" colspan="6">HAL Implementation Details</th>
2093          </tr>
2094          <tr class="entry_cont">
2095            <td class="entry_details" colspan="6">
2096              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2097on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2098That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2099capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2100            </td>
2101          </tr>
2102
2103          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2104           <!-- end of entry -->
2105
2106
2107
2108      <!-- end of kind -->
2109      </tbody>
2110
2111  <!-- end of section -->
2112  <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2113
2114
2115      <tr><td colspan="7" class="kind">controls</td></tr>
2116
2117      <thead class="entries_header">
2118        <tr>
2119          <th class="th_name">Property Name</th>
2120          <th class="th_type">Type</th>
2121          <th class="th_description">Description</th>
2122          <th class="th_units">Units</th>
2123          <th class="th_range">Range</th>
2124          <th class="th_hal_version">Initial HIDL HAL version</th>
2125          <th class="th_tags">Tags</th>
2126        </tr>
2127      </thead>
2128
2129      <tbody>
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2141            <td class="entry_name
2142             " rowspan="5">
2143              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2144            </td>
2145            <td class="entry_type">
2146                <span class="entry_type_name entry_type_name_enum">byte</span>
2147
2148              <span class="entry_type_visibility"> [public]</span>
2149
2150
2151              <span class="entry_type_hwlevel">[legacy] </span>
2152
2153
2154
2155                <ul class="entry_type_enum">
2156                  <li>
2157                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2158                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2159avoid banding problems.<wbr/></p></span>
2160                  </li>
2161                  <li>
2162                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
2163                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2164avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2165                  </li>
2166                  <li>
2167                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
2168                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2169avoid banding problems with 60Hz illumination
2170sources.<wbr/></p></span>
2171                  </li>
2172                  <li>
2173                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2174                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2175antibanding routine to the current illumination
2176condition.<wbr/> This is the default mode if AUTO is
2177available on given camera device.<wbr/></p></span>
2178                  </li>
2179                </ul>
2180
2181            </td> <!-- entry_type -->
2182
2183            <td class="entry_description">
2184              <p>The desired setting for the camera device's auto-exposure
2185algorithm's antibanding compensation.<wbr/></p>
2186            </td>
2187
2188            <td class="entry_units">
2189            </td>
2190
2191            <td class="entry_range">
2192              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2193            </td>
2194
2195            <td class="entry_hal_version">
2196              <p>3.<wbr/>2</p>
2197            </td>
2198
2199            <td class="entry_tags">
2200              <ul class="entry_tags">
2201                  <li><a href="#tag_BC">BC</a></li>
2202              </ul>
2203            </td>
2204
2205          </tr>
2206          <tr class="entries_header">
2207            <th class="th_details" colspan="6">Details</th>
2208          </tr>
2209          <tr class="entry_cont">
2210            <td class="entry_details" colspan="6">
2211              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2212lights,<wbr/> flicker at the rate of the power supply frequency
2213(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2214typically not noticeable to a person,<wbr/> it can be visible to
2215a camera device.<wbr/> If a camera sets its exposure time to the
2216wrong value,<wbr/> the flicker may become visible in the
2217viewfinder as flicker or in a final captured image,<wbr/> as a
2218set of variable-brightness bands across the image.<wbr/></p>
2219<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2220include antibanding routines that ensure that the chosen
2221exposure value will not cause such banding.<wbr/> The choice of
2222exposure time depends on the rate of flicker,<wbr/> which the
2223camera device can detect automatically,<wbr/> or the expected
2224rate can be selected by the application using this
2225control.<wbr/></p>
2226<p>A given camera device may not support all of the possible
2227options for the antibanding mode.<wbr/> The
2228<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2229the available modes for a given camera device.<wbr/></p>
2230<p>AUTO mode is the default if it is available on given
2231camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2232default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2233and 60HZ will be available.<wbr/></p>
2234<p>If manual exposure control is enabled (by setting
2235<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2236then this setting has no effect,<wbr/> and the application must
2237ensure it selects exposure times that do not cause banding
2238issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2239the application in this.<wbr/></p>
2240            </td>
2241          </tr>
2242
2243          <tr class="entries_header">
2244            <th class="th_details" colspan="6">HAL Implementation Details</th>
2245          </tr>
2246          <tr class="entry_cont">
2247            <td class="entry_details" colspan="6">
2248              <p>For all capture request templates,<wbr/> this field must be set
2249to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2250the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
225160HZ must be available.<wbr/></p>
2252<p>If manual exposure control is enabled (by setting
2253<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2254then the exposure values provided by the application must not be
2255adjusted for antibanding.<wbr/></p>
2256            </td>
2257          </tr>
2258
2259          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2260           <!-- end of entry -->
2261
2262
2263          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2264            <td class="entry_name
2265             " rowspan="3">
2266              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2267            </td>
2268            <td class="entry_type">
2269                <span class="entry_type_name">int32</span>
2270
2271              <span class="entry_type_visibility"> [public]</span>
2272
2273
2274              <span class="entry_type_hwlevel">[legacy] </span>
2275
2276
2277
2278
2279            </td> <!-- entry_type -->
2280
2281            <td class="entry_description">
2282              <p>Adjustment to auto-exposure (AE) target image
2283brightness.<wbr/></p>
2284            </td>
2285
2286            <td class="entry_units">
2287              Compensation steps
2288            </td>
2289
2290            <td class="entry_range">
2291              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2292            </td>
2293
2294            <td class="entry_hal_version">
2295              <p>3.<wbr/>2</p>
2296            </td>
2297
2298            <td class="entry_tags">
2299              <ul class="entry_tags">
2300                  <li><a href="#tag_BC">BC</a></li>
2301              </ul>
2302            </td>
2303
2304          </tr>
2305          <tr class="entries_header">
2306            <th class="th_details" colspan="6">Details</th>
2307          </tr>
2308          <tr class="entry_cont">
2309            <td class="entry_details" colspan="6">
2310              <p>The adjustment is measured as a count of steps,<wbr/> with the
2311step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2312allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2313<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2314will mean an exposure compensation of +2 EV; -3 will mean an
2315exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2316of image brightness.<wbr/> Note that this control will only be
2317effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2318will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2319<p>In the event of exposure compensation value being changed,<wbr/> camera device
2320may take several frames to reach the newly requested exposure target.<wbr/>
2321During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2322state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2323change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2324FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2325            </td>
2326          </tr>
2327
2328
2329          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2330           <!-- end of entry -->
2331
2332
2333          <tr class="entry" id="controls_android.control.aeLock">
2334            <td class="entry_name
2335             " rowspan="3">
2336              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2337            </td>
2338            <td class="entry_type">
2339                <span class="entry_type_name entry_type_name_enum">byte</span>
2340
2341              <span class="entry_type_visibility"> [public as boolean]</span>
2342
2343
2344              <span class="entry_type_hwlevel">[legacy] </span>
2345
2346
2347
2348                <ul class="entry_type_enum">
2349                  <li>
2350                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2351                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2352is free to update its parameters.<wbr/></p></span>
2353                  </li>
2354                  <li>
2355                    <span class="entry_type_enum_name">ON (v3.2)</span>
2356                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2357must not update the exposure and sensitivity parameters
2358while the lock is active.<wbr/></p>
2359<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2360will still take effect while auto-exposure is locked.<wbr/></p>
2361<p>Some rare LEGACY devices may not support
2362this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2363                  </li>
2364                </ul>
2365
2366            </td> <!-- entry_type -->
2367
2368            <td class="entry_description">
2369              <p>Whether auto-exposure (AE) is currently locked to its latest
2370calculated values.<wbr/></p>
2371            </td>
2372
2373            <td class="entry_units">
2374            </td>
2375
2376            <td class="entry_range">
2377            </td>
2378
2379            <td class="entry_hal_version">
2380              <p>3.<wbr/>2</p>
2381            </td>
2382
2383            <td class="entry_tags">
2384              <ul class="entry_tags">
2385                  <li><a href="#tag_BC">BC</a></li>
2386              </ul>
2387            </td>
2388
2389          </tr>
2390          <tr class="entries_header">
2391            <th class="th_details" colspan="6">Details</th>
2392          </tr>
2393          <tr class="entry_cont">
2394            <td class="entry_details" colspan="6">
2395              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2396and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2397<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2398the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2399ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2400<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
2401is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2402<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2403when AE is already locked,<wbr/> the camera device will not change the exposure time
2404(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
2405parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2406is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2407<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
2408Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2409<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2410the AE if AE is locked by the camera device internally during precapture metering
2411sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2412ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2413will never succeed in a sequence of preview requests where AE lock is always set
2414to <code>false</code>.<wbr/></p>
2415<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2416get locked do not necessarily correspond to the settings that were present in the
2417latest capture result received from the camera device,<wbr/> since additional captures
2418and AE updates may have occurred even before the result was sent out.<wbr/> If an
2419application is switching between automatic and manual control and wishes to eliminate
2420any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2421<ol>
2422<li>Starting in auto-AE mode:</li>
2423<li>Lock AE</li>
2424<li>Wait for the first result to be output that has the AE locked</li>
2425<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2426<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2427</ol>
2428<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
2429            </td>
2430          </tr>
2431
2432
2433          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2434           <!-- end of entry -->
2435
2436
2437          <tr class="entry" id="controls_android.control.aeMode">
2438            <td class="entry_name
2439             " rowspan="3">
2440              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2441            </td>
2442            <td class="entry_type">
2443                <span class="entry_type_name entry_type_name_enum">byte</span>
2444
2445              <span class="entry_type_visibility"> [public]</span>
2446
2447
2448              <span class="entry_type_hwlevel">[legacy] </span>
2449
2450
2451
2452                <ul class="entry_type_enum">
2453                  <li>
2454                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2455                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2456<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2457<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2458<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2459device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2460a flash unit for this camera device.<wbr/></p>
2461<p>Note that auto-white balance (AWB) and auto-focus (AF)
2462behavior is device dependent when AE is in OFF mode.<wbr/>
2463To have consistent behavior across different devices,<wbr/>
2464it is recommended to either set AWB and AF to OFF mode
2465or lock AWB and AF before setting AE to OFF.<wbr/>
2466See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
2467<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2468for more details.<wbr/></p>
2469<p>LEGACY devices do not support the OFF mode and will
2470override attempts to use this value to ON.<wbr/></p></span>
2471                  </li>
2472                  <li>
2473                    <span class="entry_type_enum_name">ON (v3.2)</span>
2474                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2475with no flash control.<wbr/></p>
2476<p>The application's values for
2477<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2478<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2479<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2480application has control over the various
2481android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2482                  </li>
2483                  <li>
2484                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2485                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2486the camera's flash unit,<wbr/> firing it in low-light
2487conditions.<wbr/></p>
2488<p>The flash may be fired during a precapture sequence
2489(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2490may be fired for captures for which the
2491<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2492STILL_<wbr/>CAPTURE</p></span>
2493                  </li>
2494                  <li>
2495                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2496                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2497the camera's flash unit,<wbr/> always firing it for still
2498captures.<wbr/></p>
2499<p>The flash may be fired during a precapture sequence
2500(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2501will always be fired for captures for which the
2502<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2503STILL_<wbr/>CAPTURE</p></span>
2504                  </li>
2505                  <li>
2506                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2507                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2508reduction.<wbr/></p>
2509<p>If deemed necessary by the camera device,<wbr/> a red eye
2510reduction flash will fire during the precapture
2511sequence.<wbr/></p></span>
2512                  </li>
2513                  <li>
2514                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2515                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2516<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2517metering (and continuous focus if active) should be quickly recaculated to account
2518for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2519<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2520other available AE modes.<wbr/></p>
2521<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
2522be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2523flash.<wbr/></p></span>
2524                  </li>
2525                </ul>
2526
2527            </td> <!-- entry_type -->
2528
2529            <td class="entry_description">
2530              <p>The desired mode for the camera device's
2531auto-exposure routine.<wbr/></p>
2532            </td>
2533
2534            <td class="entry_units">
2535            </td>
2536
2537            <td class="entry_range">
2538              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2539            </td>
2540
2541            <td class="entry_hal_version">
2542              <p>3.<wbr/>2</p>
2543            </td>
2544
2545            <td class="entry_tags">
2546              <ul class="entry_tags">
2547                  <li><a href="#tag_BC">BC</a></li>
2548              </ul>
2549            </td>
2550
2551          </tr>
2552          <tr class="entries_header">
2553            <th class="th_details" colspan="6">Details</th>
2554          </tr>
2555          <tr class="entry_cont">
2556            <td class="entry_details" colspan="6">
2557              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2558AUTO.<wbr/></p>
2559<p>When set to any of the ON modes,<wbr/> the camera device's
2560auto-exposure routine is enabled,<wbr/> overriding the
2561application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2562and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2563<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2564<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2565is selected,<wbr/> the camera device's flash unit controls are
2566also overridden.<wbr/></p>
2567<p>The FLASH modes are only available if the camera device
2568has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2569<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2570ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2571<p>When set to any of the ON modes,<wbr/> the values chosen by the
2572camera device auto-exposure routine for the overridden
2573fields for a given capture will be available in its
2574CaptureResult.<wbr/></p>
2575            </td>
2576          </tr>
2577
2578
2579          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2580           <!-- end of entry -->
2581
2582
2583          <tr class="entry" id="controls_android.control.aeRegions">
2584            <td class="entry_name
2585             " rowspan="5">
2586              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2587            </td>
2588            <td class="entry_type">
2589                <span class="entry_type_name">int32</span>
2590                <span class="entry_type_container">x</span>
2591
2592                <span class="entry_type_array">
2593                  5 x area_count
2594                </span>
2595              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2596
2597
2598
2599
2600
2601
2602            </td> <!-- entry_type -->
2603
2604            <td class="entry_description">
2605              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2606            </td>
2607
2608            <td class="entry_units">
2609              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2610            </td>
2611
2612            <td class="entry_range">
2613              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2615            </td>
2616
2617            <td class="entry_hal_version">
2618              <p>3.<wbr/>2</p>
2619            </td>
2620
2621            <td class="entry_tags">
2622              <ul class="entry_tags">
2623                  <li><a href="#tag_BC">BC</a></li>
2624              </ul>
2625            </td>
2626
2627          </tr>
2628          <tr class="entries_header">
2629            <th class="th_details" colspan="6">Details</th>
2630          </tr>
2631          <tr class="entry_cont">
2632            <td class="entry_details" colspan="6">
2633              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2634Otherwise will always be present.<wbr/></p>
2635<p>The maximum number of regions supported by the device is determined by the value
2636of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2637<p>The coordinate system is based on the active pixel array,<wbr/>
2638with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2639(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2640<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2641bottom-right pixel in the active pixel array.<wbr/></p>
2642<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2643for every pixel in the area.<wbr/> This means that a large metering area
2644with the same weight as a smaller area will have more effect in
2645the metering result.<wbr/> Metering areas can partially overlap and the
2646camera device will add the weights in the overlap region.<wbr/></p>
2647<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2648region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2649weight is ignored.<wbr/></p>
2650<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2651camera device.<wbr/></p>
2652<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2653capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2654region and output only the intersection rectangle as the metering region in the result
2655metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2656not reported in the result metadata.<wbr/></p>
2657            </td>
2658          </tr>
2659
2660          <tr class="entries_header">
2661            <th class="th_details" colspan="6">HAL Implementation Details</th>
2662          </tr>
2663          <tr class="entry_cont">
2664            <td class="entry_details" colspan="6">
2665              <p>The HAL level representation of MeteringRectangle[] is a
2666int[5 * area_<wbr/>count].<wbr/>
2667Every five elements represent a metering region of
2668(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2669The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2670exclusive on xmax and ymax.<wbr/></p>
2671            </td>
2672          </tr>
2673
2674          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2675           <!-- end of entry -->
2676
2677
2678          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2679            <td class="entry_name
2680             " rowspan="3">
2681              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2682            </td>
2683            <td class="entry_type">
2684                <span class="entry_type_name">int32</span>
2685                <span class="entry_type_container">x</span>
2686
2687                <span class="entry_type_array">
2688                  2
2689                </span>
2690              <span class="entry_type_visibility"> [public as rangeInt]</span>
2691
2692
2693              <span class="entry_type_hwlevel">[legacy] </span>
2694
2695
2696
2697
2698            </td> <!-- entry_type -->
2699
2700            <td class="entry_description">
2701              <p>Range over which the auto-exposure routine can
2702adjust the capture frame rate to maintain good
2703exposure.<wbr/></p>
2704            </td>
2705
2706            <td class="entry_units">
2707              Frames per second (FPS)
2708            </td>
2709
2710            <td class="entry_range">
2711              <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
2712            </td>
2713
2714            <td class="entry_hal_version">
2715              <p>3.<wbr/>2</p>
2716            </td>
2717
2718            <td class="entry_tags">
2719              <ul class="entry_tags">
2720                  <li><a href="#tag_BC">BC</a></li>
2721              </ul>
2722            </td>
2723
2724          </tr>
2725          <tr class="entries_header">
2726            <th class="th_details" colspan="6">Details</th>
2727          </tr>
2728          <tr class="entry_cont">
2729            <td class="entry_details" colspan="6">
2730              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2731manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2732<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2733            </td>
2734          </tr>
2735
2736
2737          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2738           <!-- end of entry -->
2739
2740
2741          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2742            <td class="entry_name
2743             " rowspan="5">
2744              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2745            </td>
2746            <td class="entry_type">
2747                <span class="entry_type_name entry_type_name_enum">byte</span>
2748
2749              <span class="entry_type_visibility"> [public]</span>
2750
2751
2752              <span class="entry_type_hwlevel">[limited] </span>
2753
2754
2755
2756                <ul class="entry_type_enum">
2757                  <li>
2758                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
2759                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2760                  </li>
2761                  <li>
2762                    <span class="entry_type_enum_name">START (v3.2)</span>
2763                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2764by the camera device.<wbr/></p>
2765<p>The exact effect of the precapture trigger depends on
2766the current AE mode and state.<wbr/></p></span>
2767                  </li>
2768                  <li>
2769                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2770                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2771precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2772initial state.<wbr/></p></span>
2773                  </li>
2774                </ul>
2775
2776            </td> <!-- entry_type -->
2777
2778            <td class="entry_description">
2779              <p>Whether the camera device will trigger a precapture
2780metering sequence when it processes this request.<wbr/></p>
2781            </td>
2782
2783            <td class="entry_units">
2784            </td>
2785
2786            <td class="entry_range">
2787            </td>
2788
2789            <td class="entry_hal_version">
2790              <p>3.<wbr/>2</p>
2791            </td>
2792
2793            <td class="entry_tags">
2794              <ul class="entry_tags">
2795                  <li><a href="#tag_BC">BC</a></li>
2796              </ul>
2797            </td>
2798
2799          </tr>
2800          <tr class="entries_header">
2801            <th class="th_details" colspan="6">Details</th>
2802          </tr>
2803          <tr class="entry_cont">
2804            <td class="entry_details" colspan="6">
2805              <p>This entry is normally set to IDLE,<wbr/> or is not
2806included at all in the request settings.<wbr/> When included and
2807set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2808precapture metering sequence.<wbr/></p>
2809<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2810precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2811If a precapture metering sequence is already completed,<wbr/> and the camera
2812device has implicitly locked the AE for subsequent still capture,<wbr/> the
2813CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2814<p>The precapture sequence should be triggered before starting a
2815high-quality still capture for final metering decisions to
2816be made,<wbr/> and for firing pre-capture flash pulses to estimate
2817scene brightness and required final capture flash power,<wbr/> when
2818the flash is enabled.<wbr/></p>
2819<p>Normally,<wbr/> this entry should be set to START for only a
2820single request,<wbr/> and the application should wait until the
2821sequence completes before starting a new one.<wbr/></p>
2822<p>When a precapture metering sequence is finished,<wbr/> the camera device
2823may lock the auto-exposure routine internally to be able to accurately expose the
2824subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2825For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2826submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2827submit 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
2828with <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
2829still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2830API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2831internally locked AE if the application doesn't submit a still capture request after
2832the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2833be used in devices that have earlier API levels.<wbr/></p>
2834<p>The exact effect of auto-exposure (AE) precapture trigger
2835depends on the current AE mode and state; see
2836<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2837details.<wbr/></p>
2838<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2839capturing a high-resolution JPEG image will automatically trigger a
2840precapture sequence before the high-resolution capture,<wbr/> including
2841potentially firing a pre-capture flash.<wbr/></p>
2842<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2843simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2844the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2845focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2846trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2847changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2848example.<wbr/></p>
2849<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2850the camera device will complete them in the optimal order for that device.<wbr/></p>
2851            </td>
2852          </tr>
2853
2854          <tr class="entries_header">
2855            <th class="th_details" colspan="6">HAL Implementation Details</th>
2856          </tr>
2857          <tr class="entry_cont">
2858            <td class="entry_details" colspan="6">
2859              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2860(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2861treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2862AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2863to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2864            </td>
2865          </tr>
2866
2867          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2868           <!-- end of entry -->
2869
2870
2871          <tr class="entry" id="controls_android.control.afMode">
2872            <td class="entry_name
2873             " rowspan="5">
2874              android.<wbr/>control.<wbr/>af<wbr/>Mode
2875            </td>
2876            <td class="entry_type">
2877                <span class="entry_type_name entry_type_name_enum">byte</span>
2878
2879              <span class="entry_type_visibility"> [public]</span>
2880
2881
2882              <span class="entry_type_hwlevel">[legacy] </span>
2883
2884
2885
2886                <ul class="entry_type_enum">
2887                  <li>
2888                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2889                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2890<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2891application.<wbr/></p></span>
2892                  </li>
2893                  <li>
2894                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2895                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2896<p>In this mode,<wbr/> the lens does not move unless
2897the autofocus trigger action is called.<wbr/> When that trigger
2898is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2899the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2900<p>Always supported if lens is not fixed focus.<wbr/></p>
2901<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
2902is fixed-focus.<wbr/></p>
2903<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2904and sets the AF state to INACTIVE.<wbr/></p></span>
2905                  </li>
2906                  <li>
2907                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
2908                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2909<p>In this mode,<wbr/> the lens does not move unless the
2910autofocus trigger action is called.<wbr/> When that trigger is
2911activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2912the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2913mode is optimized for focusing on objects very close to
2914the camera.<wbr/></p>
2915<p>When that trigger is activated,<wbr/> AF will transition to
2916ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2917NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2918position to default,<wbr/> and sets the AF state to
2919INACTIVE.<wbr/></p></span>
2920                  </li>
2921                  <li>
2922                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2923                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2924position continually to attempt to provide a
2925constantly-in-focus image stream.<wbr/></p>
2926<p>The focusing behavior should be suitable for good quality
2927video recording; typically this means slower focus
2928movement and no overshoots.<wbr/> When the AF trigger is not
2929involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2930and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2931states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2932the algorithm should immediately transition into
2933AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2934lens position until a cancel AF trigger is received.<wbr/></p>
2935<p>Once cancel is received,<wbr/> the algorithm should transition
2936back to INACTIVE and resume passive scan.<wbr/> Note that this
2937behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2938ongoing PASSIVE_<wbr/>SCAN must immediately be
2939canceled.<wbr/></p></span>
2940                  </li>
2941                  <li>
2942                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2943                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2944position continually to attempt to provide a
2945constantly-in-focus image stream.<wbr/></p>
2946<p>The focusing behavior should be suitable for still image
2947capture; typically this means focusing as fast as
2948possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2949algorithm should start in INACTIVE state,<wbr/> and then
2950transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2951appropriate as it attempts to maintain focus.<wbr/> When the AF
2952trigger is activated,<wbr/> the algorithm should finish its
2953PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2954AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2955lens position until a cancel AF trigger is received.<wbr/></p>
2956<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2957should transition back to INACTIVE and then act as if it
2958has just been started.<wbr/></p></span>
2959                  </li>
2960                  <li>
2961                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
2962                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2963<p>The camera device will produce images with an extended
2964depth of field automatically; no special focusing
2965operations need to be done before taking a picture.<wbr/></p>
2966<p>AF triggers are ignored,<wbr/> and the AF state will always be
2967INACTIVE.<wbr/></p></span>
2968                  </li>
2969                </ul>
2970
2971            </td> <!-- entry_type -->
2972
2973            <td class="entry_description">
2974              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2975mode it is set to.<wbr/></p>
2976            </td>
2977
2978            <td class="entry_units">
2979            </td>
2980
2981            <td class="entry_range">
2982              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2983            </td>
2984
2985            <td class="entry_hal_version">
2986              <p>3.<wbr/>2</p>
2987            </td>
2988
2989            <td class="entry_tags">
2990              <ul class="entry_tags">
2991                  <li><a href="#tag_BC">BC</a></li>
2992              </ul>
2993            </td>
2994
2995          </tr>
2996          <tr class="entries_header">
2997            <th class="th_details" colspan="6">Details</th>
2998          </tr>
2999          <tr class="entry_cont">
3000            <td class="entry_details" colspan="6">
3001              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3002(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
3003when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3004dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
3005setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
3006<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3007the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3008in result metadata.<wbr/></p>
3009            </td>
3010          </tr>
3011
3012          <tr class="entries_header">
3013            <th class="th_details" colspan="6">HAL Implementation Details</th>
3014          </tr>
3015          <tr class="entry_cont">
3016            <td class="entry_details" colspan="6">
3017              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3018request (<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
3019up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3020<a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
3021locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3022after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3023the same focal plane remains in focus.<wbr/></p>
3024<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3025scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3026(see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
3027same lock behavior as above.<wbr/></p>
3028<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3029focus 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/>
3030However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3031manual control.<wbr/></p>
3032<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3033camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3034remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3035by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3036that will arise on camera modules with open-loop VCMs.<wbr/></p>
3037            </td>
3038          </tr>
3039
3040          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3041           <!-- end of entry -->
3042
3043
3044          <tr class="entry" id="controls_android.control.afRegions">
3045            <td class="entry_name
3046             " rowspan="5">
3047              android.<wbr/>control.<wbr/>af<wbr/>Regions
3048            </td>
3049            <td class="entry_type">
3050                <span class="entry_type_name">int32</span>
3051                <span class="entry_type_container">x</span>
3052
3053                <span class="entry_type_array">
3054                  5 x area_count
3055                </span>
3056              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3057
3058
3059
3060
3061
3062
3063            </td> <!-- entry_type -->
3064
3065            <td class="entry_description">
3066              <p>List of metering areas to use for auto-focus.<wbr/></p>
3067            </td>
3068
3069            <td class="entry_units">
3070              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3071            </td>
3072
3073            <td class="entry_range">
3074              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3075<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3076            </td>
3077
3078            <td class="entry_hal_version">
3079              <p>3.<wbr/>2</p>
3080            </td>
3081
3082            <td class="entry_tags">
3083              <ul class="entry_tags">
3084                  <li><a href="#tag_BC">BC</a></li>
3085              </ul>
3086            </td>
3087
3088          </tr>
3089          <tr class="entries_header">
3090            <th class="th_details" colspan="6">Details</th>
3091          </tr>
3092          <tr class="entry_cont">
3093            <td class="entry_details" colspan="6">
3094              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3095Otherwise will always be present.<wbr/></p>
3096<p>The maximum number of focus areas supported by the device is determined by the value
3097of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3098<p>The coordinate system is based on the active pixel array,<wbr/>
3099with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3100(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3101<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3102bottom-right pixel in the active pixel array.<wbr/></p>
3103<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3104for every pixel in the area.<wbr/> This means that a large metering area
3105with the same weight as a smaller area will have more effect in
3106the metering result.<wbr/> Metering areas can partially overlap and the
3107camera device will add the weights in the overlap region.<wbr/></p>
3108<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3109is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3110ignored.<wbr/></p>
3111<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3112camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3113the region selected by the camera device as the focus area of interest.<wbr/></p>
3114<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
3115capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3116region and output only the intersection rectangle as the metering region in the result
3117metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3118not reported in the result metadata.<wbr/></p>
3119            </td>
3120          </tr>
3121
3122          <tr class="entries_header">
3123            <th class="th_details" colspan="6">HAL Implementation Details</th>
3124          </tr>
3125          <tr class="entry_cont">
3126            <td class="entry_details" colspan="6">
3127              <p>The HAL level representation of MeteringRectangle[] is a
3128int[5 * area_<wbr/>count].<wbr/>
3129Every five elements represent a metering region of
3130(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3131The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3132exclusive on xmax and ymax.<wbr/></p>
3133            </td>
3134          </tr>
3135
3136          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3137           <!-- end of entry -->
3138
3139
3140          <tr class="entry" id="controls_android.control.afTrigger">
3141            <td class="entry_name
3142             " rowspan="5">
3143              android.<wbr/>control.<wbr/>af<wbr/>Trigger
3144            </td>
3145            <td class="entry_type">
3146                <span class="entry_type_name entry_type_name_enum">byte</span>
3147
3148              <span class="entry_type_visibility"> [public]</span>
3149
3150
3151              <span class="entry_type_hwlevel">[legacy] </span>
3152
3153
3154
3155                <ul class="entry_type_enum">
3156                  <li>
3157                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
3158                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3159                  </li>
3160                  <li>
3161                    <span class="entry_type_enum_name">START (v3.2)</span>
3162                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3163                  </li>
3164                  <li>
3165                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3166                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3167state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3168                  </li>
3169                </ul>
3170
3171            </td> <!-- entry_type -->
3172
3173            <td class="entry_description">
3174              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3175            </td>
3176
3177            <td class="entry_units">
3178            </td>
3179
3180            <td class="entry_range">
3181            </td>
3182
3183            <td class="entry_hal_version">
3184              <p>3.<wbr/>2</p>
3185            </td>
3186
3187            <td class="entry_tags">
3188              <ul class="entry_tags">
3189                  <li><a href="#tag_BC">BC</a></li>
3190              </ul>
3191            </td>
3192
3193          </tr>
3194          <tr class="entries_header">
3195            <th class="th_details" colspan="6">Details</th>
3196          </tr>
3197          <tr class="entry_cont">
3198            <td class="entry_details" colspan="6">
3199              <p>This entry is normally set to IDLE,<wbr/> or is not
3200included at all in the request settings.<wbr/></p>
3201<p>When included and set to START,<wbr/> the camera device will trigger the
3202autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3203<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3204and return to its initial AF state.<wbr/></p>
3205<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3206single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3207START for multiple captures in a row means restarting the AF operation over
3208and over again.<wbr/></p>
3209<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
3210<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3211simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3212the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3213focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3214trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3215changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3216            </td>
3217          </tr>
3218
3219          <tr class="entries_header">
3220            <th class="th_details" colspan="6">HAL Implementation Details</th>
3221          </tr>
3222          <tr class="entry_cont">
3223            <td class="entry_details" colspan="6">
3224              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3225(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3226treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3227AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3228to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3229            </td>
3230          </tr>
3231
3232          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3233           <!-- end of entry -->
3234
3235
3236          <tr class="entry" id="controls_android.control.awbLock">
3237            <td class="entry_name
3238             " rowspan="3">
3239              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3240            </td>
3241            <td class="entry_type">
3242                <span class="entry_type_name entry_type_name_enum">byte</span>
3243
3244              <span class="entry_type_visibility"> [public as boolean]</span>
3245
3246
3247              <span class="entry_type_hwlevel">[legacy] </span>
3248
3249
3250
3251                <ul class="entry_type_enum">
3252                  <li>
3253                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3254                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3255algorithm is free to update its parameters if in AUTO
3256mode.<wbr/></p></span>
3257                  </li>
3258                  <li>
3259                    <span class="entry_type_enum_name">ON (v3.2)</span>
3260                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3261algorithm will not update its parameters while the lock
3262is active.<wbr/></p></span>
3263                  </li>
3264                </ul>
3265
3266            </td> <!-- entry_type -->
3267
3268            <td class="entry_description">
3269              <p>Whether auto-white balance (AWB) is currently locked to its
3270latest calculated values.<wbr/></p>
3271            </td>
3272
3273            <td class="entry_units">
3274            </td>
3275
3276            <td class="entry_range">
3277            </td>
3278
3279            <td class="entry_hal_version">
3280              <p>3.<wbr/>2</p>
3281            </td>
3282
3283            <td class="entry_tags">
3284              <ul class="entry_tags">
3285                  <li><a href="#tag_BC">BC</a></li>
3286              </ul>
3287            </td>
3288
3289          </tr>
3290          <tr class="entries_header">
3291            <th class="th_details" colspan="6">Details</th>
3292          </tr>
3293          <tr class="entry_cont">
3294            <td class="entry_details" colspan="6">
3295              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3296and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3297<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3298get locked do not necessarily correspond to the settings that were present in the
3299latest capture result received from the camera device,<wbr/> since additional captures
3300and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3301application is switching between automatic and manual control and wishes to eliminate
3302any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3303<ol>
3304<li>Starting in auto-AWB mode:</li>
3305<li>Lock AWB</li>
3306<li>Wait for the first result to be output that has the AWB locked</li>
3307<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3308<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3309</ol>
3310<p>Note that AWB lock is only meaningful when
3311<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3312AWB is already fixed to a specific setting.<wbr/></p>
3313<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3314            </td>
3315          </tr>
3316
3317
3318          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3319           <!-- end of entry -->
3320
3321
3322          <tr class="entry" id="controls_android.control.awbMode">
3323            <td class="entry_name
3324             " rowspan="3">
3325              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3326            </td>
3327            <td class="entry_type">
3328                <span class="entry_type_name entry_type_name_enum">byte</span>
3329
3330              <span class="entry_type_visibility"> [public]</span>
3331
3332
3333              <span class="entry_type_hwlevel">[legacy] </span>
3334
3335
3336
3337                <ul class="entry_type_enum">
3338                  <li>
3339                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3340                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3341<p>The application-selected color transform matrix
3342(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3343(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3344device for manual white balance control.<wbr/></p></span>
3345                  </li>
3346                  <li>
3347                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3348                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3349<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3350and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3351For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3352values used by the camera device for the transform and gains
3353will be available in the capture result for this request.<wbr/></p></span>
3354                  </li>
3355                  <li>
3356                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3357                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3358the camera device uses incandescent light as the assumed scene
3359illumination for white balance.<wbr/></p>
3360<p>While the exact white balance transforms are up to the
3361camera device,<wbr/> they will approximately match the CIE
3362standard illuminant A.<wbr/></p>
3363<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3364and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3365For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3366values used by the camera device for the transform and gains
3367will be available in the capture result for this request.<wbr/></p></span>
3368                  </li>
3369                  <li>
3370                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3371                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3372the camera device uses fluorescent light as the assumed scene
3373illumination for white balance.<wbr/></p>
3374<p>While the exact white balance transforms are up to the
3375camera device,<wbr/> they will approximately match the CIE
3376standard illuminant F2.<wbr/></p>
3377<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3378and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3379For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3380values used by the camera device for the transform and gains
3381will be available in the capture result for this request.<wbr/></p></span>
3382                  </li>
3383                  <li>
3384                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3385                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3386the camera device uses warm fluorescent light as the assumed scene
3387illumination for white balance.<wbr/></p>
3388<p>While the exact white balance transforms are up to the
3389camera device,<wbr/> they will approximately match the CIE
3390standard illuminant F4.<wbr/></p>
3391<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3392and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3393For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3394values used by the camera device for the transform and gains
3395will be available in the capture result for this request.<wbr/></p></span>
3396                  </li>
3397                  <li>
3398                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3399                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3400the camera device uses daylight light as the assumed scene
3401illumination for white balance.<wbr/></p>
3402<p>While the exact white balance transforms are up to the
3403camera device,<wbr/> they will approximately match the CIE
3404standard illuminant D65.<wbr/></p>
3405<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3406and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3407For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3408values used by the camera device for the transform and gains
3409will be available in the capture result for this request.<wbr/></p></span>
3410                  </li>
3411                  <li>
3412                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3413                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3414the camera device uses cloudy daylight light as the assumed scene
3415illumination for white balance.<wbr/></p>
3416<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3417and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3418For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3419values used by the camera device for the transform and gains
3420will be available in the capture result for this request.<wbr/></p></span>
3421                  </li>
3422                  <li>
3423                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3424                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3425the camera device uses twilight light as the assumed scene
3426illumination for white balance.<wbr/></p>
3427<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3428and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3429For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3430values used by the camera device for the transform and gains
3431will be available in the capture result for this request.<wbr/></p></span>
3432                  </li>
3433                  <li>
3434                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
3435                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3436the camera device uses shade light as the assumed scene
3437illumination for white balance.<wbr/></p>
3438<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3439and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3440For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3441values used by the camera device for the transform and gains
3442will be available in the capture result for this request.<wbr/></p></span>
3443                  </li>
3444                </ul>
3445
3446            </td> <!-- entry_type -->
3447
3448            <td class="entry_description">
3449              <p>Whether auto-white balance (AWB) is currently setting the color
3450transform fields,<wbr/> and what its illumination target
3451is.<wbr/></p>
3452            </td>
3453
3454            <td class="entry_units">
3455            </td>
3456
3457            <td class="entry_range">
3458              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3459            </td>
3460
3461            <td class="entry_hal_version">
3462              <p>3.<wbr/>2</p>
3463            </td>
3464
3465            <td class="entry_tags">
3466              <ul class="entry_tags">
3467                  <li><a href="#tag_BC">BC</a></li>
3468              </ul>
3469            </td>
3470
3471          </tr>
3472          <tr class="entries_header">
3473            <th class="th_details" colspan="6">Details</th>
3474          </tr>
3475          <tr class="entry_cont">
3476            <td class="entry_details" colspan="6">
3477              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3478<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3479routine is enabled,<wbr/> overriding the application's selected
3480<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3481<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
3482is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3483also 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
3484setting AE mode to OFF.<wbr/></p>
3485<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3486routine is disabled.<wbr/> The application manually controls the white
3487balance 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>
3488and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3489<p>When set to any other modes,<wbr/> the camera device's auto-white
3490balance routine is disabled.<wbr/> The camera device uses each
3491particular illumination target for white balance
3492adjustment.<wbr/> The application's values for
3493<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3494<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3495<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3496            </td>
3497          </tr>
3498
3499
3500          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3501           <!-- end of entry -->
3502
3503
3504          <tr class="entry" id="controls_android.control.awbRegions">
3505            <td class="entry_name
3506             " rowspan="5">
3507              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3508            </td>
3509            <td class="entry_type">
3510                <span class="entry_type_name">int32</span>
3511                <span class="entry_type_container">x</span>
3512
3513                <span class="entry_type_array">
3514                  5 x area_count
3515                </span>
3516              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3517
3518
3519
3520
3521
3522
3523            </td> <!-- entry_type -->
3524
3525            <td class="entry_description">
3526              <p>List of metering areas to use for auto-white-balance illuminant
3527estimation.<wbr/></p>
3528            </td>
3529
3530            <td class="entry_units">
3531              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3532            </td>
3533
3534            <td class="entry_range">
3535              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3536<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3537            </td>
3538
3539            <td class="entry_hal_version">
3540              <p>3.<wbr/>2</p>
3541            </td>
3542
3543            <td class="entry_tags">
3544              <ul class="entry_tags">
3545                  <li><a href="#tag_BC">BC</a></li>
3546              </ul>
3547            </td>
3548
3549          </tr>
3550          <tr class="entries_header">
3551            <th class="th_details" colspan="6">Details</th>
3552          </tr>
3553          <tr class="entry_cont">
3554            <td class="entry_details" colspan="6">
3555              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3556Otherwise will always be present.<wbr/></p>
3557<p>The maximum number of regions supported by the device is determined by the value
3558of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3559<p>The coordinate system is based on the active pixel array,<wbr/>
3560with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3561(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3562<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3563bottom-right pixel in the active pixel array.<wbr/></p>
3564<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3565for every pixel in the area.<wbr/> This means that a large metering area
3566with the same weight as a smaller area will have more effect in
3567the metering result.<wbr/> Metering areas can partially overlap and the
3568camera device will add the weights in the overlap region.<wbr/></p>
3569<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3570only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
35710 weight is ignored.<wbr/></p>
3572<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3573camera device.<wbr/></p>
3574<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
3575capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3576region and output only the intersection rectangle as the metering region in the result
3577metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3578not reported in the result metadata.<wbr/></p>
3579            </td>
3580          </tr>
3581
3582          <tr class="entries_header">
3583            <th class="th_details" colspan="6">HAL Implementation Details</th>
3584          </tr>
3585          <tr class="entry_cont">
3586            <td class="entry_details" colspan="6">
3587              <p>The HAL level representation of MeteringRectangle[] is a
3588int[5 * area_<wbr/>count].<wbr/>
3589Every five elements represent a metering region of
3590(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3591The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3592exclusive on xmax and ymax.<wbr/></p>
3593            </td>
3594          </tr>
3595
3596          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3597           <!-- end of entry -->
3598
3599
3600          <tr class="entry" id="controls_android.control.captureIntent">
3601            <td class="entry_name
3602             " rowspan="3">
3603              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3604            </td>
3605            <td class="entry_type">
3606                <span class="entry_type_name entry_type_name_enum">byte</span>
3607
3608              <span class="entry_type_visibility"> [public]</span>
3609
3610
3611              <span class="entry_type_hwlevel">[legacy] </span>
3612
3613
3614
3615                <ul class="entry_type_enum">
3616                  <li>
3617                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3618                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3619categories.<wbr/> The camera device will default to preview-like
3620behavior.<wbr/></p></span>
3621                  </li>
3622                  <li>
3623                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3624                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3625<p>The precapture trigger may be used to start off a metering
3626w/<wbr/>flash sequence.<wbr/></p></span>
3627                  </li>
3628                  <li>
3629                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3630                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3631use case.<wbr/></p>
3632<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3633                  </li>
3634                  <li>
3635                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3636                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3637use case.<wbr/></p></span>
3638                  </li>
3639                  <li>
3640                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3641                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3642image while recording video) use case.<wbr/></p>
3643<p>The camera device should take the highest-quality image
3644possible (given the other settings) without disrupting the
3645frame rate of video recording.<wbr/>  </p></span>
3646                  </li>
3647                  <li>
3648                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3649                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3650application will stream full-resolution images and
3651reprocess one or several later for a final
3652capture.<wbr/></p></span>
3653                  </li>
3654                  <li>
3655                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3656                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3657the applications want to directly control the capture parameters.<wbr/></p>
3658<p>For example,<wbr/> the application may wish to manually control
3659<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
3660                  </li>
3661                  <li>
3662                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3663                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3664the application will use camera and inertial sensor data to
3665locate and track objects in the world.<wbr/></p>
3666<p>The camera device auto-exposure routine will limit the exposure time
3667of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3668                  </li>
3669                </ul>
3670
3671            </td> <!-- entry_type -->
3672
3673            <td class="entry_description">
3674              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3675auto-focus,<wbr/> auto-white balance) routines about the purpose
3676of this capture,<wbr/> to help the camera device to decide optimal 3A
3677strategy.<wbr/></p>
3678            </td>
3679
3680            <td class="entry_units">
3681            </td>
3682
3683            <td class="entry_range">
3684            </td>
3685
3686            <td class="entry_hal_version">
3687              <p>3.<wbr/>2</p>
3688            </td>
3689
3690            <td class="entry_tags">
3691              <ul class="entry_tags">
3692                  <li><a href="#tag_BC">BC</a></li>
3693              </ul>
3694            </td>
3695
3696          </tr>
3697          <tr class="entries_header">
3698            <th class="th_details" colspan="6">Details</th>
3699          </tr>
3700          <tr class="entry_cont">
3701            <td class="entry_details" colspan="6">
3702              <p>This control (except for MANUAL) is only effective if
3703<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3704<p>All intents are supported by all devices,<wbr/> except that:
3705  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3706PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3707  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3708MANUAL_<wbr/>SENSOR.<wbr/>
3709  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3710MOTION_<wbr/>TRACKING.<wbr/></p>
3711            </td>
3712          </tr>
3713
3714
3715          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3716           <!-- end of entry -->
3717
3718
3719          <tr class="entry" id="controls_android.control.effectMode">
3720            <td class="entry_name
3721             " rowspan="3">
3722              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3723            </td>
3724            <td class="entry_type">
3725                <span class="entry_type_name entry_type_name_enum">byte</span>
3726
3727              <span class="entry_type_visibility"> [public]</span>
3728
3729
3730              <span class="entry_type_hwlevel">[legacy] </span>
3731
3732
3733
3734                <ul class="entry_type_enum">
3735                  <li>
3736                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3737                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3738                  </li>
3739                  <li>
3740                    <span class="entry_type_enum_name">MONO (v3.2)</span>
3741                    <span class="entry_type_enum_optional">[optional]</span>
3742                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3743a single color.<wbr/></p>
3744<p>This will typically be grayscale.<wbr/></p></span>
3745                  </li>
3746                  <li>
3747                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3748                    <span class="entry_type_enum_optional">[optional]</span>
3749                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3750are inverted.<wbr/></p></span>
3751                  </li>
3752                  <li>
3753                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3754                    <span class="entry_type_enum_optional">[optional]</span>
3755                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3756image is wholly or partially reversed in
3757tone.<wbr/></p></span>
3758                  </li>
3759                  <li>
3760                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3761                    <span class="entry_type_enum_optional">[optional]</span>
3762                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3763gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3764                  </li>
3765                  <li>
3766                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3767                    <span class="entry_type_enum_optional">[optional]</span>
3768                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3769discrete regions of tone rather than a continuous
3770gradient of tones.<wbr/></p></span>
3771                  </li>
3772                  <li>
3773                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3774                    <span class="entry_type_enum_optional">[optional]</span>
3775                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3776as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3777                  </li>
3778                  <li>
3779                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3780                    <span class="entry_type_enum_optional">[optional]</span>
3781                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3782as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3783                  </li>
3784                  <li>
3785                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
3786                    <span class="entry_type_enum_optional">[optional]</span>
3787                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3788                  </li>
3789                </ul>
3790
3791            </td> <!-- entry_type -->
3792
3793            <td class="entry_description">
3794              <p>A special color effect to apply.<wbr/></p>
3795            </td>
3796
3797            <td class="entry_units">
3798            </td>
3799
3800            <td class="entry_range">
3801              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3802            </td>
3803
3804            <td class="entry_hal_version">
3805              <p>3.<wbr/>2</p>
3806            </td>
3807
3808            <td class="entry_tags">
3809              <ul class="entry_tags">
3810                  <li><a href="#tag_BC">BC</a></li>
3811              </ul>
3812            </td>
3813
3814          </tr>
3815          <tr class="entries_header">
3816            <th class="th_details" colspan="6">Details</th>
3817          </tr>
3818          <tr class="entry_cont">
3819            <td class="entry_details" colspan="6">
3820              <p>When this mode is set,<wbr/> a color effect will be applied
3821to images produced by the camera device.<wbr/> The interpretation
3822and implementation of these color effects is left to the
3823implementor of the camera device,<wbr/> and should not be
3824depended on to be consistent (or present) across all
3825devices.<wbr/></p>
3826            </td>
3827          </tr>
3828
3829
3830          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3831           <!-- end of entry -->
3832
3833
3834          <tr class="entry" id="controls_android.control.mode">
3835            <td class="entry_name
3836             " rowspan="3">
3837              android.<wbr/>control.<wbr/>mode
3838            </td>
3839            <td class="entry_type">
3840                <span class="entry_type_name entry_type_name_enum">byte</span>
3841
3842              <span class="entry_type_visibility"> [public]</span>
3843
3844
3845              <span class="entry_type_hwlevel">[legacy] </span>
3846
3847
3848
3849                <ul class="entry_type_enum">
3850                  <li>
3851                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3852                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3853<p>All control by the device's metering and focusing (3A)
3854routines is disabled,<wbr/> and no other settings in
3855android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3856<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3857device to select post-processing values for processing
3858blocks that do not allow for manual control,<wbr/> or are not
3859exposed by the camera API.<wbr/></p>
3860<p>However,<wbr/> the camera device's 3A routines may continue to
3861collect statistics and update their internal state so that
3862when control is switched to AUTO mode,<wbr/> good control values
3863can be immediately applied.<wbr/></p></span>
3864                  </li>
3865                  <li>
3866                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3867                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3868<p>Manual control of capture parameters is disabled.<wbr/> All
3869controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3870effect.<wbr/></p></span>
3871                  </li>
3872                  <li>
3873                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3874                    <span class="entry_type_enum_optional">[optional]</span>
3875                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3876<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3877control.<wbr/>afMode controls; the camera device will ignore
3878those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3879FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3880This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3881<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3882contain some modes other than DISABLED).<wbr/></p></span>
3883                  </li>
3884                  <li>
3885                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3886                    <span class="entry_type_enum_optional">[optional]</span>
3887                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3888used by camera device background auto-exposure,<wbr/> auto-white balance and
3889auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3890<p>Specifically,<wbr/> the 3A routines are locked to the last
3891values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3892USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3893collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3894discarded by the camera device.<wbr/></p></span>
3895                  </li>
3896                </ul>
3897
3898            </td> <!-- entry_type -->
3899
3900            <td class="entry_description">
3901              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3902routines.<wbr/></p>
3903            </td>
3904
3905            <td class="entry_units">
3906            </td>
3907
3908            <td class="entry_range">
3909              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3910            </td>
3911
3912            <td class="entry_hal_version">
3913              <p>3.<wbr/>2</p>
3914            </td>
3915
3916            <td class="entry_tags">
3917              <ul class="entry_tags">
3918                  <li><a href="#tag_BC">BC</a></li>
3919              </ul>
3920            </td>
3921
3922          </tr>
3923          <tr class="entries_header">
3924            <th class="th_details" colspan="6">Details</th>
3925          </tr>
3926          <tr class="entry_cont">
3927            <td class="entry_details" colspan="6">
3928              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3929by the camera device is disabled.<wbr/> The application must set the fields for
3930capture parameters itself.<wbr/></p>
3931<p>When set to AUTO,<wbr/> the individual algorithm controls in
3932android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
3933<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3934android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3935implements one of the scene mode settings (such as ACTION,<wbr/>
3936SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
39373A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3938<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3939is that this frame will not be used by camera device background 3A statistics
3940update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3941where the application doesn't want a 3A manual control capture to affect
3942the subsequent auto 3A capture results.<wbr/></p>
3943            </td>
3944          </tr>
3945
3946
3947          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3948           <!-- end of entry -->
3949
3950
3951          <tr class="entry" id="controls_android.control.sceneMode">
3952            <td class="entry_name
3953             " rowspan="5">
3954              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3955            </td>
3956            <td class="entry_type">
3957                <span class="entry_type_name entry_type_name_enum">byte</span>
3958
3959              <span class="entry_type_visibility"> [public]</span>
3960
3961
3962              <span class="entry_type_hwlevel">[legacy] </span>
3963
3964
3965
3966                <ul class="entry_type_enum">
3967                  <li>
3968                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3969                    <span class="entry_type_enum_value">0</span>
3970                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3971                  </li>
3972                  <li>
3973                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3974                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3975detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3976auto-exposure routines.<wbr/></p>
3977<p>If face detection statistics are disabled
3978(i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
3979this should still operate correctly (but will not return
3980face detection statistics to the framework).<wbr/></p>
3981<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3982<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
3983remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3984                  </li>
3985                  <li>
3986                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
3987                    <span class="entry_type_enum_optional">[optional]</span>
3988                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3989<p>Similar to SPORTS.<wbr/></p></span>
3990                  </li>
3991                  <li>
3992                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3993                    <span class="entry_type_enum_optional">[optional]</span>
3994                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3995                  </li>
3996                  <li>
3997                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3998                    <span class="entry_type_enum_optional">[optional]</span>
3999                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4000                  </li>
4001                  <li>
4002                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4003                    <span class="entry_type_enum_optional">[optional]</span>
4004                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4005                  </li>
4006                  <li>
4007                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4008                    <span class="entry_type_enum_optional">[optional]</span>
4009                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4010settings.<wbr/></p></span>
4011                  </li>
4012                  <li>
4013                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4014                    <span class="entry_type_enum_optional">[optional]</span>
4015                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4016remain off.<wbr/></p></span>
4017                  </li>
4018                  <li>
4019                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
4020                    <span class="entry_type_enum_optional">[optional]</span>
4021                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4022                  </li>
4023                  <li>
4024                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
4025                    <span class="entry_type_enum_optional">[optional]</span>
4026                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4027                  </li>
4028                  <li>
4029                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4030                    <span class="entry_type_enum_optional">[optional]</span>
4031                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4032                  </li>
4033                  <li>
4034                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4035                    <span class="entry_type_enum_optional">[optional]</span>
4036                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4037device motion (for example: due to hand shake).<wbr/></p></span>
4038                  </li>
4039                  <li>
4040                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4041                    <span class="entry_type_enum_optional">[optional]</span>
4042                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4043                  </li>
4044                  <li>
4045                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4046                    <span class="entry_type_enum_optional">[optional]</span>
4047                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4048<p>Similar to ACTION.<wbr/></p></span>
4049                  </li>
4050                  <li>
4051                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
4052                    <span class="entry_type_enum_optional">[optional]</span>
4053                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4054people.<wbr/></p></span>
4055                  </li>
4056                  <li>
4057                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4058                    <span class="entry_type_enum_optional">[optional]</span>
4059                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4060is a flame.<wbr/></p></span>
4061                  </li>
4062                  <li>
4063                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4064                    <span class="entry_type_enum_optional">[optional]</span>
4065                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4066for use by camera applications that wish to read the
4067barcode value.<wbr/></p></span>
4068                  </li>
4069                  <li>
4070                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4071                    <span class="entry_type_enum_deprecated">[deprecated]</span>
4072                    <span class="entry_type_enum_optional">[optional]</span>
4073                    <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
4074and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4075for high speed video recording.<wbr/></p>
4076<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4077<p>The supported high speed video sizes and fps ranges are specified in
4078<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4079output frame rates,<wbr/> the application is only allowed to select video size
4080and fps range combinations listed in this static metadata.<wbr/> The fps range
4081can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4082<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4083ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4084controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4085and post-processing parameters is possible.<wbr/> All other controls operate the
4086same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4087android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4088<ul>
4089<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4090<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4091<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4092<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4093<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4094<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4095<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4096<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4097<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4098<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4099</ul>
4100<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4101<ul>
4102<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
4103<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4104<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4105<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4106</ul>
4107<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4108be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4109the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4110the application need check if the video encoder is capable of supporting the
4111high frame rate for a given video size,<wbr/> or it will end up with lower recording
4112frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4113rate will be bounded by the screen refresh rate.<wbr/></p>
4114<p>The camera device will only support up to 2 output high speed streams
4115(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4116in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4117<ul>
4118<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4119format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4120min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
4121<li>The stream sizes are selected from the sizes reported by
4122<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4123<li>No processed non-stalling or raw streams are configured.<wbr/></li>
4124</ul>
4125<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4126<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
4127the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4128and the returned capture result metadata will give the fps range choosen
4129by the camera device.<wbr/></p>
4130<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4131reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4132the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4133                  </li>
4134                  <li>
4135                    <span class="entry_type_enum_name">HDR (v3.2)</span>
4136                    <span class="entry_type_enum_optional">[optional]</span>
4137                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4138<p>In this scene mode,<wbr/> the camera device captures images
4139that keep a larger range of scene illumination levels
4140visible in the final image.<wbr/> For example,<wbr/> when taking a
4141picture of a object in front of a bright window,<wbr/> both
4142the object and the scene through the window may be
4143visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4144one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4145HDR mode generally takes much longer to capture a single
4146image,<wbr/> has no user control,<wbr/> and may have other artifacts
4147depending on the HDR method used.<wbr/></p>
4148<p>Therefore,<wbr/> HDR captures operate at a much slower rate
4149than regular captures.<wbr/></p>
4150<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4151is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4152STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4153using a high dynamic range capture technique.<wbr/>  On LEGACY
4154devices,<wbr/> captures that target a JPEG-format output will
4155be captured with HDR,<wbr/> and the capture intent is not
4156relevant.<wbr/></p>
4157<p>The HDR capture may involve the device capturing a burst
4158of images internally and combining them into one,<wbr/> or it
4159may involve the device using specialized high dynamic
4160range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4161produced in response to a capture request submitted
4162while in HDR mode.<wbr/></p>
4163<p>Since substantial post-processing is generally needed to
4164produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4165outputs are supported for LIMITED/<wbr/>FULL device HDR
4166captures,<wbr/> and only JPEG outputs are supported for LEGACY
4167HDR captures.<wbr/> Using a RAW output for HDR capture is not
4168supported.<wbr/></p>
4169<p>Some devices may also support always-on HDR,<wbr/> which
4170applies HDR processing at full frame rate.<wbr/>  For these
4171devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4172produce an HDR output with no frame rate impact compared
4173to normal operation,<wbr/> though the quality may be lower
4174than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4175<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4176or capture intents,<wbr/> the images captured will be as if
4177the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4178                  </li>
4179                  <li>
4180                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4181                    <span class="entry_type_enum_optional">[optional]</span>
4182                    <span class="entry_type_enum_hidden">[hidden]</span>
4183                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4184device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4185under low light conditions.<wbr/></p>
4186<p>The camera device may be tuned to expose the images in a reduced
4187sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4188if 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/>
4189the camera device auto-exposure routine tuning process may limit the actual
4190exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4191exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4192low light may be under-exposed when the sensor max exposure time (bounded by the
4193<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
4194ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4195camera device auto-exposure routine to increase the sensitivity up to the max
4196sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
4197dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4198compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4199recommended that the application only use this scene mode when it is capable of
4200reducing the noise level of the captured images.<wbr/></p>
4201<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4202<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4203remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4204                  </li>
4205                  <li>
4206                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4207                    <span class="entry_type_enum_optional">[optional]</span>
4208                    <span class="entry_type_enum_hidden">[hidden]</span>
4209                    <span class="entry_type_enum_value">100</span>
4210                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4211<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4212customized scene modes.<wbr/></p></span>
4213                  </li>
4214                  <li>
4215                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4216                    <span class="entry_type_enum_optional">[optional]</span>
4217                    <span class="entry_type_enum_hidden">[hidden]</span>
4218                    <span class="entry_type_enum_value">127</span>
4219                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4220<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4221customized scene modes.<wbr/></p></span>
4222                  </li>
4223                </ul>
4224
4225            </td> <!-- entry_type -->
4226
4227            <td class="entry_description">
4228              <p>Control for which scene mode is currently active.<wbr/></p>
4229            </td>
4230
4231            <td class="entry_units">
4232            </td>
4233
4234            <td class="entry_range">
4235              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4236            </td>
4237
4238            <td class="entry_hal_version">
4239              <p>3.<wbr/>2</p>
4240            </td>
4241
4242            <td class="entry_tags">
4243              <ul class="entry_tags">
4244                  <li><a href="#tag_BC">BC</a></li>
4245              </ul>
4246            </td>
4247
4248          </tr>
4249          <tr class="entries_header">
4250            <th class="th_details" colspan="6">Details</th>
4251          </tr>
4252          <tr class="entry_cont">
4253            <td class="entry_details" colspan="6">
4254              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4255capture settings.<wbr/></p>
4256<p>This is the mode that that is active when
4257<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4258disable <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>
4259while in use.<wbr/></p>
4260<p>The interpretation and implementation of these scene modes is left
4261to the implementor of the camera device.<wbr/> Their behavior will not be
4262consistent across all devices,<wbr/> and any given device may only implement
4263a subset of these modes.<wbr/></p>
4264            </td>
4265          </tr>
4266
4267          <tr class="entries_header">
4268            <th class="th_details" colspan="6">HAL Implementation Details</th>
4269          </tr>
4270          <tr class="entry_cont">
4271            <td class="entry_details" colspan="6">
4272              <p>HAL implementations that include scene modes are expected to provide
4273the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4274<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
4275<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4276<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the
4277HAL must list supported video size and fps range in
4278<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>  1280x720,<wbr/>
4279if the HAL has two different sensor configurations for normal streaming mode and high
4280speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4281HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4282HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4283<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4284capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4285            </td>
4286          </tr>
4287
4288          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4289           <!-- end of entry -->
4290
4291
4292          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4293            <td class="entry_name
4294             " rowspan="3">
4295              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4296            </td>
4297            <td class="entry_type">
4298                <span class="entry_type_name entry_type_name_enum">byte</span>
4299
4300              <span class="entry_type_visibility"> [public]</span>
4301
4302
4303              <span class="entry_type_hwlevel">[legacy] </span>
4304
4305
4306
4307                <ul class="entry_type_enum">
4308                  <li>
4309                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4310                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4311                  </li>
4312                  <li>
4313                    <span class="entry_type_enum_name">ON (v3.2)</span>
4314                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4315                  </li>
4316                </ul>
4317
4318            </td> <!-- entry_type -->
4319
4320            <td class="entry_description">
4321              <p>Whether video stabilization is
4322active.<wbr/></p>
4323            </td>
4324
4325            <td class="entry_units">
4326            </td>
4327
4328            <td class="entry_range">
4329            </td>
4330
4331            <td class="entry_hal_version">
4332              <p>3.<wbr/>2</p>
4333            </td>
4334
4335            <td class="entry_tags">
4336              <ul class="entry_tags">
4337                  <li><a href="#tag_BC">BC</a></li>
4338              </ul>
4339            </td>
4340
4341          </tr>
4342          <tr class="entries_header">
4343            <th class="th_details" colspan="6">Details</th>
4344          </tr>
4345          <tr class="entry_cont">
4346            <td class="entry_details" colspan="6">
4347              <p>Video stabilization automatically warps images from
4348the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4349<p>If enabled,<wbr/> video stabilization can modify the
4350<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4351<p>Switching between different video stabilization modes may take several
4352frames to initialize,<wbr/> the camera device will report the current mode
4353in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4354the video stabilization modes in the first several capture results may
4355still be "OFF",<wbr/> and it will become "ON" when the initialization is
4356done.<wbr/></p>
4357<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4358stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4359that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4360the recording resolution is less than or equal to 1920 x 1080 (width less than
4361or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4362frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4363<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4364OFF if the recording output is not stabilized,<wbr/> or if there are no output
4365Surface types that can be stabilized.<wbr/></p>
4366<p>If a camera device supports both this mode and OIS
4367(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4368produce undesirable interaction,<wbr/> so it is recommended not to enable
4369both at the same time.<wbr/></p>
4370            </td>
4371          </tr>
4372
4373
4374          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4375           <!-- end of entry -->
4376
4377
4378          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4379            <td class="entry_name
4380             " rowspan="3">
4381              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4382            </td>
4383            <td class="entry_type">
4384                <span class="entry_type_name">int32</span>
4385
4386              <span class="entry_type_visibility"> [public]</span>
4387
4388
4389
4390
4391
4392
4393            </td> <!-- entry_type -->
4394
4395            <td class="entry_description">
4396              <p>The amount of additional sensitivity boost applied to output images
4397after RAW sensor data is captured.<wbr/></p>
4398            </td>
4399
4400            <td class="entry_units">
4401              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4402            </td>
4403
4404            <td class="entry_range">
4405              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4406            </td>
4407
4408            <td class="entry_hal_version">
4409              <p>3.<wbr/>2</p>
4410            </td>
4411
4412            <td class="entry_tags">
4413            </td>
4414
4415          </tr>
4416          <tr class="entries_header">
4417            <th class="th_details" colspan="6">Details</th>
4418          </tr>
4419          <tr class="entry_cont">
4420            <td class="entry_details" colspan="6">
4421              <p>Some camera devices support additional digital sensitivity boosting in the
4422camera processing pipeline after sensor RAW image is captured.<wbr/>
4423Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4424have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4425<p>This key will be <code>null</code> for devices that do not support any RAW format
4426outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4427present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4428list <code>100</code> in this key.<wbr/></p>
4429<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4430boost to the nearest supported value.<wbr/>
4431The final boost value used will be available in the output capture result.<wbr/></p>
4432<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4433of such device will have the total sensitivity of
4434<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
4435The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4436<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
4437OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4438            </td>
4439          </tr>
4440
4441
4442          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4443           <!-- end of entry -->
4444
4445
4446          <tr class="entry" id="controls_android.control.enableZsl">
4447            <td class="entry_name
4448             " rowspan="5">
4449              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4450            </td>
4451            <td class="entry_type">
4452                <span class="entry_type_name entry_type_name_enum">byte</span>
4453
4454              <span class="entry_type_visibility"> [public as boolean]</span>
4455
4456
4457
4458
4459
4460                <ul class="entry_type_enum">
4461                  <li>
4462                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
4463                    <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
4464after previous requests.<wbr/></p></span>
4465                  </li>
4466                  <li>
4467                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
4468                    <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
4469captured before previous requests.<wbr/></p></span>
4470                  </li>
4471                </ul>
4472
4473            </td> <!-- entry_type -->
4474
4475            <td class="entry_description">
4476              <p>Allow camera device to enable zero-shutter-lag mode for requests with
4477<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4478            </td>
4479
4480            <td class="entry_units">
4481            </td>
4482
4483            <td class="entry_range">
4484            </td>
4485
4486            <td class="entry_hal_version">
4487              <p>3.<wbr/>2</p>
4488            </td>
4489
4490            <td class="entry_tags">
4491            </td>
4492
4493          </tr>
4494          <tr class="entries_header">
4495            <th class="th_details" colspan="6">Details</th>
4496          </tr>
4497          <tr class="entry_cont">
4498            <td class="entry_details" colspan="6">
4499              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4500STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4501produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4502<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4503Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4504compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4505capture intents.<wbr/></p>
4506<p>For example,<wbr/> when requests are submitted in the following order:
4507  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4508  Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
4509<p>The output images for request B may have contents captured before the output images for
4510request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4511request A.<wbr/></p>
4512<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4513the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4514<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4515TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4516<code>false</code> if present.<wbr/></p>
4517<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4518capture templates is always <code>false</code> if present.<wbr/></p>
4519<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4520            </td>
4521          </tr>
4522
4523          <tr class="entries_header">
4524            <th class="th_details" colspan="6">HAL Implementation Details</th>
4525          </tr>
4526          <tr class="entry_cont">
4527            <td class="entry_details" colspan="6">
4528              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4529capture intent.<wbr/></p>
4530            </td>
4531          </tr>
4532
4533          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4534           <!-- end of entry -->
4535
4536
4537
4538      <!-- end of kind -->
4539      </tbody>
4540      <tr><td colspan="7" class="kind">static</td></tr>
4541
4542      <thead class="entries_header">
4543        <tr>
4544          <th class="th_name">Property Name</th>
4545          <th class="th_type">Type</th>
4546          <th class="th_description">Description</th>
4547          <th class="th_units">Units</th>
4548          <th class="th_range">Range</th>
4549          <th class="th_hal_version">Initial HIDL HAL version</th>
4550          <th class="th_tags">Tags</th>
4551        </tr>
4552      </thead>
4553
4554      <tbody>
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4566            <td class="entry_name
4567             " rowspan="3">
4568              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4569            </td>
4570            <td class="entry_type">
4571                <span class="entry_type_name">byte</span>
4572                <span class="entry_type_container">x</span>
4573
4574                <span class="entry_type_array">
4575                  n
4576                </span>
4577              <span class="entry_type_visibility"> [public as enumList]</span>
4578
4579
4580              <span class="entry_type_hwlevel">[legacy] </span>
4581
4582
4583                <div class="entry_type_notes">list of enums</div>
4584
4585
4586            </td> <!-- entry_type -->
4587
4588            <td class="entry_description">
4589              <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
4590supported by this camera device.<wbr/></p>
4591            </td>
4592
4593            <td class="entry_units">
4594            </td>
4595
4596            <td class="entry_range">
4597              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4598            </td>
4599
4600            <td class="entry_hal_version">
4601              <p>3.<wbr/>2</p>
4602            </td>
4603
4604            <td class="entry_tags">
4605              <ul class="entry_tags">
4606                  <li><a href="#tag_BC">BC</a></li>
4607              </ul>
4608            </td>
4609
4610          </tr>
4611          <tr class="entries_header">
4612            <th class="th_details" colspan="6">Details</th>
4613          </tr>
4614          <tr class="entry_cont">
4615            <td class="entry_details" colspan="6">
4616              <p>Not all of the auto-exposure anti-banding modes may be
4617supported by a given camera device.<wbr/> This field lists the
4618valid anti-banding modes that the application may request
4619for this camera device with the
4620<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4621            </td>
4622          </tr>
4623
4624
4625          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4626           <!-- end of entry -->
4627
4628
4629          <tr class="entry" id="static_android.control.aeAvailableModes">
4630            <td class="entry_name
4631             " rowspan="3">
4632              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4633            </td>
4634            <td class="entry_type">
4635                <span class="entry_type_name">byte</span>
4636                <span class="entry_type_container">x</span>
4637
4638                <span class="entry_type_array">
4639                  n
4640                </span>
4641              <span class="entry_type_visibility"> [public as enumList]</span>
4642
4643
4644              <span class="entry_type_hwlevel">[legacy] </span>
4645
4646
4647                <div class="entry_type_notes">list of enums</div>
4648
4649
4650            </td> <!-- entry_type -->
4651
4652            <td class="entry_description">
4653              <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera
4654device.<wbr/></p>
4655            </td>
4656
4657            <td class="entry_units">
4658            </td>
4659
4660            <td class="entry_range">
4661              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4662            </td>
4663
4664            <td class="entry_hal_version">
4665              <p>3.<wbr/>2</p>
4666            </td>
4667
4668            <td class="entry_tags">
4669              <ul class="entry_tags">
4670                  <li><a href="#tag_BC">BC</a></li>
4671              </ul>
4672            </td>
4673
4674          </tr>
4675          <tr class="entries_header">
4676            <th class="th_details" colspan="6">Details</th>
4677          </tr>
4678          <tr class="entry_cont">
4679            <td class="entry_details" colspan="6">
4680              <p>Not all the auto-exposure modes may be supported by a
4681given camera device,<wbr/> especially if no flash unit is
4682available.<wbr/> This entry lists the valid modes for
4683<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4684<p>All camera devices support ON,<wbr/> and all camera devices with flash
4685units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4686<p>FULL mode camera devices always support OFF mode,<wbr/>
4687which enables application control of camera exposure time,<wbr/>
4688sensitivity,<wbr/> and frame duration.<wbr/></p>
4689<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4690LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4691capability.<wbr/></p>
4692            </td>
4693          </tr>
4694
4695
4696          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4697           <!-- end of entry -->
4698
4699
4700          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4701            <td class="entry_name
4702             " rowspan="3">
4703              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4704            </td>
4705            <td class="entry_type">
4706                <span class="entry_type_name">int32</span>
4707                <span class="entry_type_container">x</span>
4708
4709                <span class="entry_type_array">
4710                  2 x n
4711                </span>
4712              <span class="entry_type_visibility"> [public as rangeInt]</span>
4713
4714
4715              <span class="entry_type_hwlevel">[legacy] </span>
4716
4717
4718                <div class="entry_type_notes">list of pairs of frame rates</div>
4719
4720
4721            </td> <!-- entry_type -->
4722
4723            <td class="entry_description">
4724              <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by
4725this camera device.<wbr/></p>
4726            </td>
4727
4728            <td class="entry_units">
4729              Frames per second (FPS)
4730            </td>
4731
4732            <td class="entry_range">
4733            </td>
4734
4735            <td class="entry_hal_version">
4736              <p>3.<wbr/>2</p>
4737            </td>
4738
4739            <td class="entry_tags">
4740              <ul class="entry_tags">
4741                  <li><a href="#tag_BC">BC</a></li>
4742              </ul>
4743            </td>
4744
4745          </tr>
4746          <tr class="entries_header">
4747            <th class="th_details" colspan="6">Details</th>
4748          </tr>
4749          <tr class="entry_cont">
4750            <td class="entry_details" colspan="6">
4751              <p>For devices at the LEGACY level or above:</p>
4752<ul>
4753<li>
4754<p>For constant-framerate recording,<wbr/> for each normal
4755<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4756<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4757<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4758the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4759<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4760supported by the device and has
4761<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4762always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4763</li>
4764<li>
4765<p>Also,<wbr/> a camera device must either not support any
4766<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4767or support at least one
4768normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4769<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4770</li>
4771</ul>
4772<p>For devices at the LIMITED level or above:</p>
4773<ul>
4774<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4775and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4776maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4777</ul>
4778            </td>
4779          </tr>
4780
4781
4782          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4783           <!-- end of entry -->
4784
4785
4786          <tr class="entry" id="static_android.control.aeCompensationRange">
4787            <td class="entry_name
4788             " rowspan="1">
4789              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4790            </td>
4791            <td class="entry_type">
4792                <span class="entry_type_name">int32</span>
4793                <span class="entry_type_container">x</span>
4794
4795                <span class="entry_type_array">
4796                  2
4797                </span>
4798              <span class="entry_type_visibility"> [public as rangeInt]</span>
4799
4800
4801              <span class="entry_type_hwlevel">[legacy] </span>
4802
4803
4804
4805
4806            </td> <!-- entry_type -->
4807
4808            <td class="entry_description">
4809              <p>Maximum and minimum exposure compensation values for
4810<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/>
4811that are supported by this camera device.<wbr/></p>
4812            </td>
4813
4814            <td class="entry_units">
4815            </td>
4816
4817            <td class="entry_range">
4818              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4819<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4820compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4821<p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
4822<p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &gt;= 2 EV</code></p>
4823<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4824            </td>
4825
4826            <td class="entry_hal_version">
4827              <p>3.<wbr/>2</p>
4828            </td>
4829
4830            <td class="entry_tags">
4831              <ul class="entry_tags">
4832                  <li><a href="#tag_BC">BC</a></li>
4833              </ul>
4834            </td>
4835
4836          </tr>
4837
4838
4839          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4840           <!-- end of entry -->
4841
4842
4843          <tr class="entry" id="static_android.control.aeCompensationStep">
4844            <td class="entry_name
4845             " rowspan="5">
4846              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4847            </td>
4848            <td class="entry_type">
4849                <span class="entry_type_name">rational</span>
4850
4851              <span class="entry_type_visibility"> [public]</span>
4852
4853
4854              <span class="entry_type_hwlevel">[legacy] </span>
4855
4856
4857
4858
4859            </td> <!-- entry_type -->
4860
4861            <td class="entry_description">
4862              <p>Smallest step by which the exposure compensation
4863can be changed.<wbr/></p>
4864            </td>
4865
4866            <td class="entry_units">
4867              Exposure Value (EV)
4868            </td>
4869
4870            <td class="entry_range">
4871            </td>
4872
4873            <td class="entry_hal_version">
4874              <p>3.<wbr/>2</p>
4875            </td>
4876
4877            <td class="entry_tags">
4878              <ul class="entry_tags">
4879                  <li><a href="#tag_BC">BC</a></li>
4880              </ul>
4881            </td>
4882
4883          </tr>
4884          <tr class="entries_header">
4885            <th class="th_details" colspan="6">Details</th>
4886          </tr>
4887          <tr class="entry_cont">
4888            <td class="entry_details" colspan="6">
4889              <p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has
4890a 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
4891that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4892<p>One unit of EV compensation changes the brightness of the captured image by a factor
4893of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4894            </td>
4895          </tr>
4896
4897          <tr class="entries_header">
4898            <th class="th_details" colspan="6">HAL Implementation Details</th>
4899          </tr>
4900          <tr class="entry_cont">
4901            <td class="entry_details" colspan="6">
4902              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4903            </td>
4904          </tr>
4905
4906          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4907           <!-- end of entry -->
4908
4909
4910          <tr class="entry" id="static_android.control.afAvailableModes">
4911            <td class="entry_name
4912             " rowspan="3">
4913              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4914            </td>
4915            <td class="entry_type">
4916                <span class="entry_type_name">byte</span>
4917                <span class="entry_type_container">x</span>
4918
4919                <span class="entry_type_array">
4920                  n
4921                </span>
4922              <span class="entry_type_visibility"> [public as enumList]</span>
4923
4924
4925              <span class="entry_type_hwlevel">[legacy] </span>
4926
4927
4928                <div class="entry_type_notes">List of enums</div>
4929
4930
4931            </td> <!-- entry_type -->
4932
4933            <td class="entry_description">
4934              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4935supported by this camera device.<wbr/></p>
4936            </td>
4937
4938            <td class="entry_units">
4939            </td>
4940
4941            <td class="entry_range">
4942              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4943            </td>
4944
4945            <td class="entry_hal_version">
4946              <p>3.<wbr/>2</p>
4947            </td>
4948
4949            <td class="entry_tags">
4950              <ul class="entry_tags">
4951                  <li><a href="#tag_BC">BC</a></li>
4952              </ul>
4953            </td>
4954
4955          </tr>
4956          <tr class="entries_header">
4957            <th class="th_details" colspan="6">Details</th>
4958          </tr>
4959          <tr class="entry_cont">
4960            <td class="entry_details" colspan="6">
4961              <p>Not all the auto-focus modes may be supported by a
4962given camera device.<wbr/> This entry lists the valid modes for
4963<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4964<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4965camera devices with adjustable focuser units
4966(<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>) will support AUTO mode.<wbr/></p>
4967<p>LEGACY devices will support OFF mode only if they support
4968focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4969<code>0.<wbr/>0f</code>).<wbr/></p>
4970            </td>
4971          </tr>
4972
4973
4974          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4975           <!-- end of entry -->
4976
4977
4978          <tr class="entry" id="static_android.control.availableEffects">
4979            <td class="entry_name
4980             " rowspan="3">
4981              android.<wbr/>control.<wbr/>available<wbr/>Effects
4982            </td>
4983            <td class="entry_type">
4984                <span class="entry_type_name">byte</span>
4985                <span class="entry_type_container">x</span>
4986
4987                <span class="entry_type_array">
4988                  n
4989                </span>
4990              <span class="entry_type_visibility"> [public as enumList]</span>
4991
4992
4993              <span class="entry_type_hwlevel">[legacy] </span>
4994
4995
4996                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4997
4998
4999            </td> <!-- entry_type -->
5000
5001            <td class="entry_description">
5002              <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that are supported by this camera
5003device.<wbr/></p>
5004            </td>
5005
5006            <td class="entry_units">
5007            </td>
5008
5009            <td class="entry_range">
5010              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
5011            </td>
5012
5013            <td class="entry_hal_version">
5014              <p>3.<wbr/>2</p>
5015            </td>
5016
5017            <td class="entry_tags">
5018              <ul class="entry_tags">
5019                  <li><a href="#tag_BC">BC</a></li>
5020              </ul>
5021            </td>
5022
5023          </tr>
5024          <tr class="entries_header">
5025            <th class="th_details" colspan="6">Details</th>
5026          </tr>
5027          <tr class="entry_cont">
5028            <td class="entry_details" colspan="6">
5029              <p>This list contains the color effect modes that can be applied to
5030images produced by the camera device.<wbr/>
5031Implementations are not expected to be consistent across all devices.<wbr/>
5032If no color effect modes are available for a device,<wbr/> this will only list
5033OFF.<wbr/></p>
5034<p>A color effect will only be applied if
5035<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
5036<p>This control has no effect on the operation of other control routines such
5037as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5038            </td>
5039          </tr>
5040
5041
5042          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5043           <!-- end of entry -->
5044
5045
5046          <tr class="entry" id="static_android.control.availableSceneModes">
5047            <td class="entry_name
5048             " rowspan="3">
5049              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5050            </td>
5051            <td class="entry_type">
5052                <span class="entry_type_name">byte</span>
5053                <span class="entry_type_container">x</span>
5054
5055                <span class="entry_type_array">
5056                  n
5057                </span>
5058              <span class="entry_type_visibility"> [public as enumList]</span>
5059
5060
5061              <span class="entry_type_hwlevel">[legacy] </span>
5062
5063
5064                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5065
5066
5067            </td> <!-- entry_type -->
5068
5069            <td class="entry_description">
5070              <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> that are supported by this camera
5071device.<wbr/></p>
5072            </td>
5073
5074            <td class="entry_units">
5075            </td>
5076
5077            <td class="entry_range">
5078              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5079            </td>
5080
5081            <td class="entry_hal_version">
5082              <p>3.<wbr/>2</p>
5083            </td>
5084
5085            <td class="entry_tags">
5086              <ul class="entry_tags">
5087                  <li><a href="#tag_BC">BC</a></li>
5088              </ul>
5089            </td>
5090
5091          </tr>
5092          <tr class="entries_header">
5093            <th class="th_details" colspan="6">Details</th>
5094          </tr>
5095          <tr class="entry_cont">
5096            <td class="entry_details" colspan="6">
5097              <p>This list contains scene modes that can be set for the camera device.<wbr/>
5098Only scene modes that have been fully implemented for the
5099camera device may be included here.<wbr/> Implementations are not expected
5100to be consistent across all devices.<wbr/></p>
5101<p>If no scene modes are supported by the camera device,<wbr/> this
5102will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5103<p>FACE_<wbr/>PRIORITY is always listed if face detection is
5104supported (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;
51050</code>).<wbr/></p>
5106            </td>
5107          </tr>
5108
5109
5110          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5111           <!-- end of entry -->
5112
5113
5114          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5115            <td class="entry_name
5116             " rowspan="3">
5117              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5118            </td>
5119            <td class="entry_type">
5120                <span class="entry_type_name">byte</span>
5121                <span class="entry_type_container">x</span>
5122
5123                <span class="entry_type_array">
5124                  n
5125                </span>
5126              <span class="entry_type_visibility"> [public as enumList]</span>
5127
5128
5129              <span class="entry_type_hwlevel">[legacy] </span>
5130
5131
5132                <div class="entry_type_notes">List of enums.<wbr/></div>
5133
5134
5135            </td> <!-- entry_type -->
5136
5137            <td class="entry_description">
5138              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5139that are supported by this camera device.<wbr/></p>
5140            </td>
5141
5142            <td class="entry_units">
5143            </td>
5144
5145            <td class="entry_range">
5146              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5147            </td>
5148
5149            <td class="entry_hal_version">
5150              <p>3.<wbr/>2</p>
5151            </td>
5152
5153            <td class="entry_tags">
5154              <ul class="entry_tags">
5155                  <li><a href="#tag_BC">BC</a></li>
5156              </ul>
5157            </td>
5158
5159          </tr>
5160          <tr class="entries_header">
5161            <th class="th_details" colspan="6">Details</th>
5162          </tr>
5163          <tr class="entry_cont">
5164            <td class="entry_details" colspan="6">
5165              <p>OFF will always be listed.<wbr/></p>
5166            </td>
5167          </tr>
5168
5169
5170          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5171           <!-- end of entry -->
5172
5173
5174          <tr class="entry" id="static_android.control.awbAvailableModes">
5175            <td class="entry_name
5176             " rowspan="3">
5177              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5178            </td>
5179            <td class="entry_type">
5180                <span class="entry_type_name">byte</span>
5181                <span class="entry_type_container">x</span>
5182
5183                <span class="entry_type_array">
5184                  n
5185                </span>
5186              <span class="entry_type_visibility"> [public as enumList]</span>
5187
5188
5189              <span class="entry_type_hwlevel">[legacy] </span>
5190
5191
5192                <div class="entry_type_notes">List of enums</div>
5193
5194
5195            </td> <!-- entry_type -->
5196
5197            <td class="entry_description">
5198              <p>List of auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> that are supported by this
5199camera device.<wbr/></p>
5200            </td>
5201
5202            <td class="entry_units">
5203            </td>
5204
5205            <td class="entry_range">
5206              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5207            </td>
5208
5209            <td class="entry_hal_version">
5210              <p>3.<wbr/>2</p>
5211            </td>
5212
5213            <td class="entry_tags">
5214              <ul class="entry_tags">
5215                  <li><a href="#tag_BC">BC</a></li>
5216              </ul>
5217            </td>
5218
5219          </tr>
5220          <tr class="entries_header">
5221            <th class="th_details" colspan="6">Details</th>
5222          </tr>
5223          <tr class="entry_cont">
5224            <td class="entry_details" colspan="6">
5225              <p>Not all the auto-white-balance modes may be supported by a
5226given camera device.<wbr/> This entry lists the valid modes for
5227<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5228<p>All camera devices will support ON mode.<wbr/></p>
5229<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5230mode,<wbr/> which enables application control of white balance,<wbr/> by using
5231<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL
5232mode camera devices.<wbr/></p>
5233            </td>
5234          </tr>
5235
5236
5237          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5238           <!-- end of entry -->
5239
5240
5241          <tr class="entry" id="static_android.control.maxRegions">
5242            <td class="entry_name
5243             " rowspan="1">
5244              android.<wbr/>control.<wbr/>max<wbr/>Regions
5245            </td>
5246            <td class="entry_type">
5247                <span class="entry_type_name">int32</span>
5248                <span class="entry_type_container">x</span>
5249
5250                <span class="entry_type_array">
5251                  3
5252                </span>
5253              <span class="entry_type_visibility"> [ndk_public]</span>
5254
5255
5256              <span class="entry_type_hwlevel">[legacy] </span>
5257
5258
5259
5260
5261            </td> <!-- entry_type -->
5262
5263            <td class="entry_description">
5264              <p>List of the maximum number of regions that can be used for metering in
5265auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5266this corresponds to the the maximum number of elements in
5267<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/>
5268and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5269            </td>
5270
5271            <td class="entry_units">
5272            </td>
5273
5274            <td class="entry_range">
5275              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5276this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5277<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5278            </td>
5279
5280            <td class="entry_hal_version">
5281              <p>3.<wbr/>2</p>
5282            </td>
5283
5284            <td class="entry_tags">
5285              <ul class="entry_tags">
5286                  <li><a href="#tag_BC">BC</a></li>
5287              </ul>
5288            </td>
5289
5290          </tr>
5291
5292
5293          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5294           <!-- end of entry -->
5295
5296
5297          <tr class="entry" id="static_android.control.maxRegionsAe">
5298            <td class="entry_name
5299             " rowspan="5">
5300              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5301            </td>
5302            <td class="entry_type">
5303                <span class="entry_type_name">int32</span>
5304
5305              <span class="entry_type_visibility"> [java_public]</span>
5306
5307              <span class="entry_type_synthetic">[synthetic] </span>
5308
5309              <span class="entry_type_hwlevel">[legacy] </span>
5310
5311
5312
5313
5314            </td> <!-- entry_type -->
5315
5316            <td class="entry_description">
5317              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5318routine.<wbr/></p>
5319            </td>
5320
5321            <td class="entry_units">
5322            </td>
5323
5324            <td class="entry_range">
5325              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5326value will be &gt;= 1.<wbr/></p>
5327            </td>
5328
5329            <td class="entry_hal_version">
5330              <p>3.<wbr/>2</p>
5331            </td>
5332
5333            <td class="entry_tags">
5334            </td>
5335
5336          </tr>
5337          <tr class="entries_header">
5338            <th class="th_details" colspan="6">Details</th>
5339          </tr>
5340          <tr class="entry_cont">
5341            <td class="entry_details" colspan="6">
5342              <p>This corresponds to the the maximum allowed number of elements in
5343<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5344            </td>
5345          </tr>
5346
5347          <tr class="entries_header">
5348            <th class="th_details" colspan="6">HAL Implementation Details</th>
5349          </tr>
5350          <tr class="entry_cont">
5351            <td class="entry_details" colspan="6">
5352              <p>This entry is private to the framework.<wbr/> Fill in
5353maxRegions to have this entry be automatically populated.<wbr/></p>
5354            </td>
5355          </tr>
5356
5357          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5358           <!-- end of entry -->
5359
5360
5361          <tr class="entry" id="static_android.control.maxRegionsAwb">
5362            <td class="entry_name
5363             " rowspan="5">
5364              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5365            </td>
5366            <td class="entry_type">
5367                <span class="entry_type_name">int32</span>
5368
5369              <span class="entry_type_visibility"> [java_public]</span>
5370
5371              <span class="entry_type_synthetic">[synthetic] </span>
5372
5373              <span class="entry_type_hwlevel">[legacy] </span>
5374
5375
5376
5377
5378            </td> <!-- entry_type -->
5379
5380            <td class="entry_description">
5381              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5382routine.<wbr/></p>
5383            </td>
5384
5385            <td class="entry_units">
5386            </td>
5387
5388            <td class="entry_range">
5389              <p>Value will be &gt;= 0.<wbr/></p>
5390            </td>
5391
5392            <td class="entry_hal_version">
5393              <p>3.<wbr/>2</p>
5394            </td>
5395
5396            <td class="entry_tags">
5397            </td>
5398
5399          </tr>
5400          <tr class="entries_header">
5401            <th class="th_details" colspan="6">Details</th>
5402          </tr>
5403          <tr class="entry_cont">
5404            <td class="entry_details" colspan="6">
5405              <p>This corresponds to the the maximum allowed number of elements in
5406<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5407            </td>
5408          </tr>
5409
5410          <tr class="entries_header">
5411            <th class="th_details" colspan="6">HAL Implementation Details</th>
5412          </tr>
5413          <tr class="entry_cont">
5414            <td class="entry_details" colspan="6">
5415              <p>This entry is private to the framework.<wbr/> Fill in
5416maxRegions to have this entry be automatically populated.<wbr/></p>
5417            </td>
5418          </tr>
5419
5420          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5421           <!-- end of entry -->
5422
5423
5424          <tr class="entry" id="static_android.control.maxRegionsAf">
5425            <td class="entry_name
5426             " rowspan="5">
5427              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5428            </td>
5429            <td class="entry_type">
5430                <span class="entry_type_name">int32</span>
5431
5432              <span class="entry_type_visibility"> [java_public]</span>
5433
5434              <span class="entry_type_synthetic">[synthetic] </span>
5435
5436              <span class="entry_type_hwlevel">[legacy] </span>
5437
5438
5439
5440
5441            </td> <!-- entry_type -->
5442
5443            <td class="entry_description">
5444              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5445            </td>
5446
5447            <td class="entry_units">
5448            </td>
5449
5450            <td class="entry_range">
5451              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5452value will be &gt;= 1.<wbr/></p>
5453            </td>
5454
5455            <td class="entry_hal_version">
5456              <p>3.<wbr/>2</p>
5457            </td>
5458
5459            <td class="entry_tags">
5460            </td>
5461
5462          </tr>
5463          <tr class="entries_header">
5464            <th class="th_details" colspan="6">Details</th>
5465          </tr>
5466          <tr class="entry_cont">
5467            <td class="entry_details" colspan="6">
5468              <p>This corresponds to the the maximum allowed number of elements in
5469<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5470            </td>
5471          </tr>
5472
5473          <tr class="entries_header">
5474            <th class="th_details" colspan="6">HAL Implementation Details</th>
5475          </tr>
5476          <tr class="entry_cont">
5477            <td class="entry_details" colspan="6">
5478              <p>This entry is private to the framework.<wbr/> Fill in
5479maxRegions to have this entry be automatically populated.<wbr/></p>
5480            </td>
5481          </tr>
5482
5483          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5484           <!-- end of entry -->
5485
5486
5487          <tr class="entry" id="static_android.control.sceneModeOverrides">
5488            <td class="entry_name
5489             " rowspan="5">
5490              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5491            </td>
5492            <td class="entry_type">
5493                <span class="entry_type_name">byte</span>
5494                <span class="entry_type_container">x</span>
5495
5496                <span class="entry_type_array">
5497                  3 x length(availableSceneModes)
5498                </span>
5499              <span class="entry_type_visibility"> [system]</span>
5500
5501
5502              <span class="entry_type_hwlevel">[limited] </span>
5503
5504
5505
5506
5507            </td> <!-- entry_type -->
5508
5509            <td class="entry_description">
5510              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5511settings to use with each available scene mode.<wbr/></p>
5512            </td>
5513
5514            <td class="entry_units">
5515            </td>
5516
5517            <td class="entry_range">
5518              <p>For each available scene mode,<wbr/> the list must contain three
5519entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5520<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values used
5521by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5522where aeMode has the lowest index position.<wbr/></p>
5523            </td>
5524
5525            <td class="entry_hal_version">
5526              <p>3.<wbr/>2</p>
5527            </td>
5528
5529            <td class="entry_tags">
5530              <ul class="entry_tags">
5531                  <li><a href="#tag_BC">BC</a></li>
5532              </ul>
5533            </td>
5534
5535          </tr>
5536          <tr class="entries_header">
5537            <th class="th_details" colspan="6">Details</th>
5538          </tr>
5539          <tr class="entry_cont">
5540            <td class="entry_details" colspan="6">
5541              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5542to 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/>
5543and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5544that scene mode.<wbr/></p>
5545<p>The order of this list matches that of availableSceneModes,<wbr/>
5546with 3 entries for each mode.<wbr/>  The overrides listed
5547for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5548since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5549<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values are
5550used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5551is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5552FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5553<p>For example,<wbr/> if availableSceneModes contains
5554<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5555expects sceneModeOverrides to have 9 entries formatted like:
5556<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5557ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5558            </td>
5559          </tr>
5560
5561          <tr class="entries_header">
5562            <th class="th_details" colspan="6">HAL Implementation Details</th>
5563          </tr>
5564          <tr class="entry_cont">
5565            <td class="entry_details" colspan="6">
5566              <p>To maintain backward compatibility,<wbr/> this list will be made available
5567in the static metadata of the camera service.<wbr/>  The camera service will
5568use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5569<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> when using a scene
5570mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5571            </td>
5572          </tr>
5573
5574          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5575           <!-- end of entry -->
5576
5577
5578          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5579            <td class="entry_name
5580             " rowspan="5">
5581              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5582            </td>
5583            <td class="entry_type">
5584                <span class="entry_type_name">int32</span>
5585                <span class="entry_type_container">x</span>
5586
5587                <span class="entry_type_array">
5588                  5 x n
5589                </span>
5590              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5591
5592
5593              <span class="entry_type_hwlevel">[limited] </span>
5594
5595
5596
5597
5598            </td> <!-- entry_type -->
5599
5600            <td class="entry_description">
5601              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5602supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
5603            </td>
5604
5605            <td class="entry_units">
5606            </td>
5607
5608            <td class="entry_range">
5609              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5610            </td>
5611
5612            <td class="entry_hal_version">
5613              <p>3.<wbr/>2</p>
5614            </td>
5615
5616            <td class="entry_tags">
5617              <ul class="entry_tags">
5618                  <li><a href="#tag_V1">V1</a></li>
5619              </ul>
5620            </td>
5621
5622          </tr>
5623          <tr class="entries_header">
5624            <th class="th_details" colspan="6">Details</th>
5625          </tr>
5626          <tr class="entry_cont">
5627            <td class="entry_details" colspan="6">
5628              <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
5629this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5630configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5631reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5632for processed non-stalling formats.<wbr/></p>
5633<p>For the high speed video use case,<wbr/> the application must
5634select the video size and fps range from this metadata to configure the recording and
5635preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5636to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5637configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5638by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5639recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5640must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5641must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5642<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5643<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5644to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5645multiple frames together and send to camera device for processing where the request
5646controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5647the max possible number of frames the camera device will group together for this high
5648speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5649recording request list by
5650<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5651The max batch size for each configuration will satisfy below conditions:</p>
5652<ul>
5653<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5654if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5655<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5656the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5657size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5658<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5659</ul>
5660<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5661in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5662<p>This fps ranges in this configuration list can only be used to create requests
5663that are submitted to a high speed camera capture session created by
5664<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5665The fps ranges reported in this metadata must not be used to setup capture requests for
5666normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5667            </td>
5668          </tr>
5669
5670          <tr class="entries_header">
5671            <th class="th_details" colspan="6">HAL Implementation Details</th>
5672          </tr>
5673          <tr class="entry_cont">
5674            <td class="entry_details" colspan="6">
5675              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5676<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5677Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5678of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5679<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5680sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5681usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5682stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5683the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5684the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5685For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5686[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5687do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5688recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5689values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5690values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5691switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5692            </td>
5693          </tr>
5694
5695          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5696           <!-- end of entry -->
5697
5698
5699          <tr class="entry" id="static_android.control.aeLockAvailable">
5700            <td class="entry_name
5701             " rowspan="3">
5702              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5703            </td>
5704            <td class="entry_type">
5705                <span class="entry_type_name entry_type_name_enum">byte</span>
5706
5707              <span class="entry_type_visibility"> [public as boolean]</span>
5708
5709
5710              <span class="entry_type_hwlevel">[legacy] </span>
5711
5712
5713
5714                <ul class="entry_type_enum">
5715                  <li>
5716                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5717                  </li>
5718                  <li>
5719                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5720                  </li>
5721                </ul>
5722
5723            </td> <!-- entry_type -->
5724
5725            <td class="entry_description">
5726              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5727            </td>
5728
5729            <td class="entry_units">
5730            </td>
5731
5732            <td class="entry_range">
5733            </td>
5734
5735            <td class="entry_hal_version">
5736              <p>3.<wbr/>2</p>
5737            </td>
5738
5739            <td class="entry_tags">
5740              <ul class="entry_tags">
5741                  <li><a href="#tag_BC">BC</a></li>
5742              </ul>
5743            </td>
5744
5745          </tr>
5746          <tr class="entries_header">
5747            <th class="th_details" colspan="6">Details</th>
5748          </tr>
5749          <tr class="entry_cont">
5750            <td class="entry_details" colspan="6">
5751              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5752list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5753            </td>
5754          </tr>
5755
5756
5757          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5758           <!-- end of entry -->
5759
5760
5761          <tr class="entry" id="static_android.control.awbLockAvailable">
5762            <td class="entry_name
5763             " rowspan="3">
5764              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5765            </td>
5766            <td class="entry_type">
5767                <span class="entry_type_name entry_type_name_enum">byte</span>
5768
5769              <span class="entry_type_visibility"> [public as boolean]</span>
5770
5771
5772              <span class="entry_type_hwlevel">[legacy] </span>
5773
5774
5775
5776                <ul class="entry_type_enum">
5777                  <li>
5778                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5779                  </li>
5780                  <li>
5781                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5782                  </li>
5783                </ul>
5784
5785            </td> <!-- entry_type -->
5786
5787            <td class="entry_description">
5788              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5789            </td>
5790
5791            <td class="entry_units">
5792            </td>
5793
5794            <td class="entry_range">
5795            </td>
5796
5797            <td class="entry_hal_version">
5798              <p>3.<wbr/>2</p>
5799            </td>
5800
5801            <td class="entry_tags">
5802              <ul class="entry_tags">
5803                  <li><a href="#tag_BC">BC</a></li>
5804              </ul>
5805            </td>
5806
5807          </tr>
5808          <tr class="entries_header">
5809            <th class="th_details" colspan="6">Details</th>
5810          </tr>
5811          <tr class="entry_cont">
5812            <td class="entry_details" colspan="6">
5813              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5814always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5815            </td>
5816          </tr>
5817
5818
5819          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5820           <!-- end of entry -->
5821
5822
5823          <tr class="entry" id="static_android.control.availableModes">
5824            <td class="entry_name
5825             " rowspan="3">
5826              android.<wbr/>control.<wbr/>available<wbr/>Modes
5827            </td>
5828            <td class="entry_type">
5829                <span class="entry_type_name">byte</span>
5830                <span class="entry_type_container">x</span>
5831
5832                <span class="entry_type_array">
5833                  n
5834                </span>
5835              <span class="entry_type_visibility"> [public as enumList]</span>
5836
5837
5838              <span class="entry_type_hwlevel">[legacy] </span>
5839
5840
5841                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5842
5843
5844            </td> <!-- entry_type -->
5845
5846            <td class="entry_description">
5847              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5848device.<wbr/></p>
5849            </td>
5850
5851            <td class="entry_units">
5852            </td>
5853
5854            <td class="entry_range">
5855              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5856            </td>
5857
5858            <td class="entry_hal_version">
5859              <p>3.<wbr/>2</p>
5860            </td>
5861
5862            <td class="entry_tags">
5863            </td>
5864
5865          </tr>
5866          <tr class="entries_header">
5867            <th class="th_details" colspan="6">Details</th>
5868          </tr>
5869          <tr class="entry_cont">
5870            <td class="entry_details" colspan="6">
5871              <p>This list contains control modes that can be set for the camera device.<wbr/>
5872LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5873devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5874            </td>
5875          </tr>
5876
5877
5878          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5879           <!-- end of entry -->
5880
5881
5882          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5883            <td class="entry_name
5884             " rowspan="5">
5885              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5886            </td>
5887            <td class="entry_type">
5888                <span class="entry_type_name">int32</span>
5889                <span class="entry_type_container">x</span>
5890
5891                <span class="entry_type_array">
5892                  2
5893                </span>
5894              <span class="entry_type_visibility"> [public as rangeInt]</span>
5895
5896
5897
5898
5899                <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5900
5901
5902            </td> <!-- entry_type -->
5903
5904            <td class="entry_description">
5905              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5906by this camera device.<wbr/></p>
5907            </td>
5908
5909            <td class="entry_units">
5910              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5911            </td>
5912
5913            <td class="entry_range">
5914            </td>
5915
5916            <td class="entry_hal_version">
5917              <p>3.<wbr/>2</p>
5918            </td>
5919
5920            <td class="entry_tags">
5921            </td>
5922
5923          </tr>
5924          <tr class="entries_header">
5925            <th class="th_details" colspan="6">Details</th>
5926          </tr>
5927          <tr class="entry_cont">
5928            <td class="entry_details" colspan="6">
5929              <p>Devices support post RAW sensitivity boost  will advertise
5930<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5931post RAW sensitivity boost.<wbr/></p>
5932<p>This key will be <code>null</code> for devices that do not support any RAW format
5933outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5934present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5935list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5936            </td>
5937          </tr>
5938
5939          <tr class="entries_header">
5940            <th class="th_details" colspan="6">HAL Implementation Details</th>
5941          </tr>
5942          <tr class="entry_cont">
5943            <td class="entry_details" colspan="6">
5944              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5945framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5946formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5947any of RAW output formats.<wbr/></p>
5948            </td>
5949          </tr>
5950
5951          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5952           <!-- end of entry -->
5953
5954
5955
5956      <!-- end of kind -->
5957      </tbody>
5958      <tr><td colspan="7" class="kind">dynamic</td></tr>
5959
5960      <thead class="entries_header">
5961        <tr>
5962          <th class="th_name">Property Name</th>
5963          <th class="th_type">Type</th>
5964          <th class="th_description">Description</th>
5965          <th class="th_units">Units</th>
5966          <th class="th_range">Range</th>
5967          <th class="th_hal_version">Initial HIDL HAL version</th>
5968          <th class="th_tags">Tags</th>
5969        </tr>
5970      </thead>
5971
5972      <tbody>
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5984            <td class="entry_name
5985                entry_name_deprecated
5986             " rowspan="3">
5987              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5988            </td>
5989            <td class="entry_type">
5990                <span class="entry_type_name">int32</span>
5991
5992              <span class="entry_type_visibility"> [system]</span>
5993
5994
5995
5996              <span class="entry_type_deprecated">[deprecated] </span>
5997
5998
5999
6000            </td> <!-- entry_type -->
6001
6002            <td class="entry_description">
6003              <p>The ID sent with the latest
6004CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
6005            </td>
6006
6007            <td class="entry_units">
6008            </td>
6009
6010            <td class="entry_range">
6011              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
6012            </td>
6013
6014            <td class="entry_hal_version">
6015              <p>3.<wbr/>2</p>
6016            </td>
6017
6018            <td class="entry_tags">
6019            </td>
6020
6021          </tr>
6022          <tr class="entries_header">
6023            <th class="th_details" colspan="6">Details</th>
6024          </tr>
6025          <tr class="entry_cont">
6026            <td class="entry_details" colspan="6">
6027              <p>Must be 0 if no
6028CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
6029by HAL.<wbr/> Always updated even if AE algorithm ignores the
6030trigger</p>
6031            </td>
6032          </tr>
6033
6034
6035          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6036           <!-- end of entry -->
6037
6038
6039          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6040            <td class="entry_name
6041             " rowspan="5">
6042              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6043            </td>
6044            <td class="entry_type">
6045                <span class="entry_type_name entry_type_name_enum">byte</span>
6046
6047              <span class="entry_type_visibility"> [public]</span>
6048
6049
6050              <span class="entry_type_hwlevel">[legacy] </span>
6051
6052
6053
6054                <ul class="entry_type_enum">
6055                  <li>
6056                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6057                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6058avoid banding problems.<wbr/></p></span>
6059                  </li>
6060                  <li>
6061                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
6062                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6063avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6064                  </li>
6065                  <li>
6066                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
6067                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6068avoid banding problems with 60Hz illumination
6069sources.<wbr/></p></span>
6070                  </li>
6071                  <li>
6072                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
6073                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6074antibanding routine to the current illumination
6075condition.<wbr/> This is the default mode if AUTO is
6076available on given camera device.<wbr/></p></span>
6077                  </li>
6078                </ul>
6079
6080            </td> <!-- entry_type -->
6081
6082            <td class="entry_description">
6083              <p>The desired setting for the camera device's auto-exposure
6084algorithm's antibanding compensation.<wbr/></p>
6085            </td>
6086
6087            <td class="entry_units">
6088            </td>
6089
6090            <td class="entry_range">
6091              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6092            </td>
6093
6094            <td class="entry_hal_version">
6095              <p>3.<wbr/>2</p>
6096            </td>
6097
6098            <td class="entry_tags">
6099              <ul class="entry_tags">
6100                  <li><a href="#tag_BC">BC</a></li>
6101              </ul>
6102            </td>
6103
6104          </tr>
6105          <tr class="entries_header">
6106            <th class="th_details" colspan="6">Details</th>
6107          </tr>
6108          <tr class="entry_cont">
6109            <td class="entry_details" colspan="6">
6110              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6111lights,<wbr/> flicker at the rate of the power supply frequency
6112(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6113typically not noticeable to a person,<wbr/> it can be visible to
6114a camera device.<wbr/> If a camera sets its exposure time to the
6115wrong value,<wbr/> the flicker may become visible in the
6116viewfinder as flicker or in a final captured image,<wbr/> as a
6117set of variable-brightness bands across the image.<wbr/></p>
6118<p>Therefore,<wbr/> the auto-exposure routines of camera devices
6119include antibanding routines that ensure that the chosen
6120exposure value will not cause such banding.<wbr/> The choice of
6121exposure time depends on the rate of flicker,<wbr/> which the
6122camera device can detect automatically,<wbr/> or the expected
6123rate can be selected by the application using this
6124control.<wbr/></p>
6125<p>A given camera device may not support all of the possible
6126options for the antibanding mode.<wbr/> The
6127<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6128the available modes for a given camera device.<wbr/></p>
6129<p>AUTO mode is the default if it is available on given
6130camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6131default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6132and 60HZ will be available.<wbr/></p>
6133<p>If manual exposure control is enabled (by setting
6134<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
6135then this setting has no effect,<wbr/> and the application must
6136ensure it selects exposure times that do not cause banding
6137issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6138the application in this.<wbr/></p>
6139            </td>
6140          </tr>
6141
6142          <tr class="entries_header">
6143            <th class="th_details" colspan="6">HAL Implementation Details</th>
6144          </tr>
6145          <tr class="entry_cont">
6146            <td class="entry_details" colspan="6">
6147              <p>For all capture request templates,<wbr/> this field must be set
6148to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6149the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
615060HZ must be available.<wbr/></p>
6151<p>If manual exposure control is enabled (by setting
6152<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
6153then the exposure values provided by the application must not be
6154adjusted for antibanding.<wbr/></p>
6155            </td>
6156          </tr>
6157
6158          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6159           <!-- end of entry -->
6160
6161
6162          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6163            <td class="entry_name
6164             " rowspan="3">
6165              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6166            </td>
6167            <td class="entry_type">
6168                <span class="entry_type_name">int32</span>
6169
6170              <span class="entry_type_visibility"> [public]</span>
6171
6172
6173              <span class="entry_type_hwlevel">[legacy] </span>
6174
6175
6176
6177
6178            </td> <!-- entry_type -->
6179
6180            <td class="entry_description">
6181              <p>Adjustment to auto-exposure (AE) target image
6182brightness.<wbr/></p>
6183            </td>
6184
6185            <td class="entry_units">
6186              Compensation steps
6187            </td>
6188
6189            <td class="entry_range">
6190              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6191            </td>
6192
6193            <td class="entry_hal_version">
6194              <p>3.<wbr/>2</p>
6195            </td>
6196
6197            <td class="entry_tags">
6198              <ul class="entry_tags">
6199                  <li><a href="#tag_BC">BC</a></li>
6200              </ul>
6201            </td>
6202
6203          </tr>
6204          <tr class="entries_header">
6205            <th class="th_details" colspan="6">Details</th>
6206          </tr>
6207          <tr class="entry_cont">
6208            <td class="entry_details" colspan="6">
6209              <p>The adjustment is measured as a count of steps,<wbr/> with the
6210step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6211allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6212<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6213will mean an exposure compensation of +2 EV; -3 will mean an
6214exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6215of image brightness.<wbr/> Note that this control will only be
6216effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6217will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6218<p>In the event of exposure compensation value being changed,<wbr/> camera device
6219may take several frames to reach the newly requested exposure target.<wbr/>
6220During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6221state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
6222change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6223FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6224            </td>
6225          </tr>
6226
6227
6228          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6229           <!-- end of entry -->
6230
6231
6232          <tr class="entry" id="dynamic_android.control.aeLock">
6233            <td class="entry_name
6234             " rowspan="3">
6235              android.<wbr/>control.<wbr/>ae<wbr/>Lock
6236            </td>
6237            <td class="entry_type">
6238                <span class="entry_type_name entry_type_name_enum">byte</span>
6239
6240              <span class="entry_type_visibility"> [public as boolean]</span>
6241
6242
6243              <span class="entry_type_hwlevel">[legacy] </span>
6244
6245
6246
6247                <ul class="entry_type_enum">
6248                  <li>
6249                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6250                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6251is free to update its parameters.<wbr/></p></span>
6252                  </li>
6253                  <li>
6254                    <span class="entry_type_enum_name">ON (v3.2)</span>
6255                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6256must not update the exposure and sensitivity parameters
6257while the lock is active.<wbr/></p>
6258<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6259will still take effect while auto-exposure is locked.<wbr/></p>
6260<p>Some rare LEGACY devices may not support
6261this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6262                  </li>
6263                </ul>
6264
6265            </td> <!-- entry_type -->
6266
6267            <td class="entry_description">
6268              <p>Whether auto-exposure (AE) is currently locked to its latest
6269calculated values.<wbr/></p>
6270            </td>
6271
6272            <td class="entry_units">
6273            </td>
6274
6275            <td class="entry_range">
6276            </td>
6277
6278            <td class="entry_hal_version">
6279              <p>3.<wbr/>2</p>
6280            </td>
6281
6282            <td class="entry_tags">
6283              <ul class="entry_tags">
6284                  <li><a href="#tag_BC">BC</a></li>
6285              </ul>
6286            </td>
6287
6288          </tr>
6289          <tr class="entries_header">
6290            <th class="th_details" colspan="6">Details</th>
6291          </tr>
6292          <tr class="entry_cont">
6293            <td class="entry_details" colspan="6">
6294              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6295and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6296<p>Note that even when AE is locked,<wbr/> the flash may be fired if
6297the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6298ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6299<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
6300is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6301<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6302when AE is already locked,<wbr/> the camera device will not change the exposure time
6303(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
6304parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6305is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6306<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
6307Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6308<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6309the AE if AE is locked by the camera device internally during precapture metering
6310sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6311ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6312will never succeed in a sequence of preview requests where AE lock is always set
6313to <code>false</code>.<wbr/></p>
6314<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6315get locked do not necessarily correspond to the settings that were present in the
6316latest capture result received from the camera device,<wbr/> since additional captures
6317and AE updates may have occurred even before the result was sent out.<wbr/> If an
6318application is switching between automatic and manual control and wishes to eliminate
6319any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6320<ol>
6321<li>Starting in auto-AE mode:</li>
6322<li>Lock AE</li>
6323<li>Wait for the first result to be output that has the AE locked</li>
6324<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6325<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6326</ol>
6327<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
6328            </td>
6329          </tr>
6330
6331
6332          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6333           <!-- end of entry -->
6334
6335
6336          <tr class="entry" id="dynamic_android.control.aeMode">
6337            <td class="entry_name
6338             " rowspan="3">
6339              android.<wbr/>control.<wbr/>ae<wbr/>Mode
6340            </td>
6341            <td class="entry_type">
6342                <span class="entry_type_name entry_type_name_enum">byte</span>
6343
6344              <span class="entry_type_visibility"> [public]</span>
6345
6346
6347              <span class="entry_type_hwlevel">[legacy] </span>
6348
6349
6350
6351                <ul class="entry_type_enum">
6352                  <li>
6353                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6354                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6355<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6356<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6357<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6358device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6359a flash unit for this camera device.<wbr/></p>
6360<p>Note that auto-white balance (AWB) and auto-focus (AF)
6361behavior is device dependent when AE is in OFF mode.<wbr/>
6362To have consistent behavior across different devices,<wbr/>
6363it is recommended to either set AWB and AF to OFF mode
6364or lock AWB and AF before setting AE to OFF.<wbr/>
6365See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
6366<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6367for more details.<wbr/></p>
6368<p>LEGACY devices do not support the OFF mode and will
6369override attempts to use this value to ON.<wbr/></p></span>
6370                  </li>
6371                  <li>
6372                    <span class="entry_type_enum_name">ON (v3.2)</span>
6373                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6374with no flash control.<wbr/></p>
6375<p>The application's values for
6376<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6377<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6378<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6379application has control over the various
6380android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6381                  </li>
6382                  <li>
6383                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6384                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6385the camera's flash unit,<wbr/> firing it in low-light
6386conditions.<wbr/></p>
6387<p>The flash may be fired during a precapture sequence
6388(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6389may be fired for captures for which the
6390<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6391STILL_<wbr/>CAPTURE</p></span>
6392                  </li>
6393                  <li>
6394                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6395                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6396the camera's flash unit,<wbr/> always firing it for still
6397captures.<wbr/></p>
6398<p>The flash may be fired during a precapture sequence
6399(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6400will always be fired for captures for which the
6401<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6402STILL_<wbr/>CAPTURE</p></span>
6403                  </li>
6404                  <li>
6405                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6406                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6407reduction.<wbr/></p>
6408<p>If deemed necessary by the camera device,<wbr/> a red eye
6409reduction flash will fire during the precapture
6410sequence.<wbr/></p></span>
6411                  </li>
6412                  <li>
6413                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6414                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6415<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6416metering (and continuous focus if active) should be quickly recaculated to account
6417for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6418<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6419other available AE modes.<wbr/></p>
6420<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
6421be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6422flash.<wbr/></p></span>
6423                  </li>
6424                </ul>
6425
6426            </td> <!-- entry_type -->
6427
6428            <td class="entry_description">
6429              <p>The desired mode for the camera device's
6430auto-exposure routine.<wbr/></p>
6431            </td>
6432
6433            <td class="entry_units">
6434            </td>
6435
6436            <td class="entry_range">
6437              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6438            </td>
6439
6440            <td class="entry_hal_version">
6441              <p>3.<wbr/>2</p>
6442            </td>
6443
6444            <td class="entry_tags">
6445              <ul class="entry_tags">
6446                  <li><a href="#tag_BC">BC</a></li>
6447              </ul>
6448            </td>
6449
6450          </tr>
6451          <tr class="entries_header">
6452            <th class="th_details" colspan="6">Details</th>
6453          </tr>
6454          <tr class="entry_cont">
6455            <td class="entry_details" colspan="6">
6456              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6457AUTO.<wbr/></p>
6458<p>When set to any of the ON modes,<wbr/> the camera device's
6459auto-exposure routine is enabled,<wbr/> overriding the
6460application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6461and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6462<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6463<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6464is selected,<wbr/> the camera device's flash unit controls are
6465also overridden.<wbr/></p>
6466<p>The FLASH modes are only available if the camera device
6467has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
6468<p>If flash TORCH mode is desired,<wbr/> this field must be set to
6469ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6470<p>When set to any of the ON modes,<wbr/> the values chosen by the
6471camera device auto-exposure routine for the overridden
6472fields for a given capture will be available in its
6473CaptureResult.<wbr/></p>
6474            </td>
6475          </tr>
6476
6477
6478          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6479           <!-- end of entry -->
6480
6481
6482          <tr class="entry" id="dynamic_android.control.aeRegions">
6483            <td class="entry_name
6484             " rowspan="5">
6485              android.<wbr/>control.<wbr/>ae<wbr/>Regions
6486            </td>
6487            <td class="entry_type">
6488                <span class="entry_type_name">int32</span>
6489                <span class="entry_type_container">x</span>
6490
6491                <span class="entry_type_array">
6492                  5 x area_count
6493                </span>
6494              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6495
6496
6497
6498
6499
6500
6501            </td> <!-- entry_type -->
6502
6503            <td class="entry_description">
6504              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6505            </td>
6506
6507            <td class="entry_units">
6508              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6509            </td>
6510
6511            <td class="entry_range">
6512              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6513<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6514            </td>
6515
6516            <td class="entry_hal_version">
6517              <p>3.<wbr/>2</p>
6518            </td>
6519
6520            <td class="entry_tags">
6521              <ul class="entry_tags">
6522                  <li><a href="#tag_BC">BC</a></li>
6523              </ul>
6524            </td>
6525
6526          </tr>
6527          <tr class="entries_header">
6528            <th class="th_details" colspan="6">Details</th>
6529          </tr>
6530          <tr class="entry_cont">
6531            <td class="entry_details" colspan="6">
6532              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6533Otherwise will always be present.<wbr/></p>
6534<p>The maximum number of regions supported by the device is determined by the value
6535of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6536<p>The coordinate system is based on the active pixel array,<wbr/>
6537with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6538(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6539<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6540bottom-right pixel in the active pixel array.<wbr/></p>
6541<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6542for every pixel in the area.<wbr/> This means that a large metering area
6543with the same weight as a smaller area will have more effect in
6544the metering result.<wbr/> Metering areas can partially overlap and the
6545camera device will add the weights in the overlap region.<wbr/></p>
6546<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6547region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6548weight is ignored.<wbr/></p>
6549<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6550camera device.<wbr/></p>
6551<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
6552capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6553region and output only the intersection rectangle as the metering region in the result
6554metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6555not reported in the result metadata.<wbr/></p>
6556            </td>
6557          </tr>
6558
6559          <tr class="entries_header">
6560            <th class="th_details" colspan="6">HAL Implementation Details</th>
6561          </tr>
6562          <tr class="entry_cont">
6563            <td class="entry_details" colspan="6">
6564              <p>The HAL level representation of MeteringRectangle[] is a
6565int[5 * area_<wbr/>count].<wbr/>
6566Every five elements represent a metering region of
6567(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6568The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6569exclusive on xmax and ymax.<wbr/></p>
6570            </td>
6571          </tr>
6572
6573          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6574           <!-- end of entry -->
6575
6576
6577          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6578            <td class="entry_name
6579             " rowspan="3">
6580              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6581            </td>
6582            <td class="entry_type">
6583                <span class="entry_type_name">int32</span>
6584                <span class="entry_type_container">x</span>
6585
6586                <span class="entry_type_array">
6587                  2
6588                </span>
6589              <span class="entry_type_visibility"> [public as rangeInt]</span>
6590
6591
6592              <span class="entry_type_hwlevel">[legacy] </span>
6593
6594
6595
6596
6597            </td> <!-- entry_type -->
6598
6599            <td class="entry_description">
6600              <p>Range over which the auto-exposure routine can
6601adjust the capture frame rate to maintain good
6602exposure.<wbr/></p>
6603            </td>
6604
6605            <td class="entry_units">
6606              Frames per second (FPS)
6607            </td>
6608
6609            <td class="entry_range">
6610              <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
6611            </td>
6612
6613            <td class="entry_hal_version">
6614              <p>3.<wbr/>2</p>
6615            </td>
6616
6617            <td class="entry_tags">
6618              <ul class="entry_tags">
6619                  <li><a href="#tag_BC">BC</a></li>
6620              </ul>
6621            </td>
6622
6623          </tr>
6624          <tr class="entries_header">
6625            <th class="th_details" colspan="6">Details</th>
6626          </tr>
6627          <tr class="entry_cont">
6628            <td class="entry_details" colspan="6">
6629              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6630manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6631<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6632            </td>
6633          </tr>
6634
6635
6636          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6637           <!-- end of entry -->
6638
6639
6640          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6641            <td class="entry_name
6642             " rowspan="5">
6643              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6644            </td>
6645            <td class="entry_type">
6646                <span class="entry_type_name entry_type_name_enum">byte</span>
6647
6648              <span class="entry_type_visibility"> [public]</span>
6649
6650
6651              <span class="entry_type_hwlevel">[limited] </span>
6652
6653
6654
6655                <ul class="entry_type_enum">
6656                  <li>
6657                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
6658                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6659                  </li>
6660                  <li>
6661                    <span class="entry_type_enum_name">START (v3.2)</span>
6662                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6663by the camera device.<wbr/></p>
6664<p>The exact effect of the precapture trigger depends on
6665the current AE mode and state.<wbr/></p></span>
6666                  </li>
6667                  <li>
6668                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6669                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6670precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6671initial state.<wbr/></p></span>
6672                  </li>
6673                </ul>
6674
6675            </td> <!-- entry_type -->
6676
6677            <td class="entry_description">
6678              <p>Whether the camera device will trigger a precapture
6679metering sequence when it processes this request.<wbr/></p>
6680            </td>
6681
6682            <td class="entry_units">
6683            </td>
6684
6685            <td class="entry_range">
6686            </td>
6687
6688            <td class="entry_hal_version">
6689              <p>3.<wbr/>2</p>
6690            </td>
6691
6692            <td class="entry_tags">
6693              <ul class="entry_tags">
6694                  <li><a href="#tag_BC">BC</a></li>
6695              </ul>
6696            </td>
6697
6698          </tr>
6699          <tr class="entries_header">
6700            <th class="th_details" colspan="6">Details</th>
6701          </tr>
6702          <tr class="entry_cont">
6703            <td class="entry_details" colspan="6">
6704              <p>This entry is normally set to IDLE,<wbr/> or is not
6705included at all in the request settings.<wbr/> When included and
6706set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6707precapture metering sequence.<wbr/></p>
6708<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6709precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6710If a precapture metering sequence is already completed,<wbr/> and the camera
6711device has implicitly locked the AE for subsequent still capture,<wbr/> the
6712CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6713<p>The precapture sequence should be triggered before starting a
6714high-quality still capture for final metering decisions to
6715be made,<wbr/> and for firing pre-capture flash pulses to estimate
6716scene brightness and required final capture flash power,<wbr/> when
6717the flash is enabled.<wbr/></p>
6718<p>Normally,<wbr/> this entry should be set to START for only a
6719single request,<wbr/> and the application should wait until the
6720sequence completes before starting a new one.<wbr/></p>
6721<p>When a precapture metering sequence is finished,<wbr/> the camera device
6722may lock the auto-exposure routine internally to be able to accurately expose the
6723subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6724For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6725submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6726submit 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
6727with <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
6728still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6729API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6730internally locked AE if the application doesn't submit a still capture request after
6731the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6732be used in devices that have earlier API levels.<wbr/></p>
6733<p>The exact effect of auto-exposure (AE) precapture trigger
6734depends on the current AE mode and state; see
6735<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6736details.<wbr/></p>
6737<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6738capturing a high-resolution JPEG image will automatically trigger a
6739precapture sequence before the high-resolution capture,<wbr/> including
6740potentially firing a pre-capture flash.<wbr/></p>
6741<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6742simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6743the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6744focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6745trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6746changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6747example.<wbr/></p>
6748<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6749the camera device will complete them in the optimal order for that device.<wbr/></p>
6750            </td>
6751          </tr>
6752
6753          <tr class="entries_header">
6754            <th class="th_details" colspan="6">HAL Implementation Details</th>
6755          </tr>
6756          <tr class="entry_cont">
6757            <td class="entry_details" colspan="6">
6758              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6759(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6760treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6761AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6762to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6763            </td>
6764          </tr>
6765
6766          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6767           <!-- end of entry -->
6768
6769
6770          <tr class="entry" id="dynamic_android.control.aeState">
6771            <td class="entry_name
6772             " rowspan="3">
6773              android.<wbr/>control.<wbr/>ae<wbr/>State
6774            </td>
6775            <td class="entry_type">
6776                <span class="entry_type_name entry_type_name_enum">byte</span>
6777
6778              <span class="entry_type_visibility"> [public]</span>
6779
6780
6781              <span class="entry_type_hwlevel">[limited] </span>
6782
6783
6784
6785                <ul class="entry_type_enum">
6786                  <li>
6787                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6788                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6789<p>When a camera device is opened,<wbr/> it starts in
6790this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6791this state in capture result.<wbr/></p></span>
6792                  </li>
6793                  <li>
6794                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6795                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6796for the current scene.<wbr/></p>
6797<p>This is a transient state,<wbr/> the camera device may skip
6798reporting this state in capture result.<wbr/></p></span>
6799                  </li>
6800                  <li>
6801                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6802                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6803current scene.<wbr/></p></span>
6804                  </li>
6805                  <li>
6806                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6807                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6808                  </li>
6809                  <li>
6810                    <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6811                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6812needs to be fired for good quality still
6813capture.<wbr/></p></span>
6814                  </li>
6815                  <li>
6816                    <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6817                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6818and is currently executing it.<wbr/></p>
6819<p>Precapture can be triggered through setting
6820<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6821active and completed (if it causes camera device internal AE lock) precapture
6822metering sequence can be canceled through setting
6823<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6824<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6825or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6826state,<wbr/> the camera device may skip reporting this state in
6827capture result.<wbr/></p></span>
6828                  </li>
6829                </ul>
6830
6831            </td> <!-- entry_type -->
6832
6833            <td class="entry_description">
6834              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6835            </td>
6836
6837            <td class="entry_units">
6838            </td>
6839
6840            <td class="entry_range">
6841            </td>
6842
6843            <td class="entry_hal_version">
6844              <p>3.<wbr/>2</p>
6845            </td>
6846
6847            <td class="entry_tags">
6848            </td>
6849
6850          </tr>
6851          <tr class="entries_header">
6852            <th class="th_details" colspan="6">Details</th>
6853          </tr>
6854          <tr class="entry_cont">
6855            <td class="entry_details" colspan="6">
6856              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6857resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6858or <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
6859the algorithm states to INACTIVE.<wbr/></p>
6860<p>The camera device can do several state transitions between two results,<wbr/> if it is
6861allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6862seen in a result.<wbr/></p>
6863<p>The state in the result is the state for this image (in sync with this image): if
6864AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6865be good to use.<wbr/></p>
6866<p>Below are state transition tables for different AE modes.<wbr/></p>
6867<table>
6868<thead>
6869<tr>
6870<th align="center">State</th>
6871<th align="center">Transition Cause</th>
6872<th align="center">New State</th>
6873<th align="center">Notes</th>
6874</tr>
6875</thead>
6876<tbody>
6877<tr>
6878<td align="center">INACTIVE</td>
6879<td align="center"></td>
6880<td align="center">INACTIVE</td>
6881<td align="center">Camera device auto exposure algorithm is disabled</td>
6882</tr>
6883</tbody>
6884</table>
6885<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6886<table>
6887<thead>
6888<tr>
6889<th align="center">State</th>
6890<th align="center">Transition Cause</th>
6891<th align="center">New State</th>
6892<th align="center">Notes</th>
6893</tr>
6894</thead>
6895<tbody>
6896<tr>
6897<td align="center">INACTIVE</td>
6898<td align="center">Camera device initiates AE scan</td>
6899<td align="center">SEARCHING</td>
6900<td align="center">Values changing</td>
6901</tr>
6902<tr>
6903<td align="center">INACTIVE</td>
6904<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6905<td align="center">LOCKED</td>
6906<td align="center">Values locked</td>
6907</tr>
6908<tr>
6909<td align="center">SEARCHING</td>
6910<td align="center">Camera device finishes AE scan</td>
6911<td align="center">CONVERGED</td>
6912<td align="center">Good values,<wbr/> not changing</td>
6913</tr>
6914<tr>
6915<td align="center">SEARCHING</td>
6916<td align="center">Camera device finishes AE scan</td>
6917<td align="center">FLASH_<wbr/>REQUIRED</td>
6918<td align="center">Converged but too dark w/<wbr/>o flash</td>
6919</tr>
6920<tr>
6921<td align="center">SEARCHING</td>
6922<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6923<td align="center">LOCKED</td>
6924<td align="center">Values locked</td>
6925</tr>
6926<tr>
6927<td align="center">CONVERGED</td>
6928<td align="center">Camera device initiates AE scan</td>
6929<td align="center">SEARCHING</td>
6930<td align="center">Values changing</td>
6931</tr>
6932<tr>
6933<td align="center">CONVERGED</td>
6934<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6935<td align="center">LOCKED</td>
6936<td align="center">Values locked</td>
6937</tr>
6938<tr>
6939<td align="center">FLASH_<wbr/>REQUIRED</td>
6940<td align="center">Camera device initiates AE scan</td>
6941<td align="center">SEARCHING</td>
6942<td align="center">Values changing</td>
6943</tr>
6944<tr>
6945<td align="center">FLASH_<wbr/>REQUIRED</td>
6946<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6947<td align="center">LOCKED</td>
6948<td align="center">Values locked</td>
6949</tr>
6950<tr>
6951<td align="center">LOCKED</td>
6952<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6953<td align="center">SEARCHING</td>
6954<td align="center">Values not good after unlock</td>
6955</tr>
6956<tr>
6957<td align="center">LOCKED</td>
6958<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6959<td align="center">CONVERGED</td>
6960<td align="center">Values good after unlock</td>
6961</tr>
6962<tr>
6963<td align="center">LOCKED</td>
6964<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6965<td align="center">FLASH_<wbr/>REQUIRED</td>
6966<td align="center">Exposure good,<wbr/> but too dark</td>
6967</tr>
6968<tr>
6969<td align="center">PRECAPTURE</td>
6970<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6971<td align="center">CONVERGED</td>
6972<td align="center">Ready for high-quality capture</td>
6973</tr>
6974<tr>
6975<td align="center">PRECAPTURE</td>
6976<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6977<td align="center">LOCKED</td>
6978<td align="center">Ready for high-quality capture</td>
6979</tr>
6980<tr>
6981<td align="center">LOCKED</td>
6982<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6983<td align="center">LOCKED</td>
6984<td align="center">Precapture trigger is ignored when AE is already locked</td>
6985</tr>
6986<tr>
6987<td align="center">LOCKED</td>
6988<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6989<td align="center">LOCKED</td>
6990<td align="center">Precapture trigger is ignored when AE is already locked</td>
6991</tr>
6992<tr>
6993<td align="center">Any state (excluding LOCKED)</td>
6994<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6995<td align="center">PRECAPTURE</td>
6996<td align="center">Start AE precapture metering sequence</td>
6997</tr>
6998<tr>
6999<td align="center">Any state (excluding LOCKED)</td>
7000<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
7001<td align="center">INACTIVE</td>
7002<td align="center">Currently active precapture metering sequence is canceled</td>
7003</tr>
7004</tbody>
7005</table>
7006<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
7007<a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after
7008the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
7009<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7010without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7011can be skipped in that manner is called a transient state.<wbr/></p>
7012<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
7013listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7014transient states between two results.<wbr/> See below table for examples:</p>
7015<table>
7016<thead>
7017<tr>
7018<th align="center">State</th>
7019<th align="center">Transition Cause</th>
7020<th align="center">New State</th>
7021<th align="center">Notes</th>
7022</tr>
7023</thead>
7024<tbody>
7025<tr>
7026<td align="center">INACTIVE</td>
7027<td align="center">Camera device finished AE scan</td>
7028<td align="center">CONVERGED</td>
7029<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7030</tr>
7031<tr>
7032<td align="center">Any state (excluding LOCKED)</td>
7033<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
7034<td align="center">FLASH_<wbr/>REQUIRED</td>
7035<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7036</tr>
7037<tr>
7038<td align="center">Any state (excluding LOCKED)</td>
7039<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
7040<td align="center">CONVERGED</td>
7041<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7042</tr>
7043<tr>
7044<td align="center">Any state (excluding LOCKED)</td>
7045<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7046<td align="center">FLASH_<wbr/>REQUIRED</td>
7047<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7048</tr>
7049<tr>
7050<td align="center">Any state (excluding LOCKED)</td>
7051<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7052<td align="center">CONVERGED</td>
7053<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7054</tr>
7055<tr>
7056<td align="center">CONVERGED</td>
7057<td align="center">Camera device finished AE scan</td>
7058<td align="center">FLASH_<wbr/>REQUIRED</td>
7059<td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7060</tr>
7061<tr>
7062<td align="center">FLASH_<wbr/>REQUIRED</td>
7063<td align="center">Camera device finished AE scan</td>
7064<td align="center">CONVERGED</td>
7065<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7066</tr>
7067</tbody>
7068</table>
7069            </td>
7070          </tr>
7071
7072
7073          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7074           <!-- end of entry -->
7075
7076
7077          <tr class="entry" id="dynamic_android.control.afMode">
7078            <td class="entry_name
7079             " rowspan="5">
7080              android.<wbr/>control.<wbr/>af<wbr/>Mode
7081            </td>
7082            <td class="entry_type">
7083                <span class="entry_type_name entry_type_name_enum">byte</span>
7084
7085              <span class="entry_type_visibility"> [public]</span>
7086
7087
7088              <span class="entry_type_hwlevel">[legacy] </span>
7089
7090
7091
7092                <ul class="entry_type_enum">
7093                  <li>
7094                    <span class="entry_type_enum_name">OFF (v3.2)</span>
7095                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7096<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7097application.<wbr/></p></span>
7098                  </li>
7099                  <li>
7100                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
7101                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7102<p>In this mode,<wbr/> the lens does not move unless
7103the autofocus trigger action is called.<wbr/> When that trigger
7104is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7105the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7106<p>Always supported if lens is not fixed focus.<wbr/></p>
7107<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
7108is fixed-focus.<wbr/></p>
7109<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7110and sets the AF state to INACTIVE.<wbr/></p></span>
7111                  </li>
7112                  <li>
7113                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
7114                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7115<p>In this mode,<wbr/> the lens does not move unless the
7116autofocus trigger action is called.<wbr/> When that trigger is
7117activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7118the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7119mode is optimized for focusing on objects very close to
7120the camera.<wbr/></p>
7121<p>When that trigger is activated,<wbr/> AF will transition to
7122ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7123NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7124position to default,<wbr/> and sets the AF state to
7125INACTIVE.<wbr/></p></span>
7126                  </li>
7127                  <li>
7128                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7129                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7130position continually to attempt to provide a
7131constantly-in-focus image stream.<wbr/></p>
7132<p>The focusing behavior should be suitable for good quality
7133video recording; typically this means slower focus
7134movement and no overshoots.<wbr/> When the AF trigger is not
7135involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7136and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7137states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7138the algorithm should immediately transition into
7139AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7140lens position until a cancel AF trigger is received.<wbr/></p>
7141<p>Once cancel is received,<wbr/> the algorithm should transition
7142back to INACTIVE and resume passive scan.<wbr/> Note that this
7143behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7144ongoing PASSIVE_<wbr/>SCAN must immediately be
7145canceled.<wbr/></p></span>
7146                  </li>
7147                  <li>
7148                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7149                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7150position continually to attempt to provide a
7151constantly-in-focus image stream.<wbr/></p>
7152<p>The focusing behavior should be suitable for still image
7153capture; typically this means focusing as fast as
7154possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7155algorithm should start in INACTIVE state,<wbr/> and then
7156transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7157appropriate as it attempts to maintain focus.<wbr/> When the AF
7158trigger is activated,<wbr/> the algorithm should finish its
7159PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7160AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7161lens position until a cancel AF trigger is received.<wbr/></p>
7162<p>When the AF cancel trigger is activated,<wbr/> the algorithm
7163should transition back to INACTIVE and then act as if it
7164has just been started.<wbr/></p></span>
7165                  </li>
7166                  <li>
7167                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
7168                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7169<p>The camera device will produce images with an extended
7170depth of field automatically; no special focusing
7171operations need to be done before taking a picture.<wbr/></p>
7172<p>AF triggers are ignored,<wbr/> and the AF state will always be
7173INACTIVE.<wbr/></p></span>
7174                  </li>
7175                </ul>
7176
7177            </td> <!-- entry_type -->
7178
7179            <td class="entry_description">
7180              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7181mode it is set to.<wbr/></p>
7182            </td>
7183
7184            <td class="entry_units">
7185            </td>
7186
7187            <td class="entry_range">
7188              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7189            </td>
7190
7191            <td class="entry_hal_version">
7192              <p>3.<wbr/>2</p>
7193            </td>
7194
7195            <td class="entry_tags">
7196              <ul class="entry_tags">
7197                  <li><a href="#tag_BC">BC</a></li>
7198              </ul>
7199            </td>
7200
7201          </tr>
7202          <tr class="entries_header">
7203            <th class="th_details" colspan="6">Details</th>
7204          </tr>
7205          <tr class="entry_cont">
7206            <td class="entry_details" colspan="6">
7207              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7208(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
7209when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7210dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
7211setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
7212<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7213the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7214in result metadata.<wbr/></p>
7215            </td>
7216          </tr>
7217
7218          <tr class="entries_header">
7219            <th class="th_details" colspan="6">HAL Implementation Details</th>
7220          </tr>
7221          <tr class="entry_cont">
7222            <td class="entry_details" colspan="6">
7223              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7224request (<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
7225up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7226<a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
7227locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7228after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7229the same focal plane remains in focus.<wbr/></p>
7230<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7231scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7232(see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
7233same lock behavior as above.<wbr/></p>
7234<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7235focus 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/>
7236However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7237manual control.<wbr/></p>
7238<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7239camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7240remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7241by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7242that will arise on camera modules with open-loop VCMs.<wbr/></p>
7243            </td>
7244          </tr>
7245
7246          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7247           <!-- end of entry -->
7248
7249
7250          <tr class="entry" id="dynamic_android.control.afRegions">
7251            <td class="entry_name
7252             " rowspan="5">
7253              android.<wbr/>control.<wbr/>af<wbr/>Regions
7254            </td>
7255            <td class="entry_type">
7256                <span class="entry_type_name">int32</span>
7257                <span class="entry_type_container">x</span>
7258
7259                <span class="entry_type_array">
7260                  5 x area_count
7261                </span>
7262              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7263
7264
7265
7266
7267
7268
7269            </td> <!-- entry_type -->
7270
7271            <td class="entry_description">
7272              <p>List of metering areas to use for auto-focus.<wbr/></p>
7273            </td>
7274
7275            <td class="entry_units">
7276              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7277            </td>
7278
7279            <td class="entry_range">
7280              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7281<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7282            </td>
7283
7284            <td class="entry_hal_version">
7285              <p>3.<wbr/>2</p>
7286            </td>
7287
7288            <td class="entry_tags">
7289              <ul class="entry_tags">
7290                  <li><a href="#tag_BC">BC</a></li>
7291              </ul>
7292            </td>
7293
7294          </tr>
7295          <tr class="entries_header">
7296            <th class="th_details" colspan="6">Details</th>
7297          </tr>
7298          <tr class="entry_cont">
7299            <td class="entry_details" colspan="6">
7300              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7301Otherwise will always be present.<wbr/></p>
7302<p>The maximum number of focus areas supported by the device is determined by the value
7303of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7304<p>The coordinate system is based on the active pixel array,<wbr/>
7305with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7306(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7307<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7308bottom-right pixel in the active pixel array.<wbr/></p>
7309<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7310for every pixel in the area.<wbr/> This means that a large metering area
7311with the same weight as a smaller area will have more effect in
7312the metering result.<wbr/> Metering areas can partially overlap and the
7313camera device will add the weights in the overlap region.<wbr/></p>
7314<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7315is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7316ignored.<wbr/></p>
7317<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7318camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
7319the region selected by the camera device as the focus area of interest.<wbr/></p>
7320<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
7321capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7322region and output only the intersection rectangle as the metering region in the result
7323metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7324not reported in the result metadata.<wbr/></p>
7325            </td>
7326          </tr>
7327
7328          <tr class="entries_header">
7329            <th class="th_details" colspan="6">HAL Implementation Details</th>
7330          </tr>
7331          <tr class="entry_cont">
7332            <td class="entry_details" colspan="6">
7333              <p>The HAL level representation of MeteringRectangle[] is a
7334int[5 * area_<wbr/>count].<wbr/>
7335Every five elements represent a metering region of
7336(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7337The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7338exclusive on xmax and ymax.<wbr/></p>
7339            </td>
7340          </tr>
7341
7342          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7343           <!-- end of entry -->
7344
7345
7346          <tr class="entry" id="dynamic_android.control.afTrigger">
7347            <td class="entry_name
7348             " rowspan="5">
7349              android.<wbr/>control.<wbr/>af<wbr/>Trigger
7350            </td>
7351            <td class="entry_type">
7352                <span class="entry_type_name entry_type_name_enum">byte</span>
7353
7354              <span class="entry_type_visibility"> [public]</span>
7355
7356
7357              <span class="entry_type_hwlevel">[legacy] </span>
7358
7359
7360
7361                <ul class="entry_type_enum">
7362                  <li>
7363                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
7364                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7365                  </li>
7366                  <li>
7367                    <span class="entry_type_enum_name">START (v3.2)</span>
7368                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7369                  </li>
7370                  <li>
7371                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7372                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7373state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7374                  </li>
7375                </ul>
7376
7377            </td> <!-- entry_type -->
7378
7379            <td class="entry_description">
7380              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7381            </td>
7382
7383            <td class="entry_units">
7384            </td>
7385
7386            <td class="entry_range">
7387            </td>
7388
7389            <td class="entry_hal_version">
7390              <p>3.<wbr/>2</p>
7391            </td>
7392
7393            <td class="entry_tags">
7394              <ul class="entry_tags">
7395                  <li><a href="#tag_BC">BC</a></li>
7396              </ul>
7397            </td>
7398
7399          </tr>
7400          <tr class="entries_header">
7401            <th class="th_details" colspan="6">Details</th>
7402          </tr>
7403          <tr class="entry_cont">
7404            <td class="entry_details" colspan="6">
7405              <p>This entry is normally set to IDLE,<wbr/> or is not
7406included at all in the request settings.<wbr/></p>
7407<p>When included and set to START,<wbr/> the camera device will trigger the
7408autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7409<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7410and return to its initial AF state.<wbr/></p>
7411<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7412single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7413START for multiple captures in a row means restarting the AF operation over
7414and over again.<wbr/></p>
7415<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
7416<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
7417simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7418the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7419focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7420trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7421changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7422            </td>
7423          </tr>
7424
7425          <tr class="entries_header">
7426            <th class="th_details" colspan="6">HAL Implementation Details</th>
7427          </tr>
7428          <tr class="entry_cont">
7429            <td class="entry_details" colspan="6">
7430              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7431(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7432treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7433AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7434to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7435            </td>
7436          </tr>
7437
7438          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7439           <!-- end of entry -->
7440
7441
7442          <tr class="entry" id="dynamic_android.control.afState">
7443            <td class="entry_name
7444             " rowspan="3">
7445              android.<wbr/>control.<wbr/>af<wbr/>State
7446            </td>
7447            <td class="entry_type">
7448                <span class="entry_type_name entry_type_name_enum">byte</span>
7449
7450              <span class="entry_type_visibility"> [public]</span>
7451
7452
7453              <span class="entry_type_hwlevel">[legacy] </span>
7454
7455
7456
7457                <ul class="entry_type_enum">
7458                  <li>
7459                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7460                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7461to scan.<wbr/></p>
7462<p>When a camera device is opened,<wbr/> it starts in this
7463state.<wbr/> This is a transient state,<wbr/> the camera device may
7464skip reporting this state in capture
7465result.<wbr/></p></span>
7466                  </li>
7467                  <li>
7468                    <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7469                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7470camera device in a continuous autofocus mode.<wbr/></p>
7471<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7472state,<wbr/> the camera device may skip reporting this state in
7473capture result.<wbr/></p></span>
7474                  </li>
7475                  <li>
7476                    <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7477                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7478restart scanning at any time.<wbr/></p>
7479<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7480state,<wbr/> the camera device may skip reporting this state in
7481capture result.<wbr/></p></span>
7482                  </li>
7483                  <li>
7484                    <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7485                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7486triggered by AF trigger.<wbr/></p>
7487<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7488state,<wbr/> the camera device may skip reporting this state in
7489capture result.<wbr/></p></span>
7490                  </li>
7491                  <li>
7492                    <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7493                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7494focus.<wbr/></p>
7495<p>This state is reached only after an explicit START AF trigger has been
7496sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7497<p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
7498a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
7499                  </li>
7500                  <li>
7501                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7502                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7503focus.<wbr/></p>
7504<p>This state is reached only after an explicit START AF trigger has been
7505sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7506<p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
7507a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
7508                  </li>
7509                  <li>
7510                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7511                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7512and may restart scanning at any time.<wbr/></p>
7513<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7514device may skip reporting this state in capture result.<wbr/></p>
7515<p>LEGACY camera devices do not support this state.<wbr/> When a passive
7516scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7517                  </li>
7518                </ul>
7519
7520            </td> <!-- entry_type -->
7521
7522            <td class="entry_description">
7523              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7524            </td>
7525
7526            <td class="entry_units">
7527            </td>
7528
7529            <td class="entry_range">
7530            </td>
7531
7532            <td class="entry_hal_version">
7533              <p>3.<wbr/>2</p>
7534            </td>
7535
7536            <td class="entry_tags">
7537            </td>
7538
7539          </tr>
7540          <tr class="entries_header">
7541            <th class="th_details" colspan="6">Details</th>
7542          </tr>
7543          <tr class="entry_cont">
7544            <td class="entry_details" colspan="6">
7545              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7546resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7547or <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
7548the algorithm states to INACTIVE.<wbr/></p>
7549<p>The camera device can do several state transitions between two results,<wbr/> if it is
7550allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7551seen in a result.<wbr/></p>
7552<p>The state in the result is the state for this image (in sync with this image): if
7553AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7554be sharp.<wbr/></p>
7555<p>Below are state transition tables for different AF modes.<wbr/></p>
7556<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>OFF or AF_<wbr/>MODE_<wbr/>EDOF:</p>
7557<table>
7558<thead>
7559<tr>
7560<th align="center">State</th>
7561<th align="center">Transition Cause</th>
7562<th align="center">New State</th>
7563<th align="center">Notes</th>
7564</tr>
7565</thead>
7566<tbody>
7567<tr>
7568<td align="center">INACTIVE</td>
7569<td align="center"></td>
7570<td align="center">INACTIVE</td>
7571<td align="center">Never changes</td>
7572</tr>
7573</tbody>
7574</table>
7575<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>AUTO or AF_<wbr/>MODE_<wbr/>MACRO:</p>
7576<table>
7577<thead>
7578<tr>
7579<th align="center">State</th>
7580<th align="center">Transition Cause</th>
7581<th align="center">New State</th>
7582<th align="center">Notes</th>
7583</tr>
7584</thead>
7585<tbody>
7586<tr>
7587<td align="center">INACTIVE</td>
7588<td align="center">AF_<wbr/>TRIGGER</td>
7589<td align="center">ACTIVE_<wbr/>SCAN</td>
7590<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7591</tr>
7592<tr>
7593<td align="center">ACTIVE_<wbr/>SCAN</td>
7594<td align="center">AF sweep done</td>
7595<td align="center">FOCUSED_<wbr/>LOCKED</td>
7596<td align="center">Focused,<wbr/> Lens now locked</td>
7597</tr>
7598<tr>
7599<td align="center">ACTIVE_<wbr/>SCAN</td>
7600<td align="center">AF sweep done</td>
7601<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7602<td align="center">Not focused,<wbr/> Lens now locked</td>
7603</tr>
7604<tr>
7605<td align="center">ACTIVE_<wbr/>SCAN</td>
7606<td align="center">AF_<wbr/>CANCEL</td>
7607<td align="center">INACTIVE</td>
7608<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7609</tr>
7610<tr>
7611<td align="center">FOCUSED_<wbr/>LOCKED</td>
7612<td align="center">AF_<wbr/>CANCEL</td>
7613<td align="center">INACTIVE</td>
7614<td align="center">Cancel/<wbr/>reset AF</td>
7615</tr>
7616<tr>
7617<td align="center">FOCUSED_<wbr/>LOCKED</td>
7618<td align="center">AF_<wbr/>TRIGGER</td>
7619<td align="center">ACTIVE_<wbr/>SCAN</td>
7620<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7621</tr>
7622<tr>
7623<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7624<td align="center">AF_<wbr/>CANCEL</td>
7625<td align="center">INACTIVE</td>
7626<td align="center">Cancel/<wbr/>reset AF</td>
7627</tr>
7628<tr>
7629<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7630<td align="center">AF_<wbr/>TRIGGER</td>
7631<td align="center">ACTIVE_<wbr/>SCAN</td>
7632<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7633</tr>
7634<tr>
7635<td align="center">Any state</td>
7636<td align="center">Mode change</td>
7637<td align="center">INACTIVE</td>
7638<td align="center"></td>
7639</tr>
7640</tbody>
7641</table>
7642<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7643without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7644can be skipped in that manner is called a transient state.<wbr/></p>
7645<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7646state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7647one or more transient states between two results.<wbr/> See below table for examples:</p>
7648<table>
7649<thead>
7650<tr>
7651<th align="center">State</th>
7652<th align="center">Transition Cause</th>
7653<th align="center">New State</th>
7654<th align="center">Notes</th>
7655</tr>
7656</thead>
7657<tbody>
7658<tr>
7659<td align="center">INACTIVE</td>
7660<td align="center">AF_<wbr/>TRIGGER</td>
7661<td align="center">FOCUSED_<wbr/>LOCKED</td>
7662<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7663</tr>
7664<tr>
7665<td align="center">INACTIVE</td>
7666<td align="center">AF_<wbr/>TRIGGER</td>
7667<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7668<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7669</tr>
7670<tr>
7671<td align="center">FOCUSED_<wbr/>LOCKED</td>
7672<td align="center">AF_<wbr/>TRIGGER</td>
7673<td align="center">FOCUSED_<wbr/>LOCKED</td>
7674<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7675</tr>
7676<tr>
7677<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7678<td align="center">AF_<wbr/>TRIGGER</td>
7679<td align="center">FOCUSED_<wbr/>LOCKED</td>
7680<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7681</tr>
7682</tbody>
7683</table>
7684<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO:</p>
7685<table>
7686<thead>
7687<tr>
7688<th align="center">State</th>
7689<th align="center">Transition Cause</th>
7690<th align="center">New State</th>
7691<th align="center">Notes</th>
7692</tr>
7693</thead>
7694<tbody>
7695<tr>
7696<td align="center">INACTIVE</td>
7697<td align="center">Camera device initiates new scan</td>
7698<td align="center">PASSIVE_<wbr/>SCAN</td>
7699<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7700</tr>
7701<tr>
7702<td align="center">INACTIVE</td>
7703<td align="center">AF_<wbr/>TRIGGER</td>
7704<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7705<td align="center">AF state query,<wbr/> Lens now locked</td>
7706</tr>
7707<tr>
7708<td align="center">PASSIVE_<wbr/>SCAN</td>
7709<td align="center">Camera device completes current scan</td>
7710<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7711<td align="center">End AF scan,<wbr/> Lens now locked</td>
7712</tr>
7713<tr>
7714<td align="center">PASSIVE_<wbr/>SCAN</td>
7715<td align="center">Camera device fails current scan</td>
7716<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7717<td align="center">End AF scan,<wbr/> Lens now locked</td>
7718</tr>
7719<tr>
7720<td align="center">PASSIVE_<wbr/>SCAN</td>
7721<td align="center">AF_<wbr/>TRIGGER</td>
7722<td align="center">FOCUSED_<wbr/>LOCKED</td>
7723<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7724</tr>
7725<tr>
7726<td align="center">PASSIVE_<wbr/>SCAN</td>
7727<td align="center">AF_<wbr/>TRIGGER</td>
7728<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7729<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7730</tr>
7731<tr>
7732<td align="center">PASSIVE_<wbr/>SCAN</td>
7733<td align="center">AF_<wbr/>CANCEL</td>
7734<td align="center">INACTIVE</td>
7735<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7736</tr>
7737<tr>
7738<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7739<td align="center">Camera device initiates new scan</td>
7740<td align="center">PASSIVE_<wbr/>SCAN</td>
7741<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7742</tr>
7743<tr>
7744<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7745<td align="center">Camera device initiates new scan</td>
7746<td align="center">PASSIVE_<wbr/>SCAN</td>
7747<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7748</tr>
7749<tr>
7750<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7751<td align="center">AF_<wbr/>TRIGGER</td>
7752<td align="center">FOCUSED_<wbr/>LOCKED</td>
7753<td align="center">Immediate transition,<wbr/> lens now locked</td>
7754</tr>
7755<tr>
7756<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7757<td align="center">AF_<wbr/>TRIGGER</td>
7758<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7759<td align="center">Immediate transition,<wbr/> lens now locked</td>
7760</tr>
7761<tr>
7762<td align="center">FOCUSED_<wbr/>LOCKED</td>
7763<td align="center">AF_<wbr/>TRIGGER</td>
7764<td align="center">FOCUSED_<wbr/>LOCKED</td>
7765<td align="center">No effect</td>
7766</tr>
7767<tr>
7768<td align="center">FOCUSED_<wbr/>LOCKED</td>
7769<td align="center">AF_<wbr/>CANCEL</td>
7770<td align="center">INACTIVE</td>
7771<td align="center">Restart AF scan</td>
7772</tr>
7773<tr>
7774<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7775<td align="center">AF_<wbr/>TRIGGER</td>
7776<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7777<td align="center">No effect</td>
7778</tr>
7779<tr>
7780<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7781<td align="center">AF_<wbr/>CANCEL</td>
7782<td align="center">INACTIVE</td>
7783<td align="center">Restart AF scan</td>
7784</tr>
7785</tbody>
7786</table>
7787<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE:</p>
7788<table>
7789<thead>
7790<tr>
7791<th align="center">State</th>
7792<th align="center">Transition Cause</th>
7793<th align="center">New State</th>
7794<th align="center">Notes</th>
7795</tr>
7796</thead>
7797<tbody>
7798<tr>
7799<td align="center">INACTIVE</td>
7800<td align="center">Camera device initiates new scan</td>
7801<td align="center">PASSIVE_<wbr/>SCAN</td>
7802<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7803</tr>
7804<tr>
7805<td align="center">INACTIVE</td>
7806<td align="center">AF_<wbr/>TRIGGER</td>
7807<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7808<td align="center">AF state query,<wbr/> Lens now locked</td>
7809</tr>
7810<tr>
7811<td align="center">PASSIVE_<wbr/>SCAN</td>
7812<td align="center">Camera device completes current scan</td>
7813<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7814<td align="center">End AF scan,<wbr/> Lens now locked</td>
7815</tr>
7816<tr>
7817<td align="center">PASSIVE_<wbr/>SCAN</td>
7818<td align="center">Camera device fails current scan</td>
7819<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7820<td align="center">End AF scan,<wbr/> Lens now locked</td>
7821</tr>
7822<tr>
7823<td align="center">PASSIVE_<wbr/>SCAN</td>
7824<td align="center">AF_<wbr/>TRIGGER</td>
7825<td align="center">FOCUSED_<wbr/>LOCKED</td>
7826<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7827</tr>
7828<tr>
7829<td align="center">PASSIVE_<wbr/>SCAN</td>
7830<td align="center">AF_<wbr/>TRIGGER</td>
7831<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7832<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7833</tr>
7834<tr>
7835<td align="center">PASSIVE_<wbr/>SCAN</td>
7836<td align="center">AF_<wbr/>CANCEL</td>
7837<td align="center">INACTIVE</td>
7838<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7839</tr>
7840<tr>
7841<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7842<td align="center">Camera device initiates new scan</td>
7843<td align="center">PASSIVE_<wbr/>SCAN</td>
7844<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7845</tr>
7846<tr>
7847<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7848<td align="center">Camera device initiates new scan</td>
7849<td align="center">PASSIVE_<wbr/>SCAN</td>
7850<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7851</tr>
7852<tr>
7853<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7854<td align="center">AF_<wbr/>TRIGGER</td>
7855<td align="center">FOCUSED_<wbr/>LOCKED</td>
7856<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7857</tr>
7858<tr>
7859<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7860<td align="center">AF_<wbr/>TRIGGER</td>
7861<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7862<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7863</tr>
7864<tr>
7865<td align="center">FOCUSED_<wbr/>LOCKED</td>
7866<td align="center">AF_<wbr/>TRIGGER</td>
7867<td align="center">FOCUSED_<wbr/>LOCKED</td>
7868<td align="center">No effect</td>
7869</tr>
7870<tr>
7871<td align="center">FOCUSED_<wbr/>LOCKED</td>
7872<td align="center">AF_<wbr/>CANCEL</td>
7873<td align="center">INACTIVE</td>
7874<td align="center">Restart AF scan</td>
7875</tr>
7876<tr>
7877<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7878<td align="center">AF_<wbr/>TRIGGER</td>
7879<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7880<td align="center">No effect</td>
7881</tr>
7882<tr>
7883<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7884<td align="center">AF_<wbr/>CANCEL</td>
7885<td align="center">INACTIVE</td>
7886<td align="center">Restart AF scan</td>
7887</tr>
7888</tbody>
7889</table>
7890<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7891(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7892camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7893will be evaluated in the context of the new mode in the request.<wbr/>
7894See below table for examples:</p>
7895<table>
7896<thead>
7897<tr>
7898<th align="center">State</th>
7899<th align="center">Transition Cause</th>
7900<th align="center">New State</th>
7901<th align="center">Notes</th>
7902</tr>
7903</thead>
7904<tbody>
7905<tr>
7906<td align="center">any state</td>
7907<td align="center">CAF--&gt;AUTO mode switch</td>
7908<td align="center">INACTIVE</td>
7909<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7910</tr>
7911<tr>
7912<td align="center">any state</td>
7913<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7914<td align="center">trigger-reachable states from INACTIVE</td>
7915<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7916</tr>
7917<tr>
7918<td align="center">any state</td>
7919<td align="center">AUTO--&gt;CAF mode switch</td>
7920<td align="center">passively reachable states from INACTIVE</td>
7921<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7922</tr>
7923</tbody>
7924</table>
7925            </td>
7926          </tr>
7927
7928
7929          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7930           <!-- end of entry -->
7931
7932
7933          <tr class="entry" id="dynamic_android.control.afTriggerId">
7934            <td class="entry_name
7935                entry_name_deprecated
7936             " rowspan="3">
7937              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7938            </td>
7939            <td class="entry_type">
7940                <span class="entry_type_name">int32</span>
7941
7942              <span class="entry_type_visibility"> [system]</span>
7943
7944
7945
7946              <span class="entry_type_deprecated">[deprecated] </span>
7947
7948
7949
7950            </td> <!-- entry_type -->
7951
7952            <td class="entry_description">
7953              <p>The ID sent with the latest
7954CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7955            </td>
7956
7957            <td class="entry_units">
7958            </td>
7959
7960            <td class="entry_range">
7961              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7962            </td>
7963
7964            <td class="entry_hal_version">
7965              <p>3.<wbr/>2</p>
7966            </td>
7967
7968            <td class="entry_tags">
7969            </td>
7970
7971          </tr>
7972          <tr class="entries_header">
7973            <th class="th_details" colspan="6">Details</th>
7974          </tr>
7975          <tr class="entry_cont">
7976            <td class="entry_details" colspan="6">
7977              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7978received yet by HAL.<wbr/> Always updated even if AF algorithm
7979ignores the trigger</p>
7980            </td>
7981          </tr>
7982
7983
7984          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7985           <!-- end of entry -->
7986
7987
7988          <tr class="entry" id="dynamic_android.control.awbLock">
7989            <td class="entry_name
7990             " rowspan="3">
7991              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7992            </td>
7993            <td class="entry_type">
7994                <span class="entry_type_name entry_type_name_enum">byte</span>
7995
7996              <span class="entry_type_visibility"> [public as boolean]</span>
7997
7998
7999              <span class="entry_type_hwlevel">[legacy] </span>
8000
8001
8002
8003                <ul class="entry_type_enum">
8004                  <li>
8005                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8006                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
8007algorithm is free to update its parameters if in AUTO
8008mode.<wbr/></p></span>
8009                  </li>
8010                  <li>
8011                    <span class="entry_type_enum_name">ON (v3.2)</span>
8012                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
8013algorithm will not update its parameters while the lock
8014is active.<wbr/></p></span>
8015                  </li>
8016                </ul>
8017
8018            </td> <!-- entry_type -->
8019
8020            <td class="entry_description">
8021              <p>Whether auto-white balance (AWB) is currently locked to its
8022latest calculated values.<wbr/></p>
8023            </td>
8024
8025            <td class="entry_units">
8026            </td>
8027
8028            <td class="entry_range">
8029            </td>
8030
8031            <td class="entry_hal_version">
8032              <p>3.<wbr/>2</p>
8033            </td>
8034
8035            <td class="entry_tags">
8036              <ul class="entry_tags">
8037                  <li><a href="#tag_BC">BC</a></li>
8038              </ul>
8039            </td>
8040
8041          </tr>
8042          <tr class="entries_header">
8043            <th class="th_details" colspan="6">Details</th>
8044          </tr>
8045          <tr class="entry_cont">
8046            <td class="entry_details" colspan="6">
8047              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8048and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8049<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8050get locked do not necessarily correspond to the settings that were present in the
8051latest capture result received from the camera device,<wbr/> since additional captures
8052and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8053application is switching between automatic and manual control and wishes to eliminate
8054any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8055<ol>
8056<li>Starting in auto-AWB mode:</li>
8057<li>Lock AWB</li>
8058<li>Wait for the first result to be output that has the AWB locked</li>
8059<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8060<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8061</ol>
8062<p>Note that AWB lock is only meaningful when
8063<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8064AWB is already fixed to a specific setting.<wbr/></p>
8065<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8066            </td>
8067          </tr>
8068
8069
8070          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8071           <!-- end of entry -->
8072
8073
8074          <tr class="entry" id="dynamic_android.control.awbMode">
8075            <td class="entry_name
8076             " rowspan="3">
8077              android.<wbr/>control.<wbr/>awb<wbr/>Mode
8078            </td>
8079            <td class="entry_type">
8080                <span class="entry_type_name entry_type_name_enum">byte</span>
8081
8082              <span class="entry_type_visibility"> [public]</span>
8083
8084
8085              <span class="entry_type_hwlevel">[legacy] </span>
8086
8087
8088
8089                <ul class="entry_type_enum">
8090                  <li>
8091                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8092                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8093<p>The application-selected color transform matrix
8094(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8095(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8096device for manual white balance control.<wbr/></p></span>
8097                  </li>
8098                  <li>
8099                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8100                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8101<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8102and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8103For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8104values used by the camera device for the transform and gains
8105will be available in the capture result for this request.<wbr/></p></span>
8106                  </li>
8107                  <li>
8108                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8109                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8110the camera device uses incandescent light as the assumed scene
8111illumination for white balance.<wbr/></p>
8112<p>While the exact white balance transforms are up to the
8113camera device,<wbr/> they will approximately match the CIE
8114standard illuminant A.<wbr/></p>
8115<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8116and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8117For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8118values used by the camera device for the transform and gains
8119will be available in the capture result for this request.<wbr/></p></span>
8120                  </li>
8121                  <li>
8122                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8123                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8124the camera device uses fluorescent light as the assumed scene
8125illumination for white balance.<wbr/></p>
8126<p>While the exact white balance transforms are up to the
8127camera device,<wbr/> they will approximately match the CIE
8128standard illuminant F2.<wbr/></p>
8129<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8130and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8131For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8132values used by the camera device for the transform and gains
8133will be available in the capture result for this request.<wbr/></p></span>
8134                  </li>
8135                  <li>
8136                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8137                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8138the camera device uses warm fluorescent light as the assumed scene
8139illumination for white balance.<wbr/></p>
8140<p>While the exact white balance transforms are up to the
8141camera device,<wbr/> they will approximately match the CIE
8142standard illuminant F4.<wbr/></p>
8143<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8144and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8145For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8146values used by the camera device for the transform and gains
8147will be available in the capture result for this request.<wbr/></p></span>
8148                  </li>
8149                  <li>
8150                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8151                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8152the camera device uses daylight light as the assumed scene
8153illumination for white balance.<wbr/></p>
8154<p>While the exact white balance transforms are up to the
8155camera device,<wbr/> they will approximately match the CIE
8156standard illuminant D65.<wbr/></p>
8157<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8158and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8159For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8160values used by the camera device for the transform and gains
8161will be available in the capture result for this request.<wbr/></p></span>
8162                  </li>
8163                  <li>
8164                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8165                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8166the camera device uses cloudy daylight light as the assumed scene
8167illumination for white balance.<wbr/></p>
8168<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8169and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8170For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8171values used by the camera device for the transform and gains
8172will be available in the capture result for this request.<wbr/></p></span>
8173                  </li>
8174                  <li>
8175                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8176                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8177the camera device uses twilight light as the assumed scene
8178illumination for white balance.<wbr/></p>
8179<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8180and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8181For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8182values used by the camera device for the transform and gains
8183will be available in the capture result for this request.<wbr/></p></span>
8184                  </li>
8185                  <li>
8186                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
8187                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8188the camera device uses shade light as the assumed scene
8189illumination for white balance.<wbr/></p>
8190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8193values used by the camera device for the transform and gains
8194will be available in the capture result for this request.<wbr/></p></span>
8195                  </li>
8196                </ul>
8197
8198            </td> <!-- entry_type -->
8199
8200            <td class="entry_description">
8201              <p>Whether auto-white balance (AWB) is currently setting the color
8202transform fields,<wbr/> and what its illumination target
8203is.<wbr/></p>
8204            </td>
8205
8206            <td class="entry_units">
8207            </td>
8208
8209            <td class="entry_range">
8210              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8211            </td>
8212
8213            <td class="entry_hal_version">
8214              <p>3.<wbr/>2</p>
8215            </td>
8216
8217            <td class="entry_tags">
8218              <ul class="entry_tags">
8219                  <li><a href="#tag_BC">BC</a></li>
8220              </ul>
8221            </td>
8222
8223          </tr>
8224          <tr class="entries_header">
8225            <th class="th_details" colspan="6">Details</th>
8226          </tr>
8227          <tr class="entry_cont">
8228            <td class="entry_details" colspan="6">
8229              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8230<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8231routine is enabled,<wbr/> overriding the application's selected
8232<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8233<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
8234is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8235also 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
8236setting AE mode to OFF.<wbr/></p>
8237<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8238routine is disabled.<wbr/> The application manually controls the white
8239balance 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>
8240and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8241<p>When set to any other modes,<wbr/> the camera device's auto-white
8242balance routine is disabled.<wbr/> The camera device uses each
8243particular illumination target for white balance
8244adjustment.<wbr/> The application's values for
8245<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8246<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8247<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8248            </td>
8249          </tr>
8250
8251
8252          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8253           <!-- end of entry -->
8254
8255
8256          <tr class="entry" id="dynamic_android.control.awbRegions">
8257            <td class="entry_name
8258             " rowspan="5">
8259              android.<wbr/>control.<wbr/>awb<wbr/>Regions
8260            </td>
8261            <td class="entry_type">
8262                <span class="entry_type_name">int32</span>
8263                <span class="entry_type_container">x</span>
8264
8265                <span class="entry_type_array">
8266                  5 x area_count
8267                </span>
8268              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8269
8270
8271
8272
8273
8274
8275            </td> <!-- entry_type -->
8276
8277            <td class="entry_description">
8278              <p>List of metering areas to use for auto-white-balance illuminant
8279estimation.<wbr/></p>
8280            </td>
8281
8282            <td class="entry_units">
8283              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8284            </td>
8285
8286            <td class="entry_range">
8287              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8288<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8289            </td>
8290
8291            <td class="entry_hal_version">
8292              <p>3.<wbr/>2</p>
8293            </td>
8294
8295            <td class="entry_tags">
8296              <ul class="entry_tags">
8297                  <li><a href="#tag_BC">BC</a></li>
8298              </ul>
8299            </td>
8300
8301          </tr>
8302          <tr class="entries_header">
8303            <th class="th_details" colspan="6">Details</th>
8304          </tr>
8305          <tr class="entry_cont">
8306            <td class="entry_details" colspan="6">
8307              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8308Otherwise will always be present.<wbr/></p>
8309<p>The maximum number of regions supported by the device is determined by the value
8310of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8311<p>The coordinate system is based on the active pixel array,<wbr/>
8312with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8313(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8314<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8315bottom-right pixel in the active pixel array.<wbr/></p>
8316<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8317for every pixel in the area.<wbr/> This means that a large metering area
8318with the same weight as a smaller area will have more effect in
8319the metering result.<wbr/> Metering areas can partially overlap and the
8320camera device will add the weights in the overlap region.<wbr/></p>
8321<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8322only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
83230 weight is ignored.<wbr/></p>
8324<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8325camera device.<wbr/></p>
8326<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
8327capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8328region and output only the intersection rectangle as the metering region in the result
8329metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8330not reported in the result metadata.<wbr/></p>
8331            </td>
8332          </tr>
8333
8334          <tr class="entries_header">
8335            <th class="th_details" colspan="6">HAL Implementation Details</th>
8336          </tr>
8337          <tr class="entry_cont">
8338            <td class="entry_details" colspan="6">
8339              <p>The HAL level representation of MeteringRectangle[] is a
8340int[5 * area_<wbr/>count].<wbr/>
8341Every five elements represent a metering region of
8342(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8343The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8344exclusive on xmax and ymax.<wbr/></p>
8345            </td>
8346          </tr>
8347
8348          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8349           <!-- end of entry -->
8350
8351
8352          <tr class="entry" id="dynamic_android.control.captureIntent">
8353            <td class="entry_name
8354             " rowspan="3">
8355              android.<wbr/>control.<wbr/>capture<wbr/>Intent
8356            </td>
8357            <td class="entry_type">
8358                <span class="entry_type_name entry_type_name_enum">byte</span>
8359
8360              <span class="entry_type_visibility"> [public]</span>
8361
8362
8363              <span class="entry_type_hwlevel">[legacy] </span>
8364
8365
8366
8367                <ul class="entry_type_enum">
8368                  <li>
8369                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8370                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8371categories.<wbr/> The camera device will default to preview-like
8372behavior.<wbr/></p></span>
8373                  </li>
8374                  <li>
8375                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8376                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8377<p>The precapture trigger may be used to start off a metering
8378w/<wbr/>flash sequence.<wbr/></p></span>
8379                  </li>
8380                  <li>
8381                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8382                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8383use case.<wbr/></p>
8384<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8385                  </li>
8386                  <li>
8387                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8388                    <span class="entry_type_enum_notes"><p>This request is for a video recording
8389use case.<wbr/></p></span>
8390                  </li>
8391                  <li>
8392                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8393                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8394image while recording video) use case.<wbr/></p>
8395<p>The camera device should take the highest-quality image
8396possible (given the other settings) without disrupting the
8397frame rate of video recording.<wbr/>  </p></span>
8398                  </li>
8399                  <li>
8400                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8401                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8402application will stream full-resolution images and
8403reprocess one or several later for a final
8404capture.<wbr/></p></span>
8405                  </li>
8406                  <li>
8407                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8408                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8409the applications want to directly control the capture parameters.<wbr/></p>
8410<p>For example,<wbr/> the application may wish to manually control
8411<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
8412                  </li>
8413                  <li>
8414                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8415                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8416the application will use camera and inertial sensor data to
8417locate and track objects in the world.<wbr/></p>
8418<p>The camera device auto-exposure routine will limit the exposure time
8419of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8420                  </li>
8421                </ul>
8422
8423            </td> <!-- entry_type -->
8424
8425            <td class="entry_description">
8426              <p>Information to the camera device 3A (auto-exposure,<wbr/>
8427auto-focus,<wbr/> auto-white balance) routines about the purpose
8428of this capture,<wbr/> to help the camera device to decide optimal 3A
8429strategy.<wbr/></p>
8430            </td>
8431
8432            <td class="entry_units">
8433            </td>
8434
8435            <td class="entry_range">
8436            </td>
8437
8438            <td class="entry_hal_version">
8439              <p>3.<wbr/>2</p>
8440            </td>
8441
8442            <td class="entry_tags">
8443              <ul class="entry_tags">
8444                  <li><a href="#tag_BC">BC</a></li>
8445              </ul>
8446            </td>
8447
8448          </tr>
8449          <tr class="entries_header">
8450            <th class="th_details" colspan="6">Details</th>
8451          </tr>
8452          <tr class="entry_cont">
8453            <td class="entry_details" colspan="6">
8454              <p>This control (except for MANUAL) is only effective if
8455<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8456<p>All intents are supported by all devices,<wbr/> except that:
8457  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8458PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8459  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8460MANUAL_<wbr/>SENSOR.<wbr/>
8461  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8462MOTION_<wbr/>TRACKING.<wbr/></p>
8463            </td>
8464          </tr>
8465
8466
8467          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8468           <!-- end of entry -->
8469
8470
8471          <tr class="entry" id="dynamic_android.control.awbState">
8472            <td class="entry_name
8473             " rowspan="3">
8474              android.<wbr/>control.<wbr/>awb<wbr/>State
8475            </td>
8476            <td class="entry_type">
8477                <span class="entry_type_name entry_type_name_enum">byte</span>
8478
8479              <span class="entry_type_visibility"> [public]</span>
8480
8481
8482              <span class="entry_type_hwlevel">[limited] </span>
8483
8484
8485
8486                <ul class="entry_type_enum">
8487                  <li>
8488                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8489                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8490<p>When a camera device is opened,<wbr/> it starts in this
8491state.<wbr/> This is a transient state,<wbr/> the camera device may
8492skip reporting this state in capture
8493result.<wbr/></p></span>
8494                  </li>
8495                  <li>
8496                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8497                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8498values for the current scene.<wbr/></p>
8499<p>This is a transient state,<wbr/> the camera device
8500may skip reporting this state in capture result.<wbr/></p></span>
8501                  </li>
8502                  <li>
8503                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8504                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8505current scene.<wbr/></p></span>
8506                  </li>
8507                  <li>
8508                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8509                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8510                  </li>
8511                </ul>
8512
8513            </td> <!-- entry_type -->
8514
8515            <td class="entry_description">
8516              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8517            </td>
8518
8519            <td class="entry_units">
8520            </td>
8521
8522            <td class="entry_range">
8523            </td>
8524
8525            <td class="entry_hal_version">
8526              <p>3.<wbr/>2</p>
8527            </td>
8528
8529            <td class="entry_tags">
8530            </td>
8531
8532          </tr>
8533          <tr class="entries_header">
8534            <th class="th_details" colspan="6">Details</th>
8535          </tr>
8536          <tr class="entry_cont">
8537            <td class="entry_details" colspan="6">
8538              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8539resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8540or <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
8541the algorithm states to INACTIVE.<wbr/></p>
8542<p>The camera device can do several state transitions between two results,<wbr/> if it is
8543allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8544a result.<wbr/></p>
8545<p>The state in the result is the state for this image (in sync with this image): if
8546AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8547be good to use.<wbr/></p>
8548<p>Below are state transition tables for different AWB modes.<wbr/></p>
8549<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8550<table>
8551<thead>
8552<tr>
8553<th align="center">State</th>
8554<th align="center">Transition Cause</th>
8555<th align="center">New State</th>
8556<th align="center">Notes</th>
8557</tr>
8558</thead>
8559<tbody>
8560<tr>
8561<td align="center">INACTIVE</td>
8562<td align="center"></td>
8563<td align="center">INACTIVE</td>
8564<td align="center">Camera device auto white balance algorithm is disabled</td>
8565</tr>
8566</tbody>
8567</table>
8568<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8569<table>
8570<thead>
8571<tr>
8572<th align="center">State</th>
8573<th align="center">Transition Cause</th>
8574<th align="center">New State</th>
8575<th align="center">Notes</th>
8576</tr>
8577</thead>
8578<tbody>
8579<tr>
8580<td align="center">INACTIVE</td>
8581<td align="center">Camera device initiates AWB scan</td>
8582<td align="center">SEARCHING</td>
8583<td align="center">Values changing</td>
8584</tr>
8585<tr>
8586<td align="center">INACTIVE</td>
8587<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8588<td align="center">LOCKED</td>
8589<td align="center">Values locked</td>
8590</tr>
8591<tr>
8592<td align="center">SEARCHING</td>
8593<td align="center">Camera device finishes AWB scan</td>
8594<td align="center">CONVERGED</td>
8595<td align="center">Good values,<wbr/> not changing</td>
8596</tr>
8597<tr>
8598<td align="center">SEARCHING</td>
8599<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8600<td align="center">LOCKED</td>
8601<td align="center">Values locked</td>
8602</tr>
8603<tr>
8604<td align="center">CONVERGED</td>
8605<td align="center">Camera device initiates AWB scan</td>
8606<td align="center">SEARCHING</td>
8607<td align="center">Values changing</td>
8608</tr>
8609<tr>
8610<td align="center">CONVERGED</td>
8611<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8612<td align="center">LOCKED</td>
8613<td align="center">Values locked</td>
8614</tr>
8615<tr>
8616<td align="center">LOCKED</td>
8617<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8618<td align="center">SEARCHING</td>
8619<td align="center">Values not good after unlock</td>
8620</tr>
8621</tbody>
8622</table>
8623<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8624without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8625can be skipped in that manner is called a transient state.<wbr/></p>
8626<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8627listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8628transient states between two results.<wbr/> See below table for examples:</p>
8629<table>
8630<thead>
8631<tr>
8632<th align="center">State</th>
8633<th align="center">Transition Cause</th>
8634<th align="center">New State</th>
8635<th align="center">Notes</th>
8636</tr>
8637</thead>
8638<tbody>
8639<tr>
8640<td align="center">INACTIVE</td>
8641<td align="center">Camera device finished AWB scan</td>
8642<td align="center">CONVERGED</td>
8643<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8644</tr>
8645<tr>
8646<td align="center">LOCKED</td>
8647<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8648<td align="center">CONVERGED</td>
8649<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8650</tr>
8651</tbody>
8652</table>
8653            </td>
8654          </tr>
8655
8656
8657          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8658           <!-- end of entry -->
8659
8660
8661          <tr class="entry" id="dynamic_android.control.effectMode">
8662            <td class="entry_name
8663             " rowspan="3">
8664              android.<wbr/>control.<wbr/>effect<wbr/>Mode
8665            </td>
8666            <td class="entry_type">
8667                <span class="entry_type_name entry_type_name_enum">byte</span>
8668
8669              <span class="entry_type_visibility"> [public]</span>
8670
8671
8672              <span class="entry_type_hwlevel">[legacy] </span>
8673
8674
8675
8676                <ul class="entry_type_enum">
8677                  <li>
8678                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8679                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8680                  </li>
8681                  <li>
8682                    <span class="entry_type_enum_name">MONO (v3.2)</span>
8683                    <span class="entry_type_enum_optional">[optional]</span>
8684                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8685a single color.<wbr/></p>
8686<p>This will typically be grayscale.<wbr/></p></span>
8687                  </li>
8688                  <li>
8689                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8690                    <span class="entry_type_enum_optional">[optional]</span>
8691                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8692are inverted.<wbr/></p></span>
8693                  </li>
8694                  <li>
8695                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8696                    <span class="entry_type_enum_optional">[optional]</span>
8697                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8698image is wholly or partially reversed in
8699tone.<wbr/></p></span>
8700                  </li>
8701                  <li>
8702                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8703                    <span class="entry_type_enum_optional">[optional]</span>
8704                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8705gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8706                  </li>
8707                  <li>
8708                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8709                    <span class="entry_type_enum_optional">[optional]</span>
8710                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8711discrete regions of tone rather than a continuous
8712gradient of tones.<wbr/></p></span>
8713                  </li>
8714                  <li>
8715                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8716                    <span class="entry_type_enum_optional">[optional]</span>
8717                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8718as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8719                  </li>
8720                  <li>
8721                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8722                    <span class="entry_type_enum_optional">[optional]</span>
8723                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8724as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8725                  </li>
8726                  <li>
8727                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
8728                    <span class="entry_type_enum_optional">[optional]</span>
8729                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8730                  </li>
8731                </ul>
8732
8733            </td> <!-- entry_type -->
8734
8735            <td class="entry_description">
8736              <p>A special color effect to apply.<wbr/></p>
8737            </td>
8738
8739            <td class="entry_units">
8740            </td>
8741
8742            <td class="entry_range">
8743              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8744            </td>
8745
8746            <td class="entry_hal_version">
8747              <p>3.<wbr/>2</p>
8748            </td>
8749
8750            <td class="entry_tags">
8751              <ul class="entry_tags">
8752                  <li><a href="#tag_BC">BC</a></li>
8753              </ul>
8754            </td>
8755
8756          </tr>
8757          <tr class="entries_header">
8758            <th class="th_details" colspan="6">Details</th>
8759          </tr>
8760          <tr class="entry_cont">
8761            <td class="entry_details" colspan="6">
8762              <p>When this mode is set,<wbr/> a color effect will be applied
8763to images produced by the camera device.<wbr/> The interpretation
8764and implementation of these color effects is left to the
8765implementor of the camera device,<wbr/> and should not be
8766depended on to be consistent (or present) across all
8767devices.<wbr/></p>
8768            </td>
8769          </tr>
8770
8771
8772          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8773           <!-- end of entry -->
8774
8775
8776          <tr class="entry" id="dynamic_android.control.mode">
8777            <td class="entry_name
8778             " rowspan="3">
8779              android.<wbr/>control.<wbr/>mode
8780            </td>
8781            <td class="entry_type">
8782                <span class="entry_type_name entry_type_name_enum">byte</span>
8783
8784              <span class="entry_type_visibility"> [public]</span>
8785
8786
8787              <span class="entry_type_hwlevel">[legacy] </span>
8788
8789
8790
8791                <ul class="entry_type_enum">
8792                  <li>
8793                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8794                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8795<p>All control by the device's metering and focusing (3A)
8796routines is disabled,<wbr/> and no other settings in
8797android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8798<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8799device to select post-processing values for processing
8800blocks that do not allow for manual control,<wbr/> or are not
8801exposed by the camera API.<wbr/></p>
8802<p>However,<wbr/> the camera device's 3A routines may continue to
8803collect statistics and update their internal state so that
8804when control is switched to AUTO mode,<wbr/> good control values
8805can be immediately applied.<wbr/></p></span>
8806                  </li>
8807                  <li>
8808                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8809                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8810<p>Manual control of capture parameters is disabled.<wbr/> All
8811controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8812effect.<wbr/></p></span>
8813                  </li>
8814                  <li>
8815                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8816                    <span class="entry_type_enum_optional">[optional]</span>
8817                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8818<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8819control.<wbr/>afMode controls; the camera device will ignore
8820those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8821FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8822This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8823<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8824contain some modes other than DISABLED).<wbr/></p></span>
8825                  </li>
8826                  <li>
8827                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8828                    <span class="entry_type_enum_optional">[optional]</span>
8829                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8830used by camera device background auto-exposure,<wbr/> auto-white balance and
8831auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8832<p>Specifically,<wbr/> the 3A routines are locked to the last
8833values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8834USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8835collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8836discarded by the camera device.<wbr/></p></span>
8837                  </li>
8838                </ul>
8839
8840            </td> <!-- entry_type -->
8841
8842            <td class="entry_description">
8843              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8844routines.<wbr/></p>
8845            </td>
8846
8847            <td class="entry_units">
8848            </td>
8849
8850            <td class="entry_range">
8851              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8852            </td>
8853
8854            <td class="entry_hal_version">
8855              <p>3.<wbr/>2</p>
8856            </td>
8857
8858            <td class="entry_tags">
8859              <ul class="entry_tags">
8860                  <li><a href="#tag_BC">BC</a></li>
8861              </ul>
8862            </td>
8863
8864          </tr>
8865          <tr class="entries_header">
8866            <th class="th_details" colspan="6">Details</th>
8867          </tr>
8868          <tr class="entry_cont">
8869            <td class="entry_details" colspan="6">
8870              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8871by the camera device is disabled.<wbr/> The application must set the fields for
8872capture parameters itself.<wbr/></p>
8873<p>When set to AUTO,<wbr/> the individual algorithm controls in
8874android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
8875<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8876android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8877implements one of the scene mode settings (such as ACTION,<wbr/>
8878SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
88793A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8880<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8881is that this frame will not be used by camera device background 3A statistics
8882update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8883where the application doesn't want a 3A manual control capture to affect
8884the subsequent auto 3A capture results.<wbr/></p>
8885            </td>
8886          </tr>
8887
8888
8889          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8890           <!-- end of entry -->
8891
8892
8893          <tr class="entry" id="dynamic_android.control.sceneMode">
8894            <td class="entry_name
8895             " rowspan="5">
8896              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8897            </td>
8898            <td class="entry_type">
8899                <span class="entry_type_name entry_type_name_enum">byte</span>
8900
8901              <span class="entry_type_visibility"> [public]</span>
8902
8903
8904              <span class="entry_type_hwlevel">[legacy] </span>
8905
8906
8907
8908                <ul class="entry_type_enum">
8909                  <li>
8910                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8911                    <span class="entry_type_enum_value">0</span>
8912                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8913                  </li>
8914                  <li>
8915                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8916                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8917detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8918auto-exposure routines.<wbr/></p>
8919<p>If face detection statistics are disabled
8920(i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
8921this should still operate correctly (but will not return
8922face detection statistics to the framework).<wbr/></p>
8923<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8924<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
8925remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8926                  </li>
8927                  <li>
8928                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
8929                    <span class="entry_type_enum_optional">[optional]</span>
8930                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8931<p>Similar to SPORTS.<wbr/></p></span>
8932                  </li>
8933                  <li>
8934                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8935                    <span class="entry_type_enum_optional">[optional]</span>
8936                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8937                  </li>
8938                  <li>
8939                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8940                    <span class="entry_type_enum_optional">[optional]</span>
8941                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8942                  </li>
8943                  <li>
8944                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8945                    <span class="entry_type_enum_optional">[optional]</span>
8946                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8947                  </li>
8948                  <li>
8949                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8950                    <span class="entry_type_enum_optional">[optional]</span>
8951                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8952settings.<wbr/></p></span>
8953                  </li>
8954                  <li>
8955                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8956                    <span class="entry_type_enum_optional">[optional]</span>
8957                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8958remain off.<wbr/></p></span>
8959                  </li>
8960                  <li>
8961                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
8962                    <span class="entry_type_enum_optional">[optional]</span>
8963                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8964                  </li>
8965                  <li>
8966                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
8967                    <span class="entry_type_enum_optional">[optional]</span>
8968                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8969                  </li>
8970                  <li>
8971                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8972                    <span class="entry_type_enum_optional">[optional]</span>
8973                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8974                  </li>
8975                  <li>
8976                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8977                    <span class="entry_type_enum_optional">[optional]</span>
8978                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8979device motion (for example: due to hand shake).<wbr/></p></span>
8980                  </li>
8981                  <li>
8982                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8983                    <span class="entry_type_enum_optional">[optional]</span>
8984                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8985                  </li>
8986                  <li>
8987                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8988                    <span class="entry_type_enum_optional">[optional]</span>
8989                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8990<p>Similar to ACTION.<wbr/></p></span>
8991                  </li>
8992                  <li>
8993                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
8994                    <span class="entry_type_enum_optional">[optional]</span>
8995                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8996people.<wbr/></p></span>
8997                  </li>
8998                  <li>
8999                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
9000                    <span class="entry_type_enum_optional">[optional]</span>
9001                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
9002is a flame.<wbr/></p></span>
9003                  </li>
9004                  <li>
9005                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
9006                    <span class="entry_type_enum_optional">[optional]</span>
9007                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
9008for use by camera applications that wish to read the
9009barcode value.<wbr/></p></span>
9010                  </li>
9011                  <li>
9012                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
9013                    <span class="entry_type_enum_deprecated">[deprecated]</span>
9014                    <span class="entry_type_enum_optional">[optional]</span>
9015                    <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
9016and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
9017for high speed video recording.<wbr/></p>
9018<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
9019<p>The supported high speed video sizes and fps ranges are specified in
9020<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
9021output frame rates,<wbr/> the application is only allowed to select video size
9022and fps range combinations listed in this static metadata.<wbr/> The fps range
9023can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
9024<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
9025ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
9026controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
9027and post-processing parameters is possible.<wbr/> All other controls operate the
9028same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
9029android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
9030<ul>
9031<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
9032<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
9033<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
9034<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
9035<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9036<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9037<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9038<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9039<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9040<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9041</ul>
9042<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9043<ul>
9044<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
9045<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9046<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9047<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9048</ul>
9049<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9050be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9051the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9052the application need check if the video encoder is capable of supporting the
9053high frame rate for a given video size,<wbr/> or it will end up with lower recording
9054frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9055rate will be bounded by the screen refresh rate.<wbr/></p>
9056<p>The camera device will only support up to 2 output high speed streams
9057(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9058in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9059<ul>
9060<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9061format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9062min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
9063<li>The stream sizes are selected from the sizes reported by
9064<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9065<li>No processed non-stalling or raw streams are configured.<wbr/></li>
9066</ul>
9067<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9068<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
9069the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9070and the returned capture result metadata will give the fps range choosen
9071by the camera device.<wbr/></p>
9072<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9073reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9074the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9075                  </li>
9076                  <li>
9077                    <span class="entry_type_enum_name">HDR (v3.2)</span>
9078                    <span class="entry_type_enum_optional">[optional]</span>
9079                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9080<p>In this scene mode,<wbr/> the camera device captures images
9081that keep a larger range of scene illumination levels
9082visible in the final image.<wbr/> For example,<wbr/> when taking a
9083picture of a object in front of a bright window,<wbr/> both
9084the object and the scene through the window may be
9085visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9086one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9087HDR mode generally takes much longer to capture a single
9088image,<wbr/> has no user control,<wbr/> and may have other artifacts
9089depending on the HDR method used.<wbr/></p>
9090<p>Therefore,<wbr/> HDR captures operate at a much slower rate
9091than regular captures.<wbr/></p>
9092<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9093is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9094STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9095using a high dynamic range capture technique.<wbr/>  On LEGACY
9096devices,<wbr/> captures that target a JPEG-format output will
9097be captured with HDR,<wbr/> and the capture intent is not
9098relevant.<wbr/></p>
9099<p>The HDR capture may involve the device capturing a burst
9100of images internally and combining them into one,<wbr/> or it
9101may involve the device using specialized high dynamic
9102range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9103produced in response to a capture request submitted
9104while in HDR mode.<wbr/></p>
9105<p>Since substantial post-processing is generally needed to
9106produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9107outputs are supported for LIMITED/<wbr/>FULL device HDR
9108captures,<wbr/> and only JPEG outputs are supported for LEGACY
9109HDR captures.<wbr/> Using a RAW output for HDR capture is not
9110supported.<wbr/></p>
9111<p>Some devices may also support always-on HDR,<wbr/> which
9112applies HDR processing at full frame rate.<wbr/>  For these
9113devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9114produce an HDR output with no frame rate impact compared
9115to normal operation,<wbr/> though the quality may be lower
9116than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9117<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9118or capture intents,<wbr/> the images captured will be as if
9119the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9120                  </li>
9121                  <li>
9122                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9123                    <span class="entry_type_enum_optional">[optional]</span>
9124                    <span class="entry_type_enum_hidden">[hidden]</span>
9125                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9126device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9127under low light conditions.<wbr/></p>
9128<p>The camera device may be tuned to expose the images in a reduced
9129sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9130if 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/>
9131the camera device auto-exposure routine tuning process may limit the actual
9132exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9133exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9134low light may be under-exposed when the sensor max exposure time (bounded by the
9135<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
9136ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9137camera device auto-exposure routine to increase the sensitivity up to the max
9138sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
9139dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9140compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9141recommended that the application only use this scene mode when it is capable of
9142reducing the noise level of the captured images.<wbr/></p>
9143<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9144<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
9145remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9146                  </li>
9147                  <li>
9148                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9149                    <span class="entry_type_enum_optional">[optional]</span>
9150                    <span class="entry_type_enum_hidden">[hidden]</span>
9151                    <span class="entry_type_enum_value">100</span>
9152                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9153<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9154customized scene modes.<wbr/></p></span>
9155                  </li>
9156                  <li>
9157                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9158                    <span class="entry_type_enum_optional">[optional]</span>
9159                    <span class="entry_type_enum_hidden">[hidden]</span>
9160                    <span class="entry_type_enum_value">127</span>
9161                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9162<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9163customized scene modes.<wbr/></p></span>
9164                  </li>
9165                </ul>
9166
9167            </td> <!-- entry_type -->
9168
9169            <td class="entry_description">
9170              <p>Control for which scene mode is currently active.<wbr/></p>
9171            </td>
9172
9173            <td class="entry_units">
9174            </td>
9175
9176            <td class="entry_range">
9177              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9178            </td>
9179
9180            <td class="entry_hal_version">
9181              <p>3.<wbr/>2</p>
9182            </td>
9183
9184            <td class="entry_tags">
9185              <ul class="entry_tags">
9186                  <li><a href="#tag_BC">BC</a></li>
9187              </ul>
9188            </td>
9189
9190          </tr>
9191          <tr class="entries_header">
9192            <th class="th_details" colspan="6">Details</th>
9193          </tr>
9194          <tr class="entry_cont">
9195            <td class="entry_details" colspan="6">
9196              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9197capture settings.<wbr/></p>
9198<p>This is the mode that that is active when
9199<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
9200disable <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>
9201while in use.<wbr/></p>
9202<p>The interpretation and implementation of these scene modes is left
9203to the implementor of the camera device.<wbr/> Their behavior will not be
9204consistent across all devices,<wbr/> and any given device may only implement
9205a subset of these modes.<wbr/></p>
9206            </td>
9207          </tr>
9208
9209          <tr class="entries_header">
9210            <th class="th_details" colspan="6">HAL Implementation Details</th>
9211          </tr>
9212          <tr class="entry_cont">
9213            <td class="entry_details" colspan="6">
9214              <p>HAL implementations that include scene modes are expected to provide
9215the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9216<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
9217<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9218<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the
9219HAL must list supported video size and fps range in
9220<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>  1280x720,<wbr/>
9221if the HAL has two different sensor configurations for normal streaming mode and high
9222speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9223HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9224HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9225<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
9226capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9227            </td>
9228          </tr>
9229
9230          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9231           <!-- end of entry -->
9232
9233
9234          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9235            <td class="entry_name
9236             " rowspan="3">
9237              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9238            </td>
9239            <td class="entry_type">
9240                <span class="entry_type_name entry_type_name_enum">byte</span>
9241
9242              <span class="entry_type_visibility"> [public]</span>
9243
9244
9245              <span class="entry_type_hwlevel">[legacy] </span>
9246
9247
9248
9249                <ul class="entry_type_enum">
9250                  <li>
9251                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9252                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9253                  </li>
9254                  <li>
9255                    <span class="entry_type_enum_name">ON (v3.2)</span>
9256                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9257                  </li>
9258                </ul>
9259
9260            </td> <!-- entry_type -->
9261
9262            <td class="entry_description">
9263              <p>Whether video stabilization is
9264active.<wbr/></p>
9265            </td>
9266
9267            <td class="entry_units">
9268            </td>
9269
9270            <td class="entry_range">
9271            </td>
9272
9273            <td class="entry_hal_version">
9274              <p>3.<wbr/>2</p>
9275            </td>
9276
9277            <td class="entry_tags">
9278              <ul class="entry_tags">
9279                  <li><a href="#tag_BC">BC</a></li>
9280              </ul>
9281            </td>
9282
9283          </tr>
9284          <tr class="entries_header">
9285            <th class="th_details" colspan="6">Details</th>
9286          </tr>
9287          <tr class="entry_cont">
9288            <td class="entry_details" colspan="6">
9289              <p>Video stabilization automatically warps images from
9290the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9291<p>If enabled,<wbr/> video stabilization can modify the
9292<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9293<p>Switching between different video stabilization modes may take several
9294frames to initialize,<wbr/> the camera device will report the current mode
9295in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9296the video stabilization modes in the first several capture results may
9297still be "OFF",<wbr/> and it will become "ON" when the initialization is
9298done.<wbr/></p>
9299<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9300stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9301that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9302the recording resolution is less than or equal to 1920 x 1080 (width less than
9303or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9304frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9305<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9306OFF if the recording output is not stabilized,<wbr/> or if there are no output
9307Surface types that can be stabilized.<wbr/></p>
9308<p>If a camera device supports both this mode and OIS
9309(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9310produce undesirable interaction,<wbr/> so it is recommended not to enable
9311both at the same time.<wbr/></p>
9312            </td>
9313          </tr>
9314
9315
9316          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9317           <!-- end of entry -->
9318
9319
9320          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9321            <td class="entry_name
9322             " rowspan="3">
9323              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9324            </td>
9325            <td class="entry_type">
9326                <span class="entry_type_name">int32</span>
9327
9328              <span class="entry_type_visibility"> [public]</span>
9329
9330
9331
9332
9333
9334
9335            </td> <!-- entry_type -->
9336
9337            <td class="entry_description">
9338              <p>The amount of additional sensitivity boost applied to output images
9339after RAW sensor data is captured.<wbr/></p>
9340            </td>
9341
9342            <td class="entry_units">
9343              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9344            </td>
9345
9346            <td class="entry_range">
9347              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9348            </td>
9349
9350            <td class="entry_hal_version">
9351              <p>3.<wbr/>2</p>
9352            </td>
9353
9354            <td class="entry_tags">
9355            </td>
9356
9357          </tr>
9358          <tr class="entries_header">
9359            <th class="th_details" colspan="6">Details</th>
9360          </tr>
9361          <tr class="entry_cont">
9362            <td class="entry_details" colspan="6">
9363              <p>Some camera devices support additional digital sensitivity boosting in the
9364camera processing pipeline after sensor RAW image is captured.<wbr/>
9365Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9366have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9367<p>This key will be <code>null</code> for devices that do not support any RAW format
9368outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9369present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9370list <code>100</code> in this key.<wbr/></p>
9371<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9372boost to the nearest supported value.<wbr/>
9373The final boost value used will be available in the output capture result.<wbr/></p>
9374<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9375of such device will have the total sensitivity of
9376<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
9377The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9378<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
9379OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9380            </td>
9381          </tr>
9382
9383
9384          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9385           <!-- end of entry -->
9386
9387
9388          <tr class="entry" id="dynamic_android.control.enableZsl">
9389            <td class="entry_name
9390             " rowspan="5">
9391              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9392            </td>
9393            <td class="entry_type">
9394                <span class="entry_type_name entry_type_name_enum">byte</span>
9395
9396              <span class="entry_type_visibility"> [public as boolean]</span>
9397
9398
9399
9400
9401
9402                <ul class="entry_type_enum">
9403                  <li>
9404                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
9405                    <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
9406after previous requests.<wbr/></p></span>
9407                  </li>
9408                  <li>
9409                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
9410                    <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
9411captured before previous requests.<wbr/></p></span>
9412                  </li>
9413                </ul>
9414
9415            </td> <!-- entry_type -->
9416
9417            <td class="entry_description">
9418              <p>Allow camera device to enable zero-shutter-lag mode for requests with
9419<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9420            </td>
9421
9422            <td class="entry_units">
9423            </td>
9424
9425            <td class="entry_range">
9426            </td>
9427
9428            <td class="entry_hal_version">
9429              <p>3.<wbr/>2</p>
9430            </td>
9431
9432            <td class="entry_tags">
9433            </td>
9434
9435          </tr>
9436          <tr class="entries_header">
9437            <th class="th_details" colspan="6">Details</th>
9438          </tr>
9439          <tr class="entry_cont">
9440            <td class="entry_details" colspan="6">
9441              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9442STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9443produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9444<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9445Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9446compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9447capture intents.<wbr/></p>
9448<p>For example,<wbr/> when requests are submitted in the following order:
9449  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9450  Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
9451<p>The output images for request B may have contents captured before the output images for
9452request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9453request A.<wbr/></p>
9454<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9455the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9456<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9457TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9458<code>false</code> if present.<wbr/></p>
9459<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9460capture templates is always <code>false</code> if present.<wbr/></p>
9461<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9462            </td>
9463          </tr>
9464
9465          <tr class="entries_header">
9466            <th class="th_details" colspan="6">HAL Implementation Details</th>
9467          </tr>
9468          <tr class="entry_cont">
9469            <td class="entry_details" colspan="6">
9470              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9471capture intent.<wbr/></p>
9472            </td>
9473          </tr>
9474
9475          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9476           <!-- end of entry -->
9477
9478
9479          <tr class="entry" id="dynamic_android.control.afSceneChange">
9480            <td class="entry_name
9481             " rowspan="3">
9482              android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9483            </td>
9484            <td class="entry_type">
9485                <span class="entry_type_name entry_type_name_enum">byte</span>
9486
9487              <span class="entry_type_visibility"> [public]</span>
9488
9489
9490
9491
9492
9493                <ul class="entry_type_enum">
9494                  <li>
9495                    <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9496                    <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9497                  </li>
9498                  <li>
9499                    <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9500                    <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9501                  </li>
9502                </ul>
9503
9504            </td> <!-- entry_type -->
9505
9506            <td class="entry_description">
9507              <p>Whether a significant scene change is detected within the currently-set AF
9508region(s).<wbr/></p>
9509            </td>
9510
9511            <td class="entry_units">
9512            </td>
9513
9514            <td class="entry_range">
9515            </td>
9516
9517            <td class="entry_hal_version">
9518              <p>3.<wbr/>3</p>
9519            </td>
9520
9521            <td class="entry_tags">
9522            </td>
9523
9524          </tr>
9525          <tr class="entries_header">
9526            <th class="th_details" colspan="6">Details</th>
9527          </tr>
9528          <tr class="entry_cont">
9529            <td class="entry_details" colspan="6">
9530              <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9531such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9532significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9533result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9534to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9535<p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
9536            </td>
9537          </tr>
9538
9539
9540          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9541           <!-- end of entry -->
9542
9543
9544
9545      <!-- end of kind -->
9546      </tbody>
9547
9548  <!-- end of section -->
9549  <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9550
9551
9552      <tr><td colspan="7" class="kind">controls</td></tr>
9553
9554      <thead class="entries_header">
9555        <tr>
9556          <th class="th_name">Property Name</th>
9557          <th class="th_type">Type</th>
9558          <th class="th_description">Description</th>
9559          <th class="th_units">Units</th>
9560          <th class="th_range">Range</th>
9561          <th class="th_hal_version">Initial HIDL HAL version</th>
9562          <th class="th_tags">Tags</th>
9563        </tr>
9564      </thead>
9565
9566      <tbody>
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577          <tr class="entry" id="controls_android.demosaic.mode">
9578            <td class="entry_name
9579             " rowspan="1">
9580              android.<wbr/>demosaic.<wbr/>mode
9581            </td>
9582            <td class="entry_type">
9583                <span class="entry_type_name entry_type_name_enum">byte</span>
9584
9585              <span class="entry_type_visibility"> [system]</span>
9586
9587
9588
9589
9590
9591                <ul class="entry_type_enum">
9592                  <li>
9593                    <span class="entry_type_enum_name">FAST (v3.2)</span>
9594                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9595Bayer RAW output.<wbr/></p></span>
9596                  </li>
9597                  <li>
9598                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9599                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9600relative to raw output.<wbr/></p></span>
9601                  </li>
9602                </ul>
9603
9604            </td> <!-- entry_type -->
9605
9606            <td class="entry_description">
9607              <p>Controls the quality of the demosaicing
9608processing.<wbr/></p>
9609            </td>
9610
9611            <td class="entry_units">
9612            </td>
9613
9614            <td class="entry_range">
9615            </td>
9616
9617            <td class="entry_hal_version">
9618              <p>3.<wbr/>2</p>
9619            </td>
9620
9621            <td class="entry_tags">
9622              <ul class="entry_tags">
9623                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9624              </ul>
9625            </td>
9626
9627          </tr>
9628
9629
9630          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9631           <!-- end of entry -->
9632
9633
9634
9635      <!-- end of kind -->
9636      </tbody>
9637
9638  <!-- end of section -->
9639  <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9640
9641
9642      <tr><td colspan="7" class="kind">controls</td></tr>
9643
9644      <thead class="entries_header">
9645        <tr>
9646          <th class="th_name">Property Name</th>
9647          <th class="th_type">Type</th>
9648          <th class="th_description">Description</th>
9649          <th class="th_units">Units</th>
9650          <th class="th_range">Range</th>
9651          <th class="th_hal_version">Initial HIDL HAL version</th>
9652          <th class="th_tags">Tags</th>
9653        </tr>
9654      </thead>
9655
9656      <tbody>
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667          <tr class="entry" id="controls_android.edge.mode">
9668            <td class="entry_name
9669             " rowspan="5">
9670              android.<wbr/>edge.<wbr/>mode
9671            </td>
9672            <td class="entry_type">
9673                <span class="entry_type_name entry_type_name_enum">byte</span>
9674
9675              <span class="entry_type_visibility"> [public]</span>
9676
9677
9678              <span class="entry_type_hwlevel">[full] </span>
9679
9680
9681
9682                <ul class="entry_type_enum">
9683                  <li>
9684                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9685                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9686                  </li>
9687                  <li>
9688                    <span class="entry_type_enum_name">FAST (v3.2)</span>
9689                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9690relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9691slow down frame rate relative to sensor.<wbr/></p></span>
9692                  </li>
9693                  <li>
9694                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9695                    <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
9696                  </li>
9697                  <li>
9698                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9699                    <span class="entry_type_enum_optional">[optional]</span>
9700                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9701levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9702resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9703or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9704enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9705so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9706(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9707<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9708with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9709high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9710produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9711high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9712preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9713buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9714reasonable preview quality.<wbr/></p>
9715<p>This mode is guaranteed to be supported by devices that support either the
9716YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9717(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9718be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9719                  </li>
9720                </ul>
9721
9722            </td> <!-- entry_type -->
9723
9724            <td class="entry_description">
9725              <p>Operation mode for edge
9726enhancement.<wbr/></p>
9727            </td>
9728
9729            <td class="entry_units">
9730            </td>
9731
9732            <td class="entry_range">
9733              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9734            </td>
9735
9736            <td class="entry_hal_version">
9737              <p>3.<wbr/>2</p>
9738            </td>
9739
9740            <td class="entry_tags">
9741              <ul class="entry_tags">
9742                  <li><a href="#tag_V1">V1</a></li>
9743                  <li><a href="#tag_REPROC">REPROC</a></li>
9744              </ul>
9745            </td>
9746
9747          </tr>
9748          <tr class="entries_header">
9749            <th class="th_details" colspan="6">Details</th>
9750          </tr>
9751          <tr class="entry_cont">
9752            <td class="entry_details" colspan="6">
9753              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9754no enhancement will be applied by the camera device.<wbr/></p>
9755<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9756will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9757camera device will use the highest-quality enhancement algorithms,<wbr/>
9758even if it slows down capture rate.<wbr/> FAST means the camera device will
9759not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9760edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9761amount of enhancement applied.<wbr/></p>
9762<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9763buffer of high-resolution images during preview and reprocess image(s) from that buffer
9764into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9765edge enhancement to low-resolution streams (below maximum recording resolution) to
9766maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9767since those will be reprocessed later if necessary.<wbr/></p>
9768<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9769device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9770The camera device may adjust its internal edge enhancement parameters for best
9771image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
9772            </td>
9773          </tr>
9774
9775          <tr class="entries_header">
9776            <th class="th_details" colspan="6">HAL Implementation Details</th>
9777          </tr>
9778          <tr class="entry_cont">
9779            <td class="entry_details" colspan="6">
9780              <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
9781adjust the internal edge enhancement reduction parameters appropriately to get the best
9782quality images.<wbr/></p>
9783            </td>
9784          </tr>
9785
9786          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9787           <!-- end of entry -->
9788
9789
9790          <tr class="entry" id="controls_android.edge.strength">
9791            <td class="entry_name
9792             " rowspan="1">
9793              android.<wbr/>edge.<wbr/>strength
9794            </td>
9795            <td class="entry_type">
9796                <span class="entry_type_name">byte</span>
9797
9798              <span class="entry_type_visibility"> [system]</span>
9799
9800
9801
9802
9803
9804
9805            </td> <!-- entry_type -->
9806
9807            <td class="entry_description">
9808              <p>Control the amount of edge enhancement
9809applied to the images</p>
9810            </td>
9811
9812            <td class="entry_units">
9813              1-10; 10 is maximum sharpening
9814            </td>
9815
9816            <td class="entry_range">
9817            </td>
9818
9819            <td class="entry_hal_version">
9820              <p>3.<wbr/>2</p>
9821            </td>
9822
9823            <td class="entry_tags">
9824              <ul class="entry_tags">
9825                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9826              </ul>
9827            </td>
9828
9829          </tr>
9830
9831
9832          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9833           <!-- end of entry -->
9834
9835
9836
9837      <!-- end of kind -->
9838      </tbody>
9839      <tr><td colspan="7" class="kind">static</td></tr>
9840
9841      <thead class="entries_header">
9842        <tr>
9843          <th class="th_name">Property Name</th>
9844          <th class="th_type">Type</th>
9845          <th class="th_description">Description</th>
9846          <th class="th_units">Units</th>
9847          <th class="th_range">Range</th>
9848          <th class="th_hal_version">Initial HIDL HAL version</th>
9849          <th class="th_tags">Tags</th>
9850        </tr>
9851      </thead>
9852
9853      <tbody>
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864          <tr class="entry" id="static_android.edge.availableEdgeModes">
9865            <td class="entry_name
9866             " rowspan="5">
9867              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9868            </td>
9869            <td class="entry_type">
9870                <span class="entry_type_name">byte</span>
9871                <span class="entry_type_container">x</span>
9872
9873                <span class="entry_type_array">
9874                  n
9875                </span>
9876              <span class="entry_type_visibility"> [public as enumList]</span>
9877
9878
9879              <span class="entry_type_hwlevel">[full] </span>
9880
9881
9882                <div class="entry_type_notes">list of enums</div>
9883
9884
9885            </td> <!-- entry_type -->
9886
9887            <td class="entry_description">
9888              <p>List of edge enhancement modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> that are supported by this camera
9889device.<wbr/></p>
9890            </td>
9891
9892            <td class="entry_units">
9893            </td>
9894
9895            <td class="entry_range">
9896              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9897            </td>
9898
9899            <td class="entry_hal_version">
9900              <p>3.<wbr/>2</p>
9901            </td>
9902
9903            <td class="entry_tags">
9904              <ul class="entry_tags">
9905                  <li><a href="#tag_V1">V1</a></li>
9906                  <li><a href="#tag_REPROC">REPROC</a></li>
9907              </ul>
9908            </td>
9909
9910          </tr>
9911          <tr class="entries_header">
9912            <th class="th_details" colspan="6">Details</th>
9913          </tr>
9914          <tr class="entry_cont">
9915            <td class="entry_details" colspan="6">
9916              <p>Full-capability camera devices must always support OFF; camera devices that support
9917YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9918list FAST.<wbr/></p>
9919            </td>
9920          </tr>
9921
9922          <tr class="entries_header">
9923            <th class="th_details" colspan="6">HAL Implementation Details</th>
9924          </tr>
9925          <tr class="entry_cont">
9926            <td class="entry_details" colspan="6">
9927              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9928on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9929That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9930capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9931            </td>
9932          </tr>
9933
9934          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9935           <!-- end of entry -->
9936
9937
9938
9939      <!-- end of kind -->
9940      </tbody>
9941      <tr><td colspan="7" class="kind">dynamic</td></tr>
9942
9943      <thead class="entries_header">
9944        <tr>
9945          <th class="th_name">Property Name</th>
9946          <th class="th_type">Type</th>
9947          <th class="th_description">Description</th>
9948          <th class="th_units">Units</th>
9949          <th class="th_range">Range</th>
9950          <th class="th_hal_version">Initial HIDL HAL version</th>
9951          <th class="th_tags">Tags</th>
9952        </tr>
9953      </thead>
9954
9955      <tbody>
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966          <tr class="entry" id="dynamic_android.edge.mode">
9967            <td class="entry_name
9968             " rowspan="5">
9969              android.<wbr/>edge.<wbr/>mode
9970            </td>
9971            <td class="entry_type">
9972                <span class="entry_type_name entry_type_name_enum">byte</span>
9973
9974              <span class="entry_type_visibility"> [public]</span>
9975
9976
9977              <span class="entry_type_hwlevel">[full] </span>
9978
9979
9980
9981                <ul class="entry_type_enum">
9982                  <li>
9983                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9984                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9985                  </li>
9986                  <li>
9987                    <span class="entry_type_enum_name">FAST (v3.2)</span>
9988                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9989relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9990slow down frame rate relative to sensor.<wbr/></p></span>
9991                  </li>
9992                  <li>
9993                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9994                    <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
9995                  </li>
9996                  <li>
9997                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9998                    <span class="entry_type_enum_optional">[optional]</span>
9999                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
10000levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
10001resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
10002or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
10003enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
10004so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
10005(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
10006<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
10007with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
10008high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
10009produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
10010high-resolution buffers must not have edge enhancement applied to maximize efficiency of
10011preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
10012buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
10013reasonable preview quality.<wbr/></p>
10014<p>This mode is guaranteed to be supported by devices that support either the
10015YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
10016(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
10017be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
10018                  </li>
10019                </ul>
10020
10021            </td> <!-- entry_type -->
10022
10023            <td class="entry_description">
10024              <p>Operation mode for edge
10025enhancement.<wbr/></p>
10026            </td>
10027
10028            <td class="entry_units">
10029            </td>
10030
10031            <td class="entry_range">
10032              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
10033            </td>
10034
10035            <td class="entry_hal_version">
10036              <p>3.<wbr/>2</p>
10037            </td>
10038
10039            <td class="entry_tags">
10040              <ul class="entry_tags">
10041                  <li><a href="#tag_V1">V1</a></li>
10042                  <li><a href="#tag_REPROC">REPROC</a></li>
10043              </ul>
10044            </td>
10045
10046          </tr>
10047          <tr class="entries_header">
10048            <th class="th_details" colspan="6">Details</th>
10049          </tr>
10050          <tr class="entry_cont">
10051            <td class="entry_details" colspan="6">
10052              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10053no enhancement will be applied by the camera device.<wbr/></p>
10054<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10055will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10056camera device will use the highest-quality enhancement algorithms,<wbr/>
10057even if it slows down capture rate.<wbr/> FAST means the camera device will
10058not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10059edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10060amount of enhancement applied.<wbr/></p>
10061<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10062buffer of high-resolution images during preview and reprocess image(s) from that buffer
10063into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10064edge enhancement to low-resolution streams (below maximum recording resolution) to
10065maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10066since those will be reprocessed later if necessary.<wbr/></p>
10067<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10068device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10069The camera device may adjust its internal edge enhancement parameters for best
10070image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
10071            </td>
10072          </tr>
10073
10074          <tr class="entries_header">
10075            <th class="th_details" colspan="6">HAL Implementation Details</th>
10076          </tr>
10077          <tr class="entry_cont">
10078            <td class="entry_details" colspan="6">
10079              <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
10080adjust the internal edge enhancement reduction parameters appropriately to get the best
10081quality images.<wbr/></p>
10082            </td>
10083          </tr>
10084
10085          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10086           <!-- end of entry -->
10087
10088
10089
10090      <!-- end of kind -->
10091      </tbody>
10092
10093  <!-- end of section -->
10094  <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10095
10096
10097      <tr><td colspan="7" class="kind">controls</td></tr>
10098
10099      <thead class="entries_header">
10100        <tr>
10101          <th class="th_name">Property Name</th>
10102          <th class="th_type">Type</th>
10103          <th class="th_description">Description</th>
10104          <th class="th_units">Units</th>
10105          <th class="th_range">Range</th>
10106          <th class="th_hal_version">Initial HIDL HAL version</th>
10107          <th class="th_tags">Tags</th>
10108        </tr>
10109      </thead>
10110
10111      <tbody>
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122          <tr class="entry" id="controls_android.flash.firingPower">
10123            <td class="entry_name
10124             " rowspan="3">
10125              android.<wbr/>flash.<wbr/>firing<wbr/>Power
10126            </td>
10127            <td class="entry_type">
10128                <span class="entry_type_name">byte</span>
10129
10130              <span class="entry_type_visibility"> [system]</span>
10131
10132
10133
10134
10135
10136
10137            </td> <!-- entry_type -->
10138
10139            <td class="entry_description">
10140              <p>Power for flash firing/<wbr/>torch</p>
10141            </td>
10142
10143            <td class="entry_units">
10144              10 is max power; 0 is no flash.<wbr/> Linear
10145            </td>
10146
10147            <td class="entry_range">
10148              <p>0 - 10</p>
10149            </td>
10150
10151            <td class="entry_hal_version">
10152              <p>3.<wbr/>2</p>
10153            </td>
10154
10155            <td class="entry_tags">
10156              <ul class="entry_tags">
10157                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10158              </ul>
10159            </td>
10160
10161          </tr>
10162          <tr class="entries_header">
10163            <th class="th_details" colspan="6">Details</th>
10164          </tr>
10165          <tr class="entry_cont">
10166            <td class="entry_details" colspan="6">
10167              <p>Power for snapshot may use a different scale than
10168for torch mode.<wbr/> Only one entry for torch mode will be
10169used</p>
10170            </td>
10171          </tr>
10172
10173
10174          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10175           <!-- end of entry -->
10176
10177
10178          <tr class="entry" id="controls_android.flash.firingTime">
10179            <td class="entry_name
10180             " rowspan="3">
10181              android.<wbr/>flash.<wbr/>firing<wbr/>Time
10182            </td>
10183            <td class="entry_type">
10184                <span class="entry_type_name">int64</span>
10185
10186              <span class="entry_type_visibility"> [system]</span>
10187
10188
10189
10190
10191
10192
10193            </td> <!-- entry_type -->
10194
10195            <td class="entry_description">
10196              <p>Firing time of flash relative to start of
10197exposure</p>
10198            </td>
10199
10200            <td class="entry_units">
10201              nanoseconds
10202            </td>
10203
10204            <td class="entry_range">
10205              <p>0-(exposure time-flash duration)</p>
10206            </td>
10207
10208            <td class="entry_hal_version">
10209              <p>3.<wbr/>2</p>
10210            </td>
10211
10212            <td class="entry_tags">
10213              <ul class="entry_tags">
10214                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10215              </ul>
10216            </td>
10217
10218          </tr>
10219          <tr class="entries_header">
10220            <th class="th_details" colspan="6">Details</th>
10221          </tr>
10222          <tr class="entry_cont">
10223            <td class="entry_details" colspan="6">
10224              <p>Clamped to (0,<wbr/> exposure time - flash
10225duration).<wbr/></p>
10226            </td>
10227          </tr>
10228
10229
10230          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10231           <!-- end of entry -->
10232
10233
10234          <tr class="entry" id="controls_android.flash.mode">
10235            <td class="entry_name
10236             " rowspan="3">
10237              android.<wbr/>flash.<wbr/>mode
10238            </td>
10239            <td class="entry_type">
10240                <span class="entry_type_name entry_type_name_enum">byte</span>
10241
10242              <span class="entry_type_visibility"> [public]</span>
10243
10244
10245              <span class="entry_type_hwlevel">[legacy] </span>
10246
10247
10248
10249                <ul class="entry_type_enum">
10250                  <li>
10251                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10252                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10253                  </li>
10254                  <li>
10255                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10256                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10257for this capture.<wbr/></p></span>
10258                  </li>
10259                  <li>
10260                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
10261                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10262                  </li>
10263                </ul>
10264
10265            </td> <!-- entry_type -->
10266
10267            <td class="entry_description">
10268              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10269            </td>
10270
10271            <td class="entry_units">
10272            </td>
10273
10274            <td class="entry_range">
10275            </td>
10276
10277            <td class="entry_hal_version">
10278              <p>3.<wbr/>2</p>
10279            </td>
10280
10281            <td class="entry_tags">
10282              <ul class="entry_tags">
10283                  <li><a href="#tag_BC">BC</a></li>
10284              </ul>
10285            </td>
10286
10287          </tr>
10288          <tr class="entries_header">
10289            <th class="th_details" colspan="6">Details</th>
10290          </tr>
10291          <tr class="entry_cont">
10292            <td class="entry_details" colspan="6">
10293              <p>This control is only effective when flash unit is available
10294(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10295<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
10296Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10297ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10298<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10299<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10300device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10301control should be used along with auto-exposure (AE) precapture metering sequence
10302(<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p>
10303<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10304for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10305<p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p>
10306            </td>
10307          </tr>
10308
10309
10310          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10311           <!-- end of entry -->
10312
10313
10314
10315      <!-- end of kind -->
10316      </tbody>
10317      <tr><td colspan="7" class="kind">static</td></tr>
10318
10319      <thead class="entries_header">
10320        <tr>
10321          <th class="th_name">Property Name</th>
10322          <th class="th_type">Type</th>
10323          <th class="th_description">Description</th>
10324          <th class="th_units">Units</th>
10325          <th class="th_range">Range</th>
10326          <th class="th_hal_version">Initial HIDL HAL version</th>
10327          <th class="th_tags">Tags</th>
10328        </tr>
10329      </thead>
10330
10331      <tbody>
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344          <tr class="entry" id="static_android.flash.info.available">
10345            <td class="entry_name
10346             " rowspan="3">
10347              android.<wbr/>flash.<wbr/>info.<wbr/>available
10348            </td>
10349            <td class="entry_type">
10350                <span class="entry_type_name entry_type_name_enum">byte</span>
10351
10352              <span class="entry_type_visibility"> [public as boolean]</span>
10353
10354
10355              <span class="entry_type_hwlevel">[legacy] </span>
10356
10357
10358
10359                <ul class="entry_type_enum">
10360                  <li>
10361                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
10362                  </li>
10363                  <li>
10364                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
10365                  </li>
10366                </ul>
10367
10368            </td> <!-- entry_type -->
10369
10370            <td class="entry_description">
10371              <p>Whether this camera device has a
10372flash unit.<wbr/></p>
10373            </td>
10374
10375            <td class="entry_units">
10376            </td>
10377
10378            <td class="entry_range">
10379            </td>
10380
10381            <td class="entry_hal_version">
10382              <p>3.<wbr/>2</p>
10383            </td>
10384
10385            <td class="entry_tags">
10386              <ul class="entry_tags">
10387                  <li><a href="#tag_BC">BC</a></li>
10388              </ul>
10389            </td>
10390
10391          </tr>
10392          <tr class="entries_header">
10393            <th class="th_details" colspan="6">Details</th>
10394          </tr>
10395          <tr class="entry_cont">
10396            <td class="entry_details" colspan="6">
10397              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10398<p>If there is no flash unit,<wbr/> none of the flash controls do
10399anything.<wbr/></p>
10400            </td>
10401          </tr>
10402
10403
10404          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10405           <!-- end of entry -->
10406
10407
10408          <tr class="entry" id="static_android.flash.info.chargeDuration">
10409            <td class="entry_name
10410             " rowspan="3">
10411              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10412            </td>
10413            <td class="entry_type">
10414                <span class="entry_type_name">int64</span>
10415
10416              <span class="entry_type_visibility"> [system]</span>
10417
10418
10419
10420
10421
10422
10423            </td> <!-- entry_type -->
10424
10425            <td class="entry_description">
10426              <p>Time taken before flash can fire
10427again</p>
10428            </td>
10429
10430            <td class="entry_units">
10431              nanoseconds
10432            </td>
10433
10434            <td class="entry_range">
10435              <p>0-1e9</p>
10436            </td>
10437
10438            <td class="entry_hal_version">
10439              <p>3.<wbr/>2</p>
10440            </td>
10441
10442            <td class="entry_tags">
10443              <ul class="entry_tags">
10444                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10445              </ul>
10446            </td>
10447
10448          </tr>
10449          <tr class="entries_header">
10450            <th class="th_details" colspan="6">Details</th>
10451          </tr>
10452          <tr class="entry_cont">
10453            <td class="entry_details" colspan="6">
10454              <p>1 second too long/<wbr/>too short for recharge? Should
10455this be power-dependent?</p>
10456            </td>
10457          </tr>
10458
10459
10460          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10461           <!-- end of entry -->
10462
10463
10464
10465
10466
10467          <tr class="entry" id="static_android.flash.colorTemperature">
10468            <td class="entry_name
10469             " rowspan="1">
10470              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10471            </td>
10472            <td class="entry_type">
10473                <span class="entry_type_name">byte</span>
10474
10475              <span class="entry_type_visibility"> [system]</span>
10476
10477
10478
10479
10480
10481
10482            </td> <!-- entry_type -->
10483
10484            <td class="entry_description">
10485              <p>The x,<wbr/>y whitepoint of the
10486flash</p>
10487            </td>
10488
10489            <td class="entry_units">
10490              pair of floats
10491            </td>
10492
10493            <td class="entry_range">
10494              <p>0-1 for both</p>
10495            </td>
10496
10497            <td class="entry_hal_version">
10498              <p>3.<wbr/>2</p>
10499            </td>
10500
10501            <td class="entry_tags">
10502              <ul class="entry_tags">
10503                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10504              </ul>
10505            </td>
10506
10507          </tr>
10508
10509
10510          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10511           <!-- end of entry -->
10512
10513
10514          <tr class="entry" id="static_android.flash.maxEnergy">
10515            <td class="entry_name
10516             " rowspan="1">
10517              android.<wbr/>flash.<wbr/>max<wbr/>Energy
10518            </td>
10519            <td class="entry_type">
10520                <span class="entry_type_name">byte</span>
10521
10522              <span class="entry_type_visibility"> [system]</span>
10523
10524
10525
10526
10527
10528
10529            </td> <!-- entry_type -->
10530
10531            <td class="entry_description">
10532              <p>Max energy output of the flash for a full
10533power single flash</p>
10534            </td>
10535
10536            <td class="entry_units">
10537              lumen-seconds
10538            </td>
10539
10540            <td class="entry_range">
10541              <p>&gt;= 0</p>
10542            </td>
10543
10544            <td class="entry_hal_version">
10545              <p>3.<wbr/>2</p>
10546            </td>
10547
10548            <td class="entry_tags">
10549              <ul class="entry_tags">
10550                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10551              </ul>
10552            </td>
10553
10554          </tr>
10555
10556
10557          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10558           <!-- end of entry -->
10559
10560
10561
10562      <!-- end of kind -->
10563      </tbody>
10564      <tr><td colspan="7" class="kind">dynamic</td></tr>
10565
10566      <thead class="entries_header">
10567        <tr>
10568          <th class="th_name">Property Name</th>
10569          <th class="th_type">Type</th>
10570          <th class="th_description">Description</th>
10571          <th class="th_units">Units</th>
10572          <th class="th_range">Range</th>
10573          <th class="th_hal_version">Initial HIDL HAL version</th>
10574          <th class="th_tags">Tags</th>
10575        </tr>
10576      </thead>
10577
10578      <tbody>
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589          <tr class="entry" id="dynamic_android.flash.firingPower">
10590            <td class="entry_name
10591             " rowspan="3">
10592              android.<wbr/>flash.<wbr/>firing<wbr/>Power
10593            </td>
10594            <td class="entry_type">
10595                <span class="entry_type_name">byte</span>
10596
10597              <span class="entry_type_visibility"> [system]</span>
10598
10599
10600
10601
10602
10603
10604            </td> <!-- entry_type -->
10605
10606            <td class="entry_description">
10607              <p>Power for flash firing/<wbr/>torch</p>
10608            </td>
10609
10610            <td class="entry_units">
10611              10 is max power; 0 is no flash.<wbr/> Linear
10612            </td>
10613
10614            <td class="entry_range">
10615              <p>0 - 10</p>
10616            </td>
10617
10618            <td class="entry_hal_version">
10619              <p>3.<wbr/>2</p>
10620            </td>
10621
10622            <td class="entry_tags">
10623              <ul class="entry_tags">
10624                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10625              </ul>
10626            </td>
10627
10628          </tr>
10629          <tr class="entries_header">
10630            <th class="th_details" colspan="6">Details</th>
10631          </tr>
10632          <tr class="entry_cont">
10633            <td class="entry_details" colspan="6">
10634              <p>Power for snapshot may use a different scale than
10635for torch mode.<wbr/> Only one entry for torch mode will be
10636used</p>
10637            </td>
10638          </tr>
10639
10640
10641          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10642           <!-- end of entry -->
10643
10644
10645          <tr class="entry" id="dynamic_android.flash.firingTime">
10646            <td class="entry_name
10647             " rowspan="3">
10648              android.<wbr/>flash.<wbr/>firing<wbr/>Time
10649            </td>
10650            <td class="entry_type">
10651                <span class="entry_type_name">int64</span>
10652
10653              <span class="entry_type_visibility"> [system]</span>
10654
10655
10656
10657
10658
10659
10660            </td> <!-- entry_type -->
10661
10662            <td class="entry_description">
10663              <p>Firing time of flash relative to start of
10664exposure</p>
10665            </td>
10666
10667            <td class="entry_units">
10668              nanoseconds
10669            </td>
10670
10671            <td class="entry_range">
10672              <p>0-(exposure time-flash duration)</p>
10673            </td>
10674
10675            <td class="entry_hal_version">
10676              <p>3.<wbr/>2</p>
10677            </td>
10678
10679            <td class="entry_tags">
10680              <ul class="entry_tags">
10681                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10682              </ul>
10683            </td>
10684
10685          </tr>
10686          <tr class="entries_header">
10687            <th class="th_details" colspan="6">Details</th>
10688          </tr>
10689          <tr class="entry_cont">
10690            <td class="entry_details" colspan="6">
10691              <p>Clamped to (0,<wbr/> exposure time - flash
10692duration).<wbr/></p>
10693            </td>
10694          </tr>
10695
10696
10697          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10698           <!-- end of entry -->
10699
10700
10701          <tr class="entry" id="dynamic_android.flash.mode">
10702            <td class="entry_name
10703             " rowspan="3">
10704              android.<wbr/>flash.<wbr/>mode
10705            </td>
10706            <td class="entry_type">
10707                <span class="entry_type_name entry_type_name_enum">byte</span>
10708
10709              <span class="entry_type_visibility"> [public]</span>
10710
10711
10712              <span class="entry_type_hwlevel">[legacy] </span>
10713
10714
10715
10716                <ul class="entry_type_enum">
10717                  <li>
10718                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10719                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10720                  </li>
10721                  <li>
10722                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10723                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10724for this capture.<wbr/></p></span>
10725                  </li>
10726                  <li>
10727                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
10728                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10729                  </li>
10730                </ul>
10731
10732            </td> <!-- entry_type -->
10733
10734            <td class="entry_description">
10735              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10736            </td>
10737
10738            <td class="entry_units">
10739            </td>
10740
10741            <td class="entry_range">
10742            </td>
10743
10744            <td class="entry_hal_version">
10745              <p>3.<wbr/>2</p>
10746            </td>
10747
10748            <td class="entry_tags">
10749              <ul class="entry_tags">
10750                  <li><a href="#tag_BC">BC</a></li>
10751              </ul>
10752            </td>
10753
10754          </tr>
10755          <tr class="entries_header">
10756            <th class="th_details" colspan="6">Details</th>
10757          </tr>
10758          <tr class="entry_cont">
10759            <td class="entry_details" colspan="6">
10760              <p>This control is only effective when flash unit is available
10761(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10762<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
10763Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10764ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10765<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10766<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10767device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10768control should be used along with auto-exposure (AE) precapture metering sequence
10769(<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p>
10770<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10771for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10772<p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p>
10773            </td>
10774          </tr>
10775
10776
10777          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10778           <!-- end of entry -->
10779
10780
10781          <tr class="entry" id="dynamic_android.flash.state">
10782            <td class="entry_name
10783             " rowspan="3">
10784              android.<wbr/>flash.<wbr/>state
10785            </td>
10786            <td class="entry_type">
10787                <span class="entry_type_name entry_type_name_enum">byte</span>
10788
10789              <span class="entry_type_visibility"> [public]</span>
10790
10791
10792              <span class="entry_type_hwlevel">[limited] </span>
10793
10794
10795
10796                <ul class="entry_type_enum">
10797                  <li>
10798                    <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10799                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10800                  </li>
10801                  <li>
10802                    <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10803                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10804                  </li>
10805                  <li>
10806                    <span class="entry_type_enum_name">READY (v3.2)</span>
10807                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10808                  </li>
10809                  <li>
10810                    <span class="entry_type_enum_name">FIRED (v3.2)</span>
10811                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10812                  </li>
10813                  <li>
10814                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10815                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10816<p>This is usually due to the next or previous frame having
10817the flash fire,<wbr/> and the flash spilling into this capture
10818due to hardware limitations.<wbr/></p></span>
10819                  </li>
10820                </ul>
10821
10822            </td> <!-- entry_type -->
10823
10824            <td class="entry_description">
10825              <p>Current state of the flash
10826unit.<wbr/></p>
10827            </td>
10828
10829            <td class="entry_units">
10830            </td>
10831
10832            <td class="entry_range">
10833            </td>
10834
10835            <td class="entry_hal_version">
10836              <p>3.<wbr/>2</p>
10837            </td>
10838
10839            <td class="entry_tags">
10840            </td>
10841
10842          </tr>
10843          <tr class="entries_header">
10844            <th class="th_details" colspan="6">Details</th>
10845          </tr>
10846          <tr class="entry_cont">
10847            <td class="entry_details" colspan="6">
10848              <p>When the camera device doesn't have flash unit
10849(i.<wbr/>e.<wbr/> <code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == false</code>),<wbr/> this state will always be UNAVAILABLE.<wbr/>
10850Other states indicate the current flash status.<wbr/></p>
10851<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10852<ul>
10853<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10854<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10855   will always return FIRED.<wbr/></li>
10856<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10857   will always return FIRED.<wbr/></li>
10858</ul>
10859<p>In all other conditions the state will not be available on
10860LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10861            </td>
10862          </tr>
10863
10864
10865          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10866           <!-- end of entry -->
10867
10868
10869
10870      <!-- end of kind -->
10871      </tbody>
10872
10873  <!-- end of section -->
10874  <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10875
10876
10877      <tr><td colspan="7" class="kind">controls</td></tr>
10878
10879      <thead class="entries_header">
10880        <tr>
10881          <th class="th_name">Property Name</th>
10882          <th class="th_type">Type</th>
10883          <th class="th_description">Description</th>
10884          <th class="th_units">Units</th>
10885          <th class="th_range">Range</th>
10886          <th class="th_hal_version">Initial HIDL HAL version</th>
10887          <th class="th_tags">Tags</th>
10888        </tr>
10889      </thead>
10890
10891      <tbody>
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902          <tr class="entry" id="controls_android.hotPixel.mode">
10903            <td class="entry_name
10904             " rowspan="3">
10905              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10906            </td>
10907            <td class="entry_type">
10908                <span class="entry_type_name entry_type_name_enum">byte</span>
10909
10910              <span class="entry_type_visibility"> [public]</span>
10911
10912
10913
10914
10915
10916                <ul class="entry_type_enum">
10917                  <li>
10918                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10919                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10920<p>The frame rate must not be reduced relative to sensor raw output
10921for this option.<wbr/></p>
10922<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10923                  </li>
10924                  <li>
10925                    <span class="entry_type_enum_name">FAST (v3.2)</span>
10926                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10927rate relative to sensor raw output.<wbr/></p>
10928<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10929                  </li>
10930                  <li>
10931                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10932                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10933of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10934<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10935                  </li>
10936                </ul>
10937
10938            </td> <!-- entry_type -->
10939
10940            <td class="entry_description">
10941              <p>Operational mode for hot pixel correction.<wbr/></p>
10942            </td>
10943
10944            <td class="entry_units">
10945            </td>
10946
10947            <td class="entry_range">
10948              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10949            </td>
10950
10951            <td class="entry_hal_version">
10952              <p>3.<wbr/>2</p>
10953            </td>
10954
10955            <td class="entry_tags">
10956              <ul class="entry_tags">
10957                  <li><a href="#tag_V1">V1</a></li>
10958                  <li><a href="#tag_RAW">RAW</a></li>
10959              </ul>
10960            </td>
10961
10962          </tr>
10963          <tr class="entries_header">
10964            <th class="th_details" colspan="6">Details</th>
10965          </tr>
10966          <tr class="entry_cont">
10967            <td class="entry_details" colspan="6">
10968              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10969that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10970are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10971            </td>
10972          </tr>
10973
10974
10975          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10976           <!-- end of entry -->
10977
10978
10979
10980      <!-- end of kind -->
10981      </tbody>
10982      <tr><td colspan="7" class="kind">static</td></tr>
10983
10984      <thead class="entries_header">
10985        <tr>
10986          <th class="th_name">Property Name</th>
10987          <th class="th_type">Type</th>
10988          <th class="th_description">Description</th>
10989          <th class="th_units">Units</th>
10990          <th class="th_range">Range</th>
10991          <th class="th_hal_version">Initial HIDL HAL version</th>
10992          <th class="th_tags">Tags</th>
10993        </tr>
10994      </thead>
10995
10996      <tbody>
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
11008            <td class="entry_name
11009             " rowspan="5">
11010              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
11011            </td>
11012            <td class="entry_type">
11013                <span class="entry_type_name">byte</span>
11014                <span class="entry_type_container">x</span>
11015
11016                <span class="entry_type_array">
11017                  n
11018                </span>
11019              <span class="entry_type_visibility"> [public as enumList]</span>
11020
11021
11022
11023
11024                <div class="entry_type_notes">list of enums</div>
11025
11026
11027            </td> <!-- entry_type -->
11028
11029            <td class="entry_description">
11030              <p>List of hot pixel correction modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a> that are supported by this
11031camera device.<wbr/></p>
11032            </td>
11033
11034            <td class="entry_units">
11035            </td>
11036
11037            <td class="entry_range">
11038              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11039            </td>
11040
11041            <td class="entry_hal_version">
11042              <p>3.<wbr/>2</p>
11043            </td>
11044
11045            <td class="entry_tags">
11046              <ul class="entry_tags">
11047                  <li><a href="#tag_V1">V1</a></li>
11048                  <li><a href="#tag_RAW">RAW</a></li>
11049              </ul>
11050            </td>
11051
11052          </tr>
11053          <tr class="entries_header">
11054            <th class="th_details" colspan="6">Details</th>
11055          </tr>
11056          <tr class="entry_cont">
11057            <td class="entry_details" colspan="6">
11058              <p>FULL mode camera devices will always support FAST.<wbr/></p>
11059            </td>
11060          </tr>
11061
11062          <tr class="entries_header">
11063            <th class="th_details" colspan="6">HAL Implementation Details</th>
11064          </tr>
11065          <tr class="entry_cont">
11066            <td class="entry_details" colspan="6">
11067              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11068pixels than actual pixels on the camera sensor.<wbr/>
11069HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11070on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11071That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11072capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11073            </td>
11074          </tr>
11075
11076          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11077           <!-- end of entry -->
11078
11079
11080
11081      <!-- end of kind -->
11082      </tbody>
11083      <tr><td colspan="7" class="kind">dynamic</td></tr>
11084
11085      <thead class="entries_header">
11086        <tr>
11087          <th class="th_name">Property Name</th>
11088          <th class="th_type">Type</th>
11089          <th class="th_description">Description</th>
11090          <th class="th_units">Units</th>
11091          <th class="th_range">Range</th>
11092          <th class="th_hal_version">Initial HIDL HAL version</th>
11093          <th class="th_tags">Tags</th>
11094        </tr>
11095      </thead>
11096
11097      <tbody>
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108          <tr class="entry" id="dynamic_android.hotPixel.mode">
11109            <td class="entry_name
11110             " rowspan="3">
11111              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11112            </td>
11113            <td class="entry_type">
11114                <span class="entry_type_name entry_type_name_enum">byte</span>
11115
11116              <span class="entry_type_visibility"> [public]</span>
11117
11118
11119
11120
11121
11122                <ul class="entry_type_enum">
11123                  <li>
11124                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11125                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11126<p>The frame rate must not be reduced relative to sensor raw output
11127for this option.<wbr/></p>
11128<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
11129                  </li>
11130                  <li>
11131                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11132                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11133rate relative to sensor raw output.<wbr/></p>
11134<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
11135                  </li>
11136                  <li>
11137                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11138                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11139of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11140<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
11141                  </li>
11142                </ul>
11143
11144            </td> <!-- entry_type -->
11145
11146            <td class="entry_description">
11147              <p>Operational mode for hot pixel correction.<wbr/></p>
11148            </td>
11149
11150            <td class="entry_units">
11151            </td>
11152
11153            <td class="entry_range">
11154              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11155            </td>
11156
11157            <td class="entry_hal_version">
11158              <p>3.<wbr/>2</p>
11159            </td>
11160
11161            <td class="entry_tags">
11162              <ul class="entry_tags">
11163                  <li><a href="#tag_V1">V1</a></li>
11164                  <li><a href="#tag_RAW">RAW</a></li>
11165              </ul>
11166            </td>
11167
11168          </tr>
11169          <tr class="entries_header">
11170            <th class="th_details" colspan="6">Details</th>
11171          </tr>
11172          <tr class="entry_cont">
11173            <td class="entry_details" colspan="6">
11174              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11175that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11176are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11177            </td>
11178          </tr>
11179
11180
11181          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11182           <!-- end of entry -->
11183
11184
11185
11186      <!-- end of kind -->
11187      </tbody>
11188
11189  <!-- end of section -->
11190  <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11191
11192
11193      <tr><td colspan="7" class="kind">controls</td></tr>
11194
11195      <thead class="entries_header">
11196        <tr>
11197          <th class="th_name">Property Name</th>
11198          <th class="th_type">Type</th>
11199          <th class="th_description">Description</th>
11200          <th class="th_units">Units</th>
11201          <th class="th_range">Range</th>
11202          <th class="th_hal_version">Initial HIDL HAL version</th>
11203          <th class="th_tags">Tags</th>
11204        </tr>
11205      </thead>
11206
11207      <tbody>
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218          <tr class="entry" id="controls_android.jpeg.gpsLocation">
11219            <td class="entry_name
11220             " rowspan="3">
11221              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11222            </td>
11223            <td class="entry_type">
11224                <span class="entry_type_name">byte</span>
11225
11226              <span class="entry_type_visibility"> [java_public as location]</span>
11227
11228              <span class="entry_type_synthetic">[synthetic] </span>
11229
11230              <span class="entry_type_hwlevel">[legacy] </span>
11231
11232
11233
11234
11235            </td> <!-- entry_type -->
11236
11237            <td class="entry_description">
11238              <p>A location object to use when generating image GPS metadata.<wbr/></p>
11239            </td>
11240
11241            <td class="entry_units">
11242            </td>
11243
11244            <td class="entry_range">
11245            </td>
11246
11247            <td class="entry_hal_version">
11248              <p>3.<wbr/>2</p>
11249            </td>
11250
11251            <td class="entry_tags">
11252            </td>
11253
11254          </tr>
11255          <tr class="entries_header">
11256            <th class="th_details" colspan="6">Details</th>
11257          </tr>
11258          <tr class="entry_cont">
11259            <td class="entry_details" colspan="6">
11260              <p>Setting a location object in a request will include the GPS coordinates of the location
11261into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11262viewed by anyone who receives the JPEG image.<wbr/></p>
11263            </td>
11264          </tr>
11265
11266
11267          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11268           <!-- end of entry -->
11269
11270
11271          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11272            <td class="entry_name
11273             " rowspan="1">
11274              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11275            </td>
11276            <td class="entry_type">
11277                <span class="entry_type_name">double</span>
11278                <span class="entry_type_container">x</span>
11279
11280                <span class="entry_type_array">
11281                  3
11282                </span>
11283              <span class="entry_type_visibility"> [ndk_public]</span>
11284
11285
11286              <span class="entry_type_hwlevel">[legacy] </span>
11287
11288
11289                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11290
11291
11292            </td> <!-- entry_type -->
11293
11294            <td class="entry_description">
11295              <p>GPS coordinates to include in output JPEG
11296EXIF.<wbr/></p>
11297            </td>
11298
11299            <td class="entry_units">
11300            </td>
11301
11302            <td class="entry_range">
11303              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11304            </td>
11305
11306            <td class="entry_hal_version">
11307              <p>3.<wbr/>2</p>
11308            </td>
11309
11310            <td class="entry_tags">
11311              <ul class="entry_tags">
11312                  <li><a href="#tag_BC">BC</a></li>
11313              </ul>
11314            </td>
11315
11316          </tr>
11317
11318
11319          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11320           <!-- end of entry -->
11321
11322
11323          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11324            <td class="entry_name
11325             " rowspan="1">
11326              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11327            </td>
11328            <td class="entry_type">
11329                <span class="entry_type_name">byte</span>
11330
11331              <span class="entry_type_visibility"> [ndk_public as string]</span>
11332
11333
11334              <span class="entry_type_hwlevel">[legacy] </span>
11335
11336
11337
11338
11339            </td> <!-- entry_type -->
11340
11341            <td class="entry_description">
11342              <p>32 characters describing GPS algorithm to
11343include in EXIF.<wbr/></p>
11344            </td>
11345
11346            <td class="entry_units">
11347              UTF-8 null-terminated string
11348            </td>
11349
11350            <td class="entry_range">
11351            </td>
11352
11353            <td class="entry_hal_version">
11354              <p>3.<wbr/>2</p>
11355            </td>
11356
11357            <td class="entry_tags">
11358              <ul class="entry_tags">
11359                  <li><a href="#tag_BC">BC</a></li>
11360              </ul>
11361            </td>
11362
11363          </tr>
11364
11365
11366          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11367           <!-- end of entry -->
11368
11369
11370          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11371            <td class="entry_name
11372             " rowspan="1">
11373              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11374            </td>
11375            <td class="entry_type">
11376                <span class="entry_type_name">int64</span>
11377
11378              <span class="entry_type_visibility"> [ndk_public]</span>
11379
11380
11381              <span class="entry_type_hwlevel">[legacy] </span>
11382
11383
11384
11385
11386            </td> <!-- entry_type -->
11387
11388            <td class="entry_description">
11389              <p>Time GPS fix was made to include in
11390EXIF.<wbr/></p>
11391            </td>
11392
11393            <td class="entry_units">
11394              UTC in seconds since January 1,<wbr/> 1970
11395            </td>
11396
11397            <td class="entry_range">
11398            </td>
11399
11400            <td class="entry_hal_version">
11401              <p>3.<wbr/>2</p>
11402            </td>
11403
11404            <td class="entry_tags">
11405              <ul class="entry_tags">
11406                  <li><a href="#tag_BC">BC</a></li>
11407              </ul>
11408            </td>
11409
11410          </tr>
11411
11412
11413          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11414           <!-- end of entry -->
11415
11416
11417          <tr class="entry" id="controls_android.jpeg.orientation">
11418            <td class="entry_name
11419             " rowspan="3">
11420              android.<wbr/>jpeg.<wbr/>orientation
11421            </td>
11422            <td class="entry_type">
11423                <span class="entry_type_name">int32</span>
11424
11425              <span class="entry_type_visibility"> [public]</span>
11426
11427
11428              <span class="entry_type_hwlevel">[legacy] </span>
11429
11430
11431
11432
11433            </td> <!-- entry_type -->
11434
11435            <td class="entry_description">
11436              <p>The orientation for a JPEG image.<wbr/></p>
11437            </td>
11438
11439            <td class="entry_units">
11440              Degrees in multiples of 90
11441            </td>
11442
11443            <td class="entry_range">
11444              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11445            </td>
11446
11447            <td class="entry_hal_version">
11448              <p>3.<wbr/>2</p>
11449            </td>
11450
11451            <td class="entry_tags">
11452              <ul class="entry_tags">
11453                  <li><a href="#tag_BC">BC</a></li>
11454              </ul>
11455            </td>
11456
11457          </tr>
11458          <tr class="entries_header">
11459            <th class="th_details" colspan="6">Details</th>
11460          </tr>
11461          <tr class="entry_cont">
11462            <td class="entry_details" colspan="6">
11463              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11464to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11465upright.<wbr/></p>
11466<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11467rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11468the thumbnail data will also be rotated.<wbr/></p>
11469<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11470by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11471<p>To translate from the device orientation given by the Android sensor APIs for camera
11472sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
11473<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11474    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11475    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11476
11477    //<wbr/> Round device orientation to a multiple of 90
11478    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11479
11480    //<wbr/> Reverse device orientation for front-facing cameras
11481    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11482    if (facingFront) deviceOrientation = -deviceOrientation;
11483
11484    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11485    //<wbr/> the image upright relative to the device orientation
11486    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11487
11488    return jpegOrientation;
11489}
11490</code></pre>
11491<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
11492also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
11493            </td>
11494          </tr>
11495
11496
11497          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11498           <!-- end of entry -->
11499
11500
11501          <tr class="entry" id="controls_android.jpeg.quality">
11502            <td class="entry_name
11503             " rowspan="3">
11504              android.<wbr/>jpeg.<wbr/>quality
11505            </td>
11506            <td class="entry_type">
11507                <span class="entry_type_name">byte</span>
11508
11509              <span class="entry_type_visibility"> [public]</span>
11510
11511
11512              <span class="entry_type_hwlevel">[legacy] </span>
11513
11514
11515
11516
11517            </td> <!-- entry_type -->
11518
11519            <td class="entry_description">
11520              <p>Compression quality of the final JPEG
11521image.<wbr/></p>
11522            </td>
11523
11524            <td class="entry_units">
11525            </td>
11526
11527            <td class="entry_range">
11528              <p>1-100; larger is higher quality</p>
11529            </td>
11530
11531            <td class="entry_hal_version">
11532              <p>3.<wbr/>2</p>
11533            </td>
11534
11535            <td class="entry_tags">
11536              <ul class="entry_tags">
11537                  <li><a href="#tag_BC">BC</a></li>
11538              </ul>
11539            </td>
11540
11541          </tr>
11542          <tr class="entries_header">
11543            <th class="th_details" colspan="6">Details</th>
11544          </tr>
11545          <tr class="entry_cont">
11546            <td class="entry_details" colspan="6">
11547              <p>85-95 is typical usage range.<wbr/></p>
11548            </td>
11549          </tr>
11550
11551
11552          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11553           <!-- end of entry -->
11554
11555
11556          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11557            <td class="entry_name
11558             " rowspan="1">
11559              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11560            </td>
11561            <td class="entry_type">
11562                <span class="entry_type_name">byte</span>
11563
11564              <span class="entry_type_visibility"> [public]</span>
11565
11566
11567              <span class="entry_type_hwlevel">[legacy] </span>
11568
11569
11570
11571
11572            </td> <!-- entry_type -->
11573
11574            <td class="entry_description">
11575              <p>Compression quality of JPEG
11576thumbnail.<wbr/></p>
11577            </td>
11578
11579            <td class="entry_units">
11580            </td>
11581
11582            <td class="entry_range">
11583              <p>1-100; larger is higher quality</p>
11584            </td>
11585
11586            <td class="entry_hal_version">
11587              <p>3.<wbr/>2</p>
11588            </td>
11589
11590            <td class="entry_tags">
11591              <ul class="entry_tags">
11592                  <li><a href="#tag_BC">BC</a></li>
11593              </ul>
11594            </td>
11595
11596          </tr>
11597
11598
11599          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11600           <!-- end of entry -->
11601
11602
11603          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11604            <td class="entry_name
11605             " rowspan="5">
11606              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11607            </td>
11608            <td class="entry_type">
11609                <span class="entry_type_name">int32</span>
11610                <span class="entry_type_container">x</span>
11611
11612                <span class="entry_type_array">
11613                  2
11614                </span>
11615              <span class="entry_type_visibility"> [public as size]</span>
11616
11617
11618              <span class="entry_type_hwlevel">[legacy] </span>
11619
11620
11621
11622
11623            </td> <!-- entry_type -->
11624
11625            <td class="entry_description">
11626              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11627            </td>
11628
11629            <td class="entry_units">
11630            </td>
11631
11632            <td class="entry_range">
11633              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11634            </td>
11635
11636            <td class="entry_hal_version">
11637              <p>3.<wbr/>2</p>
11638            </td>
11639
11640            <td class="entry_tags">
11641              <ul class="entry_tags">
11642                  <li><a href="#tag_BC">BC</a></li>
11643              </ul>
11644            </td>
11645
11646          </tr>
11647          <tr class="entries_header">
11648            <th class="th_details" colspan="6">Details</th>
11649          </tr>
11650          <tr class="entry_cont">
11651            <td class="entry_details" colspan="6">
11652              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11653but the captured JPEG will still be a valid image.<wbr/></p>
11654<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11655should have the same aspect ratio as the main JPEG output.<wbr/></p>
11656<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11657ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11658For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1165916:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11660generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11661Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11662<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11663the camera device will handle thumbnail rotation in one of the following ways:</p>
11664<ul>
11665<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11666  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11667<li>Rotate the jpeg and thumbnail image data and not set
11668  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11669  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11670  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11671  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11672  size.<wbr/></li>
11673</ul>
11674            </td>
11675          </tr>
11676
11677          <tr class="entries_header">
11678            <th class="th_details" colspan="6">HAL Implementation Details</th>
11679          </tr>
11680          <tr class="entry_cont">
11681            <td class="entry_details" colspan="6">
11682              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11683The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11684The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11685thumbnail image cropping.<wbr/></p>
11686            </td>
11687          </tr>
11688
11689          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11690           <!-- end of entry -->
11691
11692
11693
11694      <!-- end of kind -->
11695      </tbody>
11696      <tr><td colspan="7" class="kind">static</td></tr>
11697
11698      <thead class="entries_header">
11699        <tr>
11700          <th class="th_name">Property Name</th>
11701          <th class="th_type">Type</th>
11702          <th class="th_description">Description</th>
11703          <th class="th_units">Units</th>
11704          <th class="th_range">Range</th>
11705          <th class="th_hal_version">Initial HIDL HAL version</th>
11706          <th class="th_tags">Tags</th>
11707        </tr>
11708      </thead>
11709
11710      <tbody>
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11722            <td class="entry_name
11723             " rowspan="3">
11724              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11725            </td>
11726            <td class="entry_type">
11727                <span class="entry_type_name">int32</span>
11728                <span class="entry_type_container">x</span>
11729
11730                <span class="entry_type_array">
11731                  2 x n
11732                </span>
11733              <span class="entry_type_visibility"> [public as size]</span>
11734
11735
11736              <span class="entry_type_hwlevel">[legacy] </span>
11737
11738
11739
11740
11741            </td> <!-- entry_type -->
11742
11743            <td class="entry_description">
11744              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11745camera device.<wbr/></p>
11746            </td>
11747
11748            <td class="entry_units">
11749            </td>
11750
11751            <td class="entry_range">
11752            </td>
11753
11754            <td class="entry_hal_version">
11755              <p>3.<wbr/>2</p>
11756            </td>
11757
11758            <td class="entry_tags">
11759              <ul class="entry_tags">
11760                  <li><a href="#tag_BC">BC</a></li>
11761              </ul>
11762            </td>
11763
11764          </tr>
11765          <tr class="entries_header">
11766            <th class="th_details" colspan="6">Details</th>
11767          </tr>
11768          <tr class="entry_cont">
11769            <td class="entry_details" colspan="6">
11770              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11771thumbnail should be generated.<wbr/></p>
11772<p>Below condiditions will be satisfied for this size list:</p>
11773<ul>
11774<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11775If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11776<li>The aspect ratio of the largest thumbnail size will be same as the
11777aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
11778The largest size is defined as the size that has the largest pixel area
11779in a given size list.<wbr/></li>
11780<li>Each output JPEG size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have at least
11781one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11782and vice versa.<wbr/></li>
11783<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11784</ul>
11785            </td>
11786          </tr>
11787
11788
11789          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11790           <!-- end of entry -->
11791
11792
11793          <tr class="entry" id="static_android.jpeg.maxSize">
11794            <td class="entry_name
11795             " rowspan="3">
11796              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11797            </td>
11798            <td class="entry_type">
11799                <span class="entry_type_name">int32</span>
11800
11801              <span class="entry_type_visibility"> [system]</span>
11802
11803
11804
11805
11806
11807
11808            </td> <!-- entry_type -->
11809
11810            <td class="entry_description">
11811              <p>Maximum size in bytes for the compressed
11812JPEG buffer</p>
11813            </td>
11814
11815            <td class="entry_units">
11816            </td>
11817
11818            <td class="entry_range">
11819              <p>Must be large enough to fit any JPEG produced by
11820the camera</p>
11821            </td>
11822
11823            <td class="entry_hal_version">
11824              <p>3.<wbr/>2</p>
11825            </td>
11826
11827            <td class="entry_tags">
11828            </td>
11829
11830          </tr>
11831          <tr class="entries_header">
11832            <th class="th_details" colspan="6">Details</th>
11833          </tr>
11834          <tr class="entry_cont">
11835            <td class="entry_details" colspan="6">
11836              <p>This is used for sizing the gralloc buffers for
11837JPEG</p>
11838            </td>
11839          </tr>
11840
11841
11842          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11843           <!-- end of entry -->
11844
11845
11846
11847      <!-- end of kind -->
11848      </tbody>
11849      <tr><td colspan="7" class="kind">dynamic</td></tr>
11850
11851      <thead class="entries_header">
11852        <tr>
11853          <th class="th_name">Property Name</th>
11854          <th class="th_type">Type</th>
11855          <th class="th_description">Description</th>
11856          <th class="th_units">Units</th>
11857          <th class="th_range">Range</th>
11858          <th class="th_hal_version">Initial HIDL HAL version</th>
11859          <th class="th_tags">Tags</th>
11860        </tr>
11861      </thead>
11862
11863      <tbody>
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11875            <td class="entry_name
11876             " rowspan="3">
11877              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11878            </td>
11879            <td class="entry_type">
11880                <span class="entry_type_name">byte</span>
11881
11882              <span class="entry_type_visibility"> [java_public as location]</span>
11883
11884              <span class="entry_type_synthetic">[synthetic] </span>
11885
11886              <span class="entry_type_hwlevel">[legacy] </span>
11887
11888
11889
11890
11891            </td> <!-- entry_type -->
11892
11893            <td class="entry_description">
11894              <p>A location object to use when generating image GPS metadata.<wbr/></p>
11895            </td>
11896
11897            <td class="entry_units">
11898            </td>
11899
11900            <td class="entry_range">
11901            </td>
11902
11903            <td class="entry_hal_version">
11904              <p>3.<wbr/>2</p>
11905            </td>
11906
11907            <td class="entry_tags">
11908            </td>
11909
11910          </tr>
11911          <tr class="entries_header">
11912            <th class="th_details" colspan="6">Details</th>
11913          </tr>
11914          <tr class="entry_cont">
11915            <td class="entry_details" colspan="6">
11916              <p>Setting a location object in a request will include the GPS coordinates of the location
11917into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11918viewed by anyone who receives the JPEG image.<wbr/></p>
11919            </td>
11920          </tr>
11921
11922
11923          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11924           <!-- end of entry -->
11925
11926
11927          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11928            <td class="entry_name
11929             " rowspan="1">
11930              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11931            </td>
11932            <td class="entry_type">
11933                <span class="entry_type_name">double</span>
11934                <span class="entry_type_container">x</span>
11935
11936                <span class="entry_type_array">
11937                  3
11938                </span>
11939              <span class="entry_type_visibility"> [ndk_public]</span>
11940
11941
11942              <span class="entry_type_hwlevel">[legacy] </span>
11943
11944
11945                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11946
11947
11948            </td> <!-- entry_type -->
11949
11950            <td class="entry_description">
11951              <p>GPS coordinates to include in output JPEG
11952EXIF.<wbr/></p>
11953            </td>
11954
11955            <td class="entry_units">
11956            </td>
11957
11958            <td class="entry_range">
11959              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11960            </td>
11961
11962            <td class="entry_hal_version">
11963              <p>3.<wbr/>2</p>
11964            </td>
11965
11966            <td class="entry_tags">
11967              <ul class="entry_tags">
11968                  <li><a href="#tag_BC">BC</a></li>
11969              </ul>
11970            </td>
11971
11972          </tr>
11973
11974
11975          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11976           <!-- end of entry -->
11977
11978
11979          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11980            <td class="entry_name
11981             " rowspan="1">
11982              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11983            </td>
11984            <td class="entry_type">
11985                <span class="entry_type_name">byte</span>
11986
11987              <span class="entry_type_visibility"> [ndk_public as string]</span>
11988
11989
11990              <span class="entry_type_hwlevel">[legacy] </span>
11991
11992
11993
11994
11995            </td> <!-- entry_type -->
11996
11997            <td class="entry_description">
11998              <p>32 characters describing GPS algorithm to
11999include in EXIF.<wbr/></p>
12000            </td>
12001
12002            <td class="entry_units">
12003              UTF-8 null-terminated string
12004            </td>
12005
12006            <td class="entry_range">
12007            </td>
12008
12009            <td class="entry_hal_version">
12010              <p>3.<wbr/>2</p>
12011            </td>
12012
12013            <td class="entry_tags">
12014              <ul class="entry_tags">
12015                  <li><a href="#tag_BC">BC</a></li>
12016              </ul>
12017            </td>
12018
12019          </tr>
12020
12021
12022          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12023           <!-- end of entry -->
12024
12025
12026          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12027            <td class="entry_name
12028             " rowspan="1">
12029              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12030            </td>
12031            <td class="entry_type">
12032                <span class="entry_type_name">int64</span>
12033
12034              <span class="entry_type_visibility"> [ndk_public]</span>
12035
12036
12037              <span class="entry_type_hwlevel">[legacy] </span>
12038
12039
12040
12041
12042            </td> <!-- entry_type -->
12043
12044            <td class="entry_description">
12045              <p>Time GPS fix was made to include in
12046EXIF.<wbr/></p>
12047            </td>
12048
12049            <td class="entry_units">
12050              UTC in seconds since January 1,<wbr/> 1970
12051            </td>
12052
12053            <td class="entry_range">
12054            </td>
12055
12056            <td class="entry_hal_version">
12057              <p>3.<wbr/>2</p>
12058            </td>
12059
12060            <td class="entry_tags">
12061              <ul class="entry_tags">
12062                  <li><a href="#tag_BC">BC</a></li>
12063              </ul>
12064            </td>
12065
12066          </tr>
12067
12068
12069          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12070           <!-- end of entry -->
12071
12072
12073          <tr class="entry" id="dynamic_android.jpeg.orientation">
12074            <td class="entry_name
12075             " rowspan="3">
12076              android.<wbr/>jpeg.<wbr/>orientation
12077            </td>
12078            <td class="entry_type">
12079                <span class="entry_type_name">int32</span>
12080
12081              <span class="entry_type_visibility"> [public]</span>
12082
12083
12084              <span class="entry_type_hwlevel">[legacy] </span>
12085
12086
12087
12088
12089            </td> <!-- entry_type -->
12090
12091            <td class="entry_description">
12092              <p>The orientation for a JPEG image.<wbr/></p>
12093            </td>
12094
12095            <td class="entry_units">
12096              Degrees in multiples of 90
12097            </td>
12098
12099            <td class="entry_range">
12100              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12101            </td>
12102
12103            <td class="entry_hal_version">
12104              <p>3.<wbr/>2</p>
12105            </td>
12106
12107            <td class="entry_tags">
12108              <ul class="entry_tags">
12109                  <li><a href="#tag_BC">BC</a></li>
12110              </ul>
12111            </td>
12112
12113          </tr>
12114          <tr class="entries_header">
12115            <th class="th_details" colspan="6">Details</th>
12116          </tr>
12117          <tr class="entry_cont">
12118            <td class="entry_details" colspan="6">
12119              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12120to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12121upright.<wbr/></p>
12122<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12123rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12124the thumbnail data will also be rotated.<wbr/></p>
12125<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12126by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12127<p>To translate from the device orientation given by the Android sensor APIs for camera
12128sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
12129<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12130    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12131    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12132
12133    //<wbr/> Round device orientation to a multiple of 90
12134    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12135
12136    //<wbr/> Reverse device orientation for front-facing cameras
12137    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12138    if (facingFront) deviceOrientation = -deviceOrientation;
12139
12140    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12141    //<wbr/> the image upright relative to the device orientation
12142    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12143
12144    return jpegOrientation;
12145}
12146</code></pre>
12147<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
12148also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
12149            </td>
12150          </tr>
12151
12152
12153          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12154           <!-- end of entry -->
12155
12156
12157          <tr class="entry" id="dynamic_android.jpeg.quality">
12158            <td class="entry_name
12159             " rowspan="3">
12160              android.<wbr/>jpeg.<wbr/>quality
12161            </td>
12162            <td class="entry_type">
12163                <span class="entry_type_name">byte</span>
12164
12165              <span class="entry_type_visibility"> [public]</span>
12166
12167
12168              <span class="entry_type_hwlevel">[legacy] </span>
12169
12170
12171
12172
12173            </td> <!-- entry_type -->
12174
12175            <td class="entry_description">
12176              <p>Compression quality of the final JPEG
12177image.<wbr/></p>
12178            </td>
12179
12180            <td class="entry_units">
12181            </td>
12182
12183            <td class="entry_range">
12184              <p>1-100; larger is higher quality</p>
12185            </td>
12186
12187            <td class="entry_hal_version">
12188              <p>3.<wbr/>2</p>
12189            </td>
12190
12191            <td class="entry_tags">
12192              <ul class="entry_tags">
12193                  <li><a href="#tag_BC">BC</a></li>
12194              </ul>
12195            </td>
12196
12197          </tr>
12198          <tr class="entries_header">
12199            <th class="th_details" colspan="6">Details</th>
12200          </tr>
12201          <tr class="entry_cont">
12202            <td class="entry_details" colspan="6">
12203              <p>85-95 is typical usage range.<wbr/></p>
12204            </td>
12205          </tr>
12206
12207
12208          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12209           <!-- end of entry -->
12210
12211
12212          <tr class="entry" id="dynamic_android.jpeg.size">
12213            <td class="entry_name
12214             " rowspan="3">
12215              android.<wbr/>jpeg.<wbr/>size
12216            </td>
12217            <td class="entry_type">
12218                <span class="entry_type_name">int32</span>
12219
12220              <span class="entry_type_visibility"> [system]</span>
12221
12222
12223
12224
12225
12226
12227            </td> <!-- entry_type -->
12228
12229            <td class="entry_description">
12230              <p>The size of the compressed JPEG image,<wbr/> in
12231bytes</p>
12232            </td>
12233
12234            <td class="entry_units">
12235            </td>
12236
12237            <td class="entry_range">
12238              <p>&gt;= 0</p>
12239            </td>
12240
12241            <td class="entry_hal_version">
12242              <p>3.<wbr/>2</p>
12243            </td>
12244
12245            <td class="entry_tags">
12246              <ul class="entry_tags">
12247                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12248              </ul>
12249            </td>
12250
12251          </tr>
12252          <tr class="entries_header">
12253            <th class="th_details" colspan="6">Details</th>
12254          </tr>
12255          <tr class="entry_cont">
12256            <td class="entry_details" colspan="6">
12257              <p>If no JPEG output is produced for the request,<wbr/>
12258this must be 0.<wbr/></p>
12259<p>Otherwise,<wbr/> this describes the real size of the compressed
12260JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12261if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12262has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12263the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12264500000 make up the real data.<wbr/></p>
12265            </td>
12266          </tr>
12267
12268
12269          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12270           <!-- end of entry -->
12271
12272
12273          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12274            <td class="entry_name
12275             " rowspan="1">
12276              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12277            </td>
12278            <td class="entry_type">
12279                <span class="entry_type_name">byte</span>
12280
12281              <span class="entry_type_visibility"> [public]</span>
12282
12283
12284              <span class="entry_type_hwlevel">[legacy] </span>
12285
12286
12287
12288
12289            </td> <!-- entry_type -->
12290
12291            <td class="entry_description">
12292              <p>Compression quality of JPEG
12293thumbnail.<wbr/></p>
12294            </td>
12295
12296            <td class="entry_units">
12297            </td>
12298
12299            <td class="entry_range">
12300              <p>1-100; larger is higher quality</p>
12301            </td>
12302
12303            <td class="entry_hal_version">
12304              <p>3.<wbr/>2</p>
12305            </td>
12306
12307            <td class="entry_tags">
12308              <ul class="entry_tags">
12309                  <li><a href="#tag_BC">BC</a></li>
12310              </ul>
12311            </td>
12312
12313          </tr>
12314
12315
12316          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12317           <!-- end of entry -->
12318
12319
12320          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12321            <td class="entry_name
12322             " rowspan="5">
12323              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12324            </td>
12325            <td class="entry_type">
12326                <span class="entry_type_name">int32</span>
12327                <span class="entry_type_container">x</span>
12328
12329                <span class="entry_type_array">
12330                  2
12331                </span>
12332              <span class="entry_type_visibility"> [public as size]</span>
12333
12334
12335              <span class="entry_type_hwlevel">[legacy] </span>
12336
12337
12338
12339
12340            </td> <!-- entry_type -->
12341
12342            <td class="entry_description">
12343              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12344            </td>
12345
12346            <td class="entry_units">
12347            </td>
12348
12349            <td class="entry_range">
12350              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12351            </td>
12352
12353            <td class="entry_hal_version">
12354              <p>3.<wbr/>2</p>
12355            </td>
12356
12357            <td class="entry_tags">
12358              <ul class="entry_tags">
12359                  <li><a href="#tag_BC">BC</a></li>
12360              </ul>
12361            </td>
12362
12363          </tr>
12364          <tr class="entries_header">
12365            <th class="th_details" colspan="6">Details</th>
12366          </tr>
12367          <tr class="entry_cont">
12368            <td class="entry_details" colspan="6">
12369              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12370but the captured JPEG will still be a valid image.<wbr/></p>
12371<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12372should have the same aspect ratio as the main JPEG output.<wbr/></p>
12373<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12374ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12375For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1237616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12377generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12378Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12379<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12380the camera device will handle thumbnail rotation in one of the following ways:</p>
12381<ul>
12382<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12383  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12384<li>Rotate the jpeg and thumbnail image data and not set
12385  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12386  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12387  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12388  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12389  size.<wbr/></li>
12390</ul>
12391            </td>
12392          </tr>
12393
12394          <tr class="entries_header">
12395            <th class="th_details" colspan="6">HAL Implementation Details</th>
12396          </tr>
12397          <tr class="entry_cont">
12398            <td class="entry_details" colspan="6">
12399              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12400The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12401The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12402thumbnail image cropping.<wbr/></p>
12403            </td>
12404          </tr>
12405
12406          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12407           <!-- end of entry -->
12408
12409
12410
12411      <!-- end of kind -->
12412      </tbody>
12413
12414  <!-- end of section -->
12415  <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12416
12417
12418      <tr><td colspan="7" class="kind">controls</td></tr>
12419
12420      <thead class="entries_header">
12421        <tr>
12422          <th class="th_name">Property Name</th>
12423          <th class="th_type">Type</th>
12424          <th class="th_description">Description</th>
12425          <th class="th_units">Units</th>
12426          <th class="th_range">Range</th>
12427          <th class="th_hal_version">Initial HIDL HAL version</th>
12428          <th class="th_tags">Tags</th>
12429        </tr>
12430      </thead>
12431
12432      <tbody>
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443          <tr class="entry" id="controls_android.lens.aperture">
12444            <td class="entry_name
12445             " rowspan="3">
12446              android.<wbr/>lens.<wbr/>aperture
12447            </td>
12448            <td class="entry_type">
12449                <span class="entry_type_name">float</span>
12450
12451              <span class="entry_type_visibility"> [public]</span>
12452
12453
12454              <span class="entry_type_hwlevel">[full] </span>
12455
12456
12457
12458
12459            </td> <!-- entry_type -->
12460
12461            <td class="entry_description">
12462              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12463effective aperture diameter.<wbr/></p>
12464            </td>
12465
12466            <td class="entry_units">
12467              The f-number (f/<wbr/>N)
12468            </td>
12469
12470            <td class="entry_range">
12471              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12472            </td>
12473
12474            <td class="entry_hal_version">
12475              <p>3.<wbr/>2</p>
12476            </td>
12477
12478            <td class="entry_tags">
12479              <ul class="entry_tags">
12480                  <li><a href="#tag_V1">V1</a></li>
12481              </ul>
12482            </td>
12483
12484          </tr>
12485          <tr class="entries_header">
12486            <th class="th_details" colspan="6">Details</th>
12487          </tr>
12488          <tr class="entry_cont">
12489            <td class="entry_details" colspan="6">
12490              <p>Setting this value is only supported on the camera devices that have a variable
12491aperture lens.<wbr/></p>
12492<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12493this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12494<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
12495to achieve manual exposure control.<wbr/></p>
12496<p>The requested aperture value may take several frames to reach the
12497requested value; the camera device will report the current (intermediate)
12498aperture size in capture result metadata while the aperture is changing.<wbr/>
12499While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12500<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12501the ON modes,<wbr/> this will be overridden by the camera device
12502auto-exposure algorithm,<wbr/> the overridden values are then provided
12503back to the user in the corresponding result.<wbr/></p>
12504            </td>
12505          </tr>
12506
12507
12508          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12509           <!-- end of entry -->
12510
12511
12512          <tr class="entry" id="controls_android.lens.filterDensity">
12513            <td class="entry_name
12514             " rowspan="3">
12515              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12516            </td>
12517            <td class="entry_type">
12518                <span class="entry_type_name">float</span>
12519
12520              <span class="entry_type_visibility"> [public]</span>
12521
12522
12523              <span class="entry_type_hwlevel">[full] </span>
12524
12525
12526
12527
12528            </td> <!-- entry_type -->
12529
12530            <td class="entry_description">
12531              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12532            </td>
12533
12534            <td class="entry_units">
12535              Exposure Value (EV)
12536            </td>
12537
12538            <td class="entry_range">
12539              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12540            </td>
12541
12542            <td class="entry_hal_version">
12543              <p>3.<wbr/>2</p>
12544            </td>
12545
12546            <td class="entry_tags">
12547              <ul class="entry_tags">
12548                  <li><a href="#tag_V1">V1</a></li>
12549              </ul>
12550            </td>
12551
12552          </tr>
12553          <tr class="entries_header">
12554            <th class="th_details" colspan="6">Details</th>
12555          </tr>
12556          <tr class="entry_cont">
12557            <td class="entry_details" colspan="6">
12558              <p>This control will not be supported on most camera devices.<wbr/></p>
12559<p>Lens filters are typically used to lower the amount of light the
12560sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12561step is the standard logarithmic representation,<wbr/> which are
12562non-negative,<wbr/> and inversely proportional to the amount of light
12563hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12564in no reduction of the incoming light,<wbr/> and setting this to 2 would
12565mean that the filter is set to reduce incoming light by two stops
12566(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12567<p>It may take several frames before the lens filter density changes
12568to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12569<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12570            </td>
12571          </tr>
12572
12573
12574          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12575           <!-- end of entry -->
12576
12577
12578          <tr class="entry" id="controls_android.lens.focalLength">
12579            <td class="entry_name
12580             " rowspan="3">
12581              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12582            </td>
12583            <td class="entry_type">
12584                <span class="entry_type_name">float</span>
12585
12586              <span class="entry_type_visibility"> [public]</span>
12587
12588
12589              <span class="entry_type_hwlevel">[legacy] </span>
12590
12591
12592
12593
12594            </td> <!-- entry_type -->
12595
12596            <td class="entry_description">
12597              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12598            </td>
12599
12600            <td class="entry_units">
12601              Millimeters
12602            </td>
12603
12604            <td class="entry_range">
12605              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12606            </td>
12607
12608            <td class="entry_hal_version">
12609              <p>3.<wbr/>2</p>
12610            </td>
12611
12612            <td class="entry_tags">
12613              <ul class="entry_tags">
12614                  <li><a href="#tag_V1">V1</a></li>
12615              </ul>
12616            </td>
12617
12618          </tr>
12619          <tr class="entries_header">
12620            <th class="th_details" colspan="6">Details</th>
12621          </tr>
12622          <tr class="entry_cont">
12623            <td class="entry_details" colspan="6">
12624              <p>This setting controls the physical focal length of the camera
12625device's lens.<wbr/> Changing the focal length changes the field of
12626view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12627<p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this
12628setting won't be applied instantaneously,<wbr/> and it may take several
12629frames before the lens can change to the requested focal length.<wbr/>
12630While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12631be set to MOVING.<wbr/></p>
12632<p>Optical zoom will not be supported on most devices.<wbr/></p>
12633            </td>
12634          </tr>
12635
12636
12637          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12638           <!-- end of entry -->
12639
12640
12641          <tr class="entry" id="controls_android.lens.focusDistance">
12642            <td class="entry_name
12643             " rowspan="3">
12644              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12645            </td>
12646            <td class="entry_type">
12647                <span class="entry_type_name">float</span>
12648
12649              <span class="entry_type_visibility"> [public]</span>
12650
12651
12652              <span class="entry_type_hwlevel">[full] </span>
12653
12654
12655
12656
12657            </td> <!-- entry_type -->
12658
12659            <td class="entry_description">
12660              <p>Desired distance to plane of sharpest focus,<wbr/>
12661measured from frontmost surface of the lens.<wbr/></p>
12662            </td>
12663
12664            <td class="entry_units">
12665              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12666            </td>
12667
12668            <td class="entry_range">
12669              <p>&gt;= 0</p>
12670            </td>
12671
12672            <td class="entry_hal_version">
12673              <p>3.<wbr/>2</p>
12674            </td>
12675
12676            <td class="entry_tags">
12677              <ul class="entry_tags">
12678                  <li><a href="#tag_BC">BC</a></li>
12679                  <li><a href="#tag_V1">V1</a></li>
12680              </ul>
12681            </td>
12682
12683          </tr>
12684          <tr class="entries_header">
12685            <th class="th_details" colspan="6">Details</th>
12686          </tr>
12687          <tr class="entry_cont">
12688            <td class="entry_details" colspan="6">
12689              <p>This control can be used for setting manual focus,<wbr/> on devices that support
12690the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12691<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12692<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12693<code>[0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>.<wbr/></p>
12694<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12695instantaneously,<wbr/> and it may take several frames before the lens
12696can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12697<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12698<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12699for infinity focus.<wbr/></p>
12700            </td>
12701          </tr>
12702
12703
12704          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12705           <!-- end of entry -->
12706
12707
12708          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12709            <td class="entry_name
12710             " rowspan="3">
12711              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12712            </td>
12713            <td class="entry_type">
12714                <span class="entry_type_name entry_type_name_enum">byte</span>
12715
12716              <span class="entry_type_visibility"> [public]</span>
12717
12718
12719              <span class="entry_type_hwlevel">[limited] </span>
12720
12721
12722
12723                <ul class="entry_type_enum">
12724                  <li>
12725                    <span class="entry_type_enum_name">OFF (v3.2)</span>
12726                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12727                  </li>
12728                  <li>
12729                    <span class="entry_type_enum_name">ON (v3.2)</span>
12730                    <span class="entry_type_enum_optional">[optional]</span>
12731                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12732                  </li>
12733                </ul>
12734
12735            </td> <!-- entry_type -->
12736
12737            <td class="entry_description">
12738              <p>Sets whether the camera device uses optical image stabilization (OIS)
12739when capturing images.<wbr/></p>
12740            </td>
12741
12742            <td class="entry_units">
12743            </td>
12744
12745            <td class="entry_range">
12746              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12747            </td>
12748
12749            <td class="entry_hal_version">
12750              <p>3.<wbr/>2</p>
12751            </td>
12752
12753            <td class="entry_tags">
12754              <ul class="entry_tags">
12755                  <li><a href="#tag_V1">V1</a></li>
12756              </ul>
12757            </td>
12758
12759          </tr>
12760          <tr class="entries_header">
12761            <th class="th_details" colspan="6">Details</th>
12762          </tr>
12763          <tr class="entry_cont">
12764            <td class="entry_details" colspan="6">
12765              <p>OIS is used to compensate for motion blur due to small
12766movements of the camera during capture.<wbr/> Unlike digital image
12767stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12768makes use of mechanical elements to stabilize the camera
12769sensor,<wbr/> and thus allows for longer exposure times before
12770camera shake becomes apparent.<wbr/></p>
12771<p>Switching between different optical stabilization modes may take several
12772frames to initialize,<wbr/> the camera device will report the current mode in
12773capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12774optical stabilization modes in the first several capture results may still
12775be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12776<p>If a camera device supports both OIS and digital image stabilization
12777(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12778interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12779<p>Not all devices will support OIS; see
12780<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12781available controls.<wbr/></p>
12782            </td>
12783          </tr>
12784
12785
12786          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12787           <!-- end of entry -->
12788
12789
12790
12791      <!-- end of kind -->
12792      </tbody>
12793      <tr><td colspan="7" class="kind">static</td></tr>
12794
12795      <thead class="entries_header">
12796        <tr>
12797          <th class="th_name">Property Name</th>
12798          <th class="th_type">Type</th>
12799          <th class="th_description">Description</th>
12800          <th class="th_units">Units</th>
12801          <th class="th_range">Range</th>
12802          <th class="th_hal_version">Initial HIDL HAL version</th>
12803          <th class="th_tags">Tags</th>
12804        </tr>
12805      </thead>
12806
12807      <tbody>
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820          <tr class="entry" id="static_android.lens.info.availableApertures">
12821            <td class="entry_name
12822             " rowspan="3">
12823              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12824            </td>
12825            <td class="entry_type">
12826                <span class="entry_type_name">float</span>
12827                <span class="entry_type_container">x</span>
12828
12829                <span class="entry_type_array">
12830                  n
12831                </span>
12832              <span class="entry_type_visibility"> [public]</span>
12833
12834
12835              <span class="entry_type_hwlevel">[full] </span>
12836
12837
12838
12839
12840            </td> <!-- entry_type -->
12841
12842            <td class="entry_description">
12843              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12844supported by this camera device.<wbr/></p>
12845            </td>
12846
12847            <td class="entry_units">
12848              The aperture f-number
12849            </td>
12850
12851            <td class="entry_range">
12852            </td>
12853
12854            <td class="entry_hal_version">
12855              <p>3.<wbr/>2</p>
12856            </td>
12857
12858            <td class="entry_tags">
12859              <ul class="entry_tags">
12860                  <li><a href="#tag_V1">V1</a></li>
12861              </ul>
12862            </td>
12863
12864          </tr>
12865          <tr class="entries_header">
12866            <th class="th_details" colspan="6">Details</th>
12867          </tr>
12868          <tr class="entry_cont">
12869            <td class="entry_details" colspan="6">
12870              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12871this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12872<p>If the camera device supports a variable aperture,<wbr/> the aperture values
12873in this list will be sorted in ascending order.<wbr/></p>
12874            </td>
12875          </tr>
12876
12877
12878          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12879           <!-- end of entry -->
12880
12881
12882          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12883            <td class="entry_name
12884             " rowspan="3">
12885              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12886            </td>
12887            <td class="entry_type">
12888                <span class="entry_type_name">float</span>
12889                <span class="entry_type_container">x</span>
12890
12891                <span class="entry_type_array">
12892                  n
12893                </span>
12894              <span class="entry_type_visibility"> [public]</span>
12895
12896
12897              <span class="entry_type_hwlevel">[full] </span>
12898
12899
12900
12901
12902            </td> <!-- entry_type -->
12903
12904            <td class="entry_description">
12905              <p>List of neutral density filter values for
12906<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12907            </td>
12908
12909            <td class="entry_units">
12910              Exposure value (EV)
12911            </td>
12912
12913            <td class="entry_range">
12914              <p>Values are &gt;= 0</p>
12915            </td>
12916
12917            <td class="entry_hal_version">
12918              <p>3.<wbr/>2</p>
12919            </td>
12920
12921            <td class="entry_tags">
12922              <ul class="entry_tags">
12923                  <li><a href="#tag_V1">V1</a></li>
12924              </ul>
12925            </td>
12926
12927          </tr>
12928          <tr class="entries_header">
12929            <th class="th_details" colspan="6">Details</th>
12930          </tr>
12931          <tr class="entry_cont">
12932            <td class="entry_details" colspan="6">
12933              <p>If a neutral density filter is not supported by this camera device,<wbr/>
12934this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12935filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12936            </td>
12937          </tr>
12938
12939
12940          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12941           <!-- end of entry -->
12942
12943
12944          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12945            <td class="entry_name
12946             " rowspan="3">
12947              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12948            </td>
12949            <td class="entry_type">
12950                <span class="entry_type_name">float</span>
12951                <span class="entry_type_container">x</span>
12952
12953                <span class="entry_type_array">
12954                  n
12955                </span>
12956              <span class="entry_type_visibility"> [public]</span>
12957
12958
12959              <span class="entry_type_hwlevel">[legacy] </span>
12960
12961
12962                <div class="entry_type_notes">The list of available focal lengths</div>
12963
12964
12965            </td> <!-- entry_type -->
12966
12967            <td class="entry_description">
12968              <p>List of focal lengths for <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> that are supported by this camera
12969device.<wbr/></p>
12970            </td>
12971
12972            <td class="entry_units">
12973              Millimeters
12974            </td>
12975
12976            <td class="entry_range">
12977              <p>Values are &gt; 0</p>
12978            </td>
12979
12980            <td class="entry_hal_version">
12981              <p>3.<wbr/>2</p>
12982            </td>
12983
12984            <td class="entry_tags">
12985              <ul class="entry_tags">
12986                  <li><a href="#tag_BC">BC</a></li>
12987                  <li><a href="#tag_V1">V1</a></li>
12988              </ul>
12989            </td>
12990
12991          </tr>
12992          <tr class="entries_header">
12993            <th class="th_details" colspan="6">Details</th>
12994          </tr>
12995          <tr class="entry_cont">
12996            <td class="entry_details" colspan="6">
12997              <p>If optical zoom is not supported,<wbr/> this list will only contain
12998a single value corresponding to the fixed focal length of the
12999device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
13000by the camera device,<wbr/> in ascending order.<wbr/></p>
13001            </td>
13002          </tr>
13003
13004
13005          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13006           <!-- end of entry -->
13007
13008
13009          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13010            <td class="entry_name
13011             " rowspan="3">
13012              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13013            </td>
13014            <td class="entry_type">
13015                <span class="entry_type_name">byte</span>
13016                <span class="entry_type_container">x</span>
13017
13018                <span class="entry_type_array">
13019                  n
13020                </span>
13021              <span class="entry_type_visibility"> [public as enumList]</span>
13022
13023
13024              <span class="entry_type_hwlevel">[limited] </span>
13025
13026
13027                <div class="entry_type_notes">list of enums</div>
13028
13029
13030            </td> <!-- entry_type -->
13031
13032            <td class="entry_description">
13033              <p>List of optical image stabilization (OIS) modes for
13034<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> that are supported by this camera device.<wbr/></p>
13035            </td>
13036
13037            <td class="entry_units">
13038            </td>
13039
13040            <td class="entry_range">
13041              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13042            </td>
13043
13044            <td class="entry_hal_version">
13045              <p>3.<wbr/>2</p>
13046            </td>
13047
13048            <td class="entry_tags">
13049              <ul class="entry_tags">
13050                  <li><a href="#tag_V1">V1</a></li>
13051              </ul>
13052            </td>
13053
13054          </tr>
13055          <tr class="entries_header">
13056            <th class="th_details" colspan="6">Details</th>
13057          </tr>
13058          <tr class="entry_cont">
13059            <td class="entry_details" colspan="6">
13060              <p>If OIS is not supported by a given camera device,<wbr/> this list will
13061contain only OFF.<wbr/></p>
13062            </td>
13063          </tr>
13064
13065
13066          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13067           <!-- end of entry -->
13068
13069
13070          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13071            <td class="entry_name
13072             " rowspan="3">
13073              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13074            </td>
13075            <td class="entry_type">
13076                <span class="entry_type_name">float</span>
13077
13078              <span class="entry_type_visibility"> [public]</span>
13079
13080
13081              <span class="entry_type_hwlevel">[limited] </span>
13082
13083
13084
13085
13086            </td> <!-- entry_type -->
13087
13088            <td class="entry_description">
13089              <p>Hyperfocal distance for this lens.<wbr/></p>
13090            </td>
13091
13092            <td class="entry_units">
13093              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13094            </td>
13095
13096            <td class="entry_range">
13097              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13098within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
13099            </td>
13100
13101            <td class="entry_hal_version">
13102              <p>3.<wbr/>2</p>
13103            </td>
13104
13105            <td class="entry_tags">
13106            </td>
13107
13108          </tr>
13109          <tr class="entries_header">
13110            <th class="th_details" colspan="6">Details</th>
13111          </tr>
13112          <tr class="entry_cont">
13113            <td class="entry_details" colspan="6">
13114              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13115field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p>
13116            </td>
13117          </tr>
13118
13119
13120          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13121           <!-- end of entry -->
13122
13123
13124          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13125            <td class="entry_name
13126             " rowspan="5">
13127              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13128            </td>
13129            <td class="entry_type">
13130                <span class="entry_type_name">float</span>
13131
13132              <span class="entry_type_visibility"> [public]</span>
13133
13134
13135              <span class="entry_type_hwlevel">[limited] </span>
13136
13137
13138
13139
13140            </td> <!-- entry_type -->
13141
13142            <td class="entry_description">
13143              <p>Shortest distance from frontmost surface
13144of the lens that can be brought into sharp focus.<wbr/></p>
13145            </td>
13146
13147            <td class="entry_units">
13148              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13149            </td>
13150
13151            <td class="entry_range">
13152              <p>&gt;= 0</p>
13153            </td>
13154
13155            <td class="entry_hal_version">
13156              <p>3.<wbr/>2</p>
13157            </td>
13158
13159            <td class="entry_tags">
13160              <ul class="entry_tags">
13161                  <li><a href="#tag_V1">V1</a></li>
13162              </ul>
13163            </td>
13164
13165          </tr>
13166          <tr class="entries_header">
13167            <th class="th_details" colspan="6">Details</th>
13168          </tr>
13169          <tr class="entry_cont">
13170            <td class="entry_details" colspan="6">
13171              <p>If the lens is fixed-focus,<wbr/> this will be
131720.<wbr/></p>
13173            </td>
13174          </tr>
13175
13176          <tr class="entries_header">
13177            <th class="th_details" colspan="6">HAL Implementation Details</th>
13178          </tr>
13179          <tr class="entry_cont">
13180            <td class="entry_details" colspan="6">
13181              <p>Mandatory for FULL devices; LIMITED devices
13182must always set this value to 0 for fixed-focus; and may omit
13183the minimum focus distance otherwise.<wbr/></p>
13184<p>This field is also mandatory for all devices advertising
13185the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13186            </td>
13187          </tr>
13188
13189          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13190           <!-- end of entry -->
13191
13192
13193          <tr class="entry" id="static_android.lens.info.shadingMapSize">
13194            <td class="entry_name
13195             " rowspan="3">
13196              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13197            </td>
13198            <td class="entry_type">
13199                <span class="entry_type_name">int32</span>
13200                <span class="entry_type_container">x</span>
13201
13202                <span class="entry_type_array">
13203                  2
13204                </span>
13205              <span class="entry_type_visibility"> [ndk_public as size]</span>
13206
13207
13208              <span class="entry_type_hwlevel">[full] </span>
13209
13210
13211                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13212
13213
13214            </td> <!-- entry_type -->
13215
13216            <td class="entry_description">
13217              <p>Dimensions of lens shading map.<wbr/></p>
13218            </td>
13219
13220            <td class="entry_units">
13221            </td>
13222
13223            <td class="entry_range">
13224              <p>Both values &gt;= 1</p>
13225            </td>
13226
13227            <td class="entry_hal_version">
13228              <p>3.<wbr/>2</p>
13229            </td>
13230
13231            <td class="entry_tags">
13232              <ul class="entry_tags">
13233                  <li><a href="#tag_V1">V1</a></li>
13234              </ul>
13235            </td>
13236
13237          </tr>
13238          <tr class="entries_header">
13239            <th class="th_details" colspan="6">Details</th>
13240          </tr>
13241          <tr class="entry_cont">
13242            <td class="entry_details" colspan="6">
13243              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13244must be smaller than 64x64.<wbr/></p>
13245            </td>
13246          </tr>
13247
13248
13249          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13250           <!-- end of entry -->
13251
13252
13253          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13254            <td class="entry_name
13255             " rowspan="5">
13256              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13257            </td>
13258            <td class="entry_type">
13259                <span class="entry_type_name entry_type_name_enum">byte</span>
13260
13261              <span class="entry_type_visibility"> [public]</span>
13262
13263
13264              <span class="entry_type_hwlevel">[limited] </span>
13265
13266
13267
13268                <ul class="entry_type_enum">
13269                  <li>
13270                    <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13271                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13272<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13273<p>Setting the lens to the same focus distance on separate occasions may
13274result in a different real focus distance,<wbr/> depending on factors such
13275as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13276and the device temperature.<wbr/> The focus distance value will still be
13277in 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
13278represents the farthest focus.<wbr/></p></span>
13279                  </li>
13280                  <li>
13281                    <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13282                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13283<p>However,<wbr/> setting the lens to the same focus distance
13284on separate occasions may result in a different real
13285focus distance,<wbr/> depending on factors such as the
13286orientation of the device,<wbr/> the age of the focusing
13287mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13288                  </li>
13289                  <li>
13290                    <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13291                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13292is calibrated.<wbr/></p>
13293<p>The lens mechanism is calibrated so that setting the
13294same focus distance is repeatable on multiple
13295occasions with good accuracy,<wbr/> and the focus distance
13296corresponds to the real physical distance to the plane
13297of best focus.<wbr/></p></span>
13298                  </li>
13299                </ul>
13300
13301            </td> <!-- entry_type -->
13302
13303            <td class="entry_description">
13304              <p>The lens focus distance calibration quality.<wbr/></p>
13305            </td>
13306
13307            <td class="entry_units">
13308            </td>
13309
13310            <td class="entry_range">
13311            </td>
13312
13313            <td class="entry_hal_version">
13314              <p>3.<wbr/>2</p>
13315            </td>
13316
13317            <td class="entry_tags">
13318              <ul class="entry_tags">
13319                  <li><a href="#tag_V1">V1</a></li>
13320              </ul>
13321            </td>
13322
13323          </tr>
13324          <tr class="entries_header">
13325            <th class="th_details" colspan="6">Details</th>
13326          </tr>
13327          <tr class="entry_cont">
13328            <td class="entry_details" colspan="6">
13329              <p>The lens focus distance calibration quality determines the reliability of
13330focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13331<a href="#dynamic_android.lens.focusRange">android.<wbr/>lens.<wbr/>focus<wbr/>Range</a>,<wbr/> <a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a>,<wbr/> and
13332<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13333<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13334units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13335and increasing positive numbers represent focusing closer and closer
13336to the camera device.<wbr/> The focus distance control also uses diopters
13337on these devices.<wbr/></p>
13338<p>UNCALIBRATED devices do not use units that are directly comparable
13339to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13340focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13341nearest focus the device can achieve.<wbr/></p>
13342            </td>
13343          </tr>
13344
13345          <tr class="entries_header">
13346            <th class="th_details" colspan="6">HAL Implementation Details</th>
13347          </tr>
13348          <tr class="entry_cont">
13349            <td class="entry_details" colspan="6">
13350              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13351focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13352and the lens focus distance is set to 0 diopters
13353(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13354and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13355lens some time to move; during the move the lens state should be MOVING and
13356the output diopter value should be changing toward 0.<wbr/></p>
13357            </td>
13358          </tr>
13359
13360          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13361           <!-- end of entry -->
13362
13363
13364
13365
13366
13367          <tr class="entry" id="static_android.lens.facing">
13368            <td class="entry_name
13369             " rowspan="1">
13370              android.<wbr/>lens.<wbr/>facing
13371            </td>
13372            <td class="entry_type">
13373                <span class="entry_type_name entry_type_name_enum">byte</span>
13374
13375              <span class="entry_type_visibility"> [public]</span>
13376
13377
13378              <span class="entry_type_hwlevel">[legacy] </span>
13379
13380
13381
13382                <ul class="entry_type_enum">
13383                  <li>
13384                    <span class="entry_type_enum_name">FRONT (v3.2)</span>
13385                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13386                  </li>
13387                  <li>
13388                    <span class="entry_type_enum_name">BACK (v3.2)</span>
13389                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13390                  </li>
13391                  <li>
13392                    <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13393                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13394device's screen.<wbr/></p></span>
13395                  </li>
13396                </ul>
13397
13398            </td> <!-- entry_type -->
13399
13400            <td class="entry_description">
13401              <p>Direction the camera faces relative to
13402device screen.<wbr/></p>
13403            </td>
13404
13405            <td class="entry_units">
13406            </td>
13407
13408            <td class="entry_range">
13409            </td>
13410
13411            <td class="entry_hal_version">
13412              <p>3.<wbr/>2</p>
13413            </td>
13414
13415            <td class="entry_tags">
13416            </td>
13417
13418          </tr>
13419
13420
13421          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13422           <!-- end of entry -->
13423
13424
13425          <tr class="entry" id="static_android.lens.poseRotation">
13426            <td class="entry_name
13427             " rowspan="3">
13428              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13429            </td>
13430            <td class="entry_type">
13431                <span class="entry_type_name">float</span>
13432                <span class="entry_type_container">x</span>
13433
13434                <span class="entry_type_array">
13435                  4
13436                </span>
13437              <span class="entry_type_visibility"> [public]</span>
13438
13439
13440
13441
13442
13443
13444            </td> <!-- entry_type -->
13445
13446            <td class="entry_description">
13447              <p>The orientation of the camera relative to the sensor
13448coordinate system.<wbr/></p>
13449            </td>
13450
13451            <td class="entry_units">
13452
13453            Quaternion coefficients
13454
13455            </td>
13456
13457            <td class="entry_range">
13458            </td>
13459
13460            <td class="entry_hal_version">
13461              <p>3.<wbr/>2</p>
13462            </td>
13463
13464            <td class="entry_tags">
13465              <ul class="entry_tags">
13466                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13467              </ul>
13468            </td>
13469
13470          </tr>
13471          <tr class="entries_header">
13472            <th class="th_details" colspan="6">Details</th>
13473          </tr>
13474          <tr class="entry_cont">
13475            <td class="entry_details" colspan="6">
13476              <p>The four coefficients that describe the quaternion
13477rotation from the Android sensor coordinate system to a
13478camera-aligned coordinate system where the X-axis is
13479aligned with the long side of the image sensor,<wbr/> the Y-axis
13480is aligned with the short side of the image sensor,<wbr/> and
13481the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13482<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13483to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13484amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13485<pre><code> theta = 2 * acos(w)
13486a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13487a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13488a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13489</code></pre>
13490<p>To create a 3x3 rotation matrix that applies the rotation
13491defined by this quaternion,<wbr/> the following matrix can be
13492used:</p>
13493<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13494           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13495           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13496</code></pre>
13497<p>This matrix can then be used to apply the rotation to a
13498 column vector point with</p>
13499<p><code>p' = Rp</code></p>
13500<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13501 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13502            </td>
13503          </tr>
13504
13505
13506          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13507           <!-- end of entry -->
13508
13509
13510          <tr class="entry" id="static_android.lens.poseTranslation">
13511            <td class="entry_name
13512             " rowspan="3">
13513              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13514            </td>
13515            <td class="entry_type">
13516                <span class="entry_type_name">float</span>
13517                <span class="entry_type_container">x</span>
13518
13519                <span class="entry_type_array">
13520                  3
13521                </span>
13522              <span class="entry_type_visibility"> [public]</span>
13523
13524
13525
13526
13527
13528
13529            </td> <!-- entry_type -->
13530
13531            <td class="entry_description">
13532              <p>Position of the camera optical center.<wbr/></p>
13533            </td>
13534
13535            <td class="entry_units">
13536              Meters
13537            </td>
13538
13539            <td class="entry_range">
13540            </td>
13541
13542            <td class="entry_hal_version">
13543              <p>3.<wbr/>2</p>
13544            </td>
13545
13546            <td class="entry_tags">
13547              <ul class="entry_tags">
13548                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13549              </ul>
13550            </td>
13551
13552          </tr>
13553          <tr class="entries_header">
13554            <th class="th_details" colspan="6">Details</th>
13555          </tr>
13556          <tr class="entry_cont">
13557            <td class="entry_details" colspan="6">
13558              <p>The position of the camera device's lens optical center,<wbr/>
13559as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13560<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
13561is relative to the optical center of the largest camera device facing in the same
13562direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13563coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13564coordinate system,<wbr/> but not the origin.<wbr/></p>
13565<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13566position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13567from the main sensor along the +X axis (to the right from the user's perspective) will
13568report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13569<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13570the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
13571camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13572<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
13573relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13574camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13575camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13576coordinates.<wbr/></p>
13577<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13578image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13579<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
13580the center of the primary gyroscope on the device.<wbr/></p>
13581            </td>
13582          </tr>
13583
13584
13585          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13586           <!-- end of entry -->
13587
13588
13589          <tr class="entry" id="static_android.lens.intrinsicCalibration">
13590            <td class="entry_name
13591             " rowspan="3">
13592              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13593            </td>
13594            <td class="entry_type">
13595                <span class="entry_type_name">float</span>
13596                <span class="entry_type_container">x</span>
13597
13598                <span class="entry_type_array">
13599                  5
13600                </span>
13601              <span class="entry_type_visibility"> [public]</span>
13602
13603
13604
13605
13606
13607
13608            </td> <!-- entry_type -->
13609
13610            <td class="entry_description">
13611              <p>The parameters for this camera device's intrinsic
13612calibration.<wbr/></p>
13613            </td>
13614
13615            <td class="entry_units">
13616
13617            Pixels in the
13618            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13619            coordinate system.<wbr/>
13620
13621            </td>
13622
13623            <td class="entry_range">
13624            </td>
13625
13626            <td class="entry_hal_version">
13627              <p>3.<wbr/>2</p>
13628            </td>
13629
13630            <td class="entry_tags">
13631              <ul class="entry_tags">
13632                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13633              </ul>
13634            </td>
13635
13636          </tr>
13637          <tr class="entries_header">
13638            <th class="th_details" colspan="6">Details</th>
13639          </tr>
13640          <tr class="entry_cont">
13641            <td class="entry_details" colspan="6">
13642              <p>The five calibration parameters that describe the
13643transform from camera-centric 3D coordinates to sensor
13644pixel coordinates:</p>
13645<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13646</code></pre>
13647<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13648focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13649axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13650being aligned with the lens plane.<wbr/></p>
13651<p>These are typically used within a transformation matrix K:</p>
13652<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13653       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13654       0    0,<wbr/>   1 ]
13655</code></pre>
13656<p>which can then be combined with the camera pose rotation
13657<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13658<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13659complete transform from world coordinates to pixel
13660coordinates:</p>
13661<pre><code>P = [ K 0   * [ R t
13662     0 1 ]     0 1 ]
13663</code></pre>
13664<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13665and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13666coordinate system,<wbr/> and with the mapping including the
13667homogeneous division by z:</p>
13668<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13669p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13670</code></pre>
13671<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13672point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13673(depth) in pixel coordinates.<wbr/></p>
13674<p>Note that the coordinate system for this transform is the
13675<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
13676where <code>(0,<wbr/>0)</code> is the top-left of the
13677preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13678intrinsic calibration transforms have been applied to a
13679world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13680transform needs to be applied,<wbr/> and the result adjusted to
13681be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13682system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13683activeArraySize rectangle),<wbr/> to determine the final pixel
13684coordinate of the world point for processed (non-RAW)
13685output buffers.<wbr/></p>
13686            </td>
13687          </tr>
13688
13689
13690          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13691           <!-- end of entry -->
13692
13693
13694          <tr class="entry" id="static_android.lens.radialDistortion">
13695            <td class="entry_name
13696                entry_name_deprecated
13697             " rowspan="3">
13698              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13699            </td>
13700            <td class="entry_type">
13701                <span class="entry_type_name">float</span>
13702                <span class="entry_type_container">x</span>
13703
13704                <span class="entry_type_array">
13705                  6
13706                </span>
13707              <span class="entry_type_visibility"> [public]</span>
13708
13709
13710
13711              <span class="entry_type_deprecated">[deprecated] </span>
13712
13713
13714
13715            </td> <!-- entry_type -->
13716
13717            <td class="entry_description">
13718              <p>The correction coefficients to correct for this camera device's
13719radial and tangential lens distortion.<wbr/></p>
13720            </td>
13721
13722            <td class="entry_units">
13723
13724            Unitless coefficients.<wbr/>
13725
13726            </td>
13727
13728            <td class="entry_range">
13729              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13730            </td>
13731
13732            <td class="entry_hal_version">
13733              <p>3.<wbr/>2</p>
13734            </td>
13735
13736            <td class="entry_tags">
13737              <ul class="entry_tags">
13738                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13739              </ul>
13740            </td>
13741
13742          </tr>
13743          <tr class="entries_header">
13744            <th class="th_details" colspan="6">Details</th>
13745          </tr>
13746          <tr class="entry_cont">
13747            <td class="entry_details" colspan="6">
13748              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13749kappa_<wbr/>3]</code> and two tangential distortion coefficients
13750<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13751lens's geometric distortion with the mapping equations:</p>
13752<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13753       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13754 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13755       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13756</code></pre>
13757<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13758input image that correspond to the pixel values in the
13759corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13760<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13761</code></pre>
13762<p>The pixel coordinates are defined in a normalized
13763coordinate system related to the
13764<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13765Both <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
13766lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13767of both x and y coordinates are normalized to be 1 at the
13768edge further from the optical center,<wbr/> so the range
13769for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13770<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13771optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13772is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13773<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13774            </td>
13775          </tr>
13776
13777
13778          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13779           <!-- end of entry -->
13780
13781
13782          <tr class="entry" id="static_android.lens.poseReference">
13783            <td class="entry_name
13784             " rowspan="3">
13785              android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13786            </td>
13787            <td class="entry_type">
13788                <span class="entry_type_name entry_type_name_enum">byte</span>
13789
13790              <span class="entry_type_visibility"> [public]</span>
13791
13792
13793
13794
13795
13796                <ul class="entry_type_enum">
13797                  <li>
13798                    <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13799                    <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
13800the largest camera device facing the same direction as this camera.<wbr/></p>
13801<p>This is the default value for API levels before Android P.<wbr/></p></span>
13802                  </li>
13803                  <li>
13804                    <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13805                    <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
13806primary gyroscope of this Android device.<wbr/></p></span>
13807                  </li>
13808                </ul>
13809
13810            </td> <!-- entry_type -->
13811
13812            <td class="entry_description">
13813              <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13814            </td>
13815
13816            <td class="entry_units">
13817            </td>
13818
13819            <td class="entry_range">
13820            </td>
13821
13822            <td class="entry_hal_version">
13823              <p>3.<wbr/>3</p>
13824            </td>
13825
13826            <td class="entry_tags">
13827            </td>
13828
13829          </tr>
13830          <tr class="entries_header">
13831            <th class="th_details" colspan="6">Details</th>
13832          </tr>
13833          <tr class="entry_cont">
13834            <td class="entry_details" colspan="6">
13835              <p>Different calibration methods and use cases can produce better or worse results
13836depending on the selected coordinate origin.<wbr/></p>
13837            </td>
13838          </tr>
13839
13840
13841          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13842           <!-- end of entry -->
13843
13844
13845          <tr class="entry" id="static_android.lens.distortion">
13846            <td class="entry_name
13847             " rowspan="3">
13848              android.<wbr/>lens.<wbr/>distortion
13849            </td>
13850            <td class="entry_type">
13851                <span class="entry_type_name">float</span>
13852                <span class="entry_type_container">x</span>
13853
13854                <span class="entry_type_array">
13855                  5
13856                </span>
13857              <span class="entry_type_visibility"> [public]</span>
13858
13859
13860
13861
13862
13863
13864            </td> <!-- entry_type -->
13865
13866            <td class="entry_description">
13867              <p>The correction coefficients to correct for this camera device's
13868radial and tangential lens distortion.<wbr/></p>
13869<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
13870inconsistently defined.<wbr/></p>
13871            </td>
13872
13873            <td class="entry_units">
13874
13875            Unitless coefficients.<wbr/>
13876
13877            </td>
13878
13879            <td class="entry_range">
13880            </td>
13881
13882            <td class="entry_hal_version">
13883              <p>3.<wbr/>3</p>
13884            </td>
13885
13886            <td class="entry_tags">
13887              <ul class="entry_tags">
13888                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13889              </ul>
13890            </td>
13891
13892          </tr>
13893          <tr class="entries_header">
13894            <th class="th_details" colspan="6">Details</th>
13895          </tr>
13896          <tr class="entry_cont">
13897            <td class="entry_details" colspan="6">
13898              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13899kappa_<wbr/>3]</code> and two tangential distortion coefficients
13900<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13901lens's geometric distortion with the mapping equations:</p>
13902<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13903       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13904 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13905       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13906</code></pre>
13907<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13908input image that correspond to the pixel values in the
13909corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13910<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13911</code></pre>
13912<p>The pixel coordinates are defined in a coordinate system
13913related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13914calibration fields; see that entry for details of the mapping stages.<wbr/>
13915Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
13916have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
13917the range of the coordinates depends on the focal length
13918terms of the intrinsic calibration.<wbr/></p>
13919<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13920optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13921<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13922            </td>
13923          </tr>
13924
13925
13926          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13927           <!-- end of entry -->
13928
13929
13930
13931      <!-- end of kind -->
13932      </tbody>
13933      <tr><td colspan="7" class="kind">dynamic</td></tr>
13934
13935      <thead class="entries_header">
13936        <tr>
13937          <th class="th_name">Property Name</th>
13938          <th class="th_type">Type</th>
13939          <th class="th_description">Description</th>
13940          <th class="th_units">Units</th>
13941          <th class="th_range">Range</th>
13942          <th class="th_hal_version">Initial HIDL HAL version</th>
13943          <th class="th_tags">Tags</th>
13944        </tr>
13945      </thead>
13946
13947      <tbody>
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958          <tr class="entry" id="dynamic_android.lens.aperture">
13959            <td class="entry_name
13960             " rowspan="3">
13961              android.<wbr/>lens.<wbr/>aperture
13962            </td>
13963            <td class="entry_type">
13964                <span class="entry_type_name">float</span>
13965
13966              <span class="entry_type_visibility"> [public]</span>
13967
13968
13969              <span class="entry_type_hwlevel">[full] </span>
13970
13971
13972
13973
13974            </td> <!-- entry_type -->
13975
13976            <td class="entry_description">
13977              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13978effective aperture diameter.<wbr/></p>
13979            </td>
13980
13981            <td class="entry_units">
13982              The f-number (f/<wbr/>N)
13983            </td>
13984
13985            <td class="entry_range">
13986              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13987            </td>
13988
13989            <td class="entry_hal_version">
13990              <p>3.<wbr/>2</p>
13991            </td>
13992
13993            <td class="entry_tags">
13994              <ul class="entry_tags">
13995                  <li><a href="#tag_V1">V1</a></li>
13996              </ul>
13997            </td>
13998
13999          </tr>
14000          <tr class="entries_header">
14001            <th class="th_details" colspan="6">Details</th>
14002          </tr>
14003          <tr class="entry_cont">
14004            <td class="entry_details" colspan="6">
14005              <p>Setting this value is only supported on the camera devices that have a variable
14006aperture lens.<wbr/></p>
14007<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14008this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14009<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
14010to achieve manual exposure control.<wbr/></p>
14011<p>The requested aperture value may take several frames to reach the
14012requested value; the camera device will report the current (intermediate)
14013aperture size in capture result metadata while the aperture is changing.<wbr/>
14014While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14015<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14016the ON modes,<wbr/> this will be overridden by the camera device
14017auto-exposure algorithm,<wbr/> the overridden values are then provided
14018back to the user in the corresponding result.<wbr/></p>
14019            </td>
14020          </tr>
14021
14022
14023          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14024           <!-- end of entry -->
14025
14026
14027          <tr class="entry" id="dynamic_android.lens.filterDensity">
14028            <td class="entry_name
14029             " rowspan="3">
14030              android.<wbr/>lens.<wbr/>filter<wbr/>Density
14031            </td>
14032            <td class="entry_type">
14033                <span class="entry_type_name">float</span>
14034
14035              <span class="entry_type_visibility"> [public]</span>
14036
14037
14038              <span class="entry_type_hwlevel">[full] </span>
14039
14040
14041
14042
14043            </td> <!-- entry_type -->
14044
14045            <td class="entry_description">
14046              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14047            </td>
14048
14049            <td class="entry_units">
14050              Exposure Value (EV)
14051            </td>
14052
14053            <td class="entry_range">
14054              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14055            </td>
14056
14057            <td class="entry_hal_version">
14058              <p>3.<wbr/>2</p>
14059            </td>
14060
14061            <td class="entry_tags">
14062              <ul class="entry_tags">
14063                  <li><a href="#tag_V1">V1</a></li>
14064              </ul>
14065            </td>
14066
14067          </tr>
14068          <tr class="entries_header">
14069            <th class="th_details" colspan="6">Details</th>
14070          </tr>
14071          <tr class="entry_cont">
14072            <td class="entry_details" colspan="6">
14073              <p>This control will not be supported on most camera devices.<wbr/></p>
14074<p>Lens filters are typically used to lower the amount of light the
14075sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14076step is the standard logarithmic representation,<wbr/> which are
14077non-negative,<wbr/> and inversely proportional to the amount of light
14078hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
14079in no reduction of the incoming light,<wbr/> and setting this to 2 would
14080mean that the filter is set to reduce incoming light by two stops
14081(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14082<p>It may take several frames before the lens filter density changes
14083to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14084<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14085            </td>
14086          </tr>
14087
14088
14089          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14090           <!-- end of entry -->
14091
14092
14093          <tr class="entry" id="dynamic_android.lens.focalLength">
14094            <td class="entry_name
14095             " rowspan="3">
14096              android.<wbr/>lens.<wbr/>focal<wbr/>Length
14097            </td>
14098            <td class="entry_type">
14099                <span class="entry_type_name">float</span>
14100
14101              <span class="entry_type_visibility"> [public]</span>
14102
14103
14104              <span class="entry_type_hwlevel">[legacy] </span>
14105
14106
14107
14108
14109            </td> <!-- entry_type -->
14110
14111            <td class="entry_description">
14112              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14113            </td>
14114
14115            <td class="entry_units">
14116              Millimeters
14117            </td>
14118
14119            <td class="entry_range">
14120              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14121            </td>
14122
14123            <td class="entry_hal_version">
14124              <p>3.<wbr/>2</p>
14125            </td>
14126
14127            <td class="entry_tags">
14128              <ul class="entry_tags">
14129                  <li><a href="#tag_BC">BC</a></li>
14130              </ul>
14131            </td>
14132
14133          </tr>
14134          <tr class="entries_header">
14135            <th class="th_details" colspan="6">Details</th>
14136          </tr>
14137          <tr class="entry_cont">
14138            <td class="entry_details" colspan="6">
14139              <p>This setting controls the physical focal length of the camera
14140device's lens.<wbr/> Changing the focal length changes the field of
14141view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14142<p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this
14143setting won't be applied instantaneously,<wbr/> and it may take several
14144frames before the lens can change to the requested focal length.<wbr/>
14145While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14146be set to MOVING.<wbr/></p>
14147<p>Optical zoom will not be supported on most devices.<wbr/></p>
14148            </td>
14149          </tr>
14150
14151
14152          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14153           <!-- end of entry -->
14154
14155
14156          <tr class="entry" id="dynamic_android.lens.focusDistance">
14157            <td class="entry_name
14158             " rowspan="3">
14159              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14160            </td>
14161            <td class="entry_type">
14162                <span class="entry_type_name">float</span>
14163
14164              <span class="entry_type_visibility"> [public]</span>
14165
14166
14167              <span class="entry_type_hwlevel">[full] </span>
14168
14169
14170
14171
14172            </td> <!-- entry_type -->
14173
14174            <td class="entry_description">
14175              <p>Desired distance to plane of sharpest focus,<wbr/>
14176measured from frontmost surface of the lens.<wbr/></p>
14177            </td>
14178
14179            <td class="entry_units">
14180              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14181            </td>
14182
14183            <td class="entry_range">
14184              <p>&gt;= 0</p>
14185            </td>
14186
14187            <td class="entry_hal_version">
14188              <p>3.<wbr/>2</p>
14189            </td>
14190
14191            <td class="entry_tags">
14192              <ul class="entry_tags">
14193                  <li><a href="#tag_BC">BC</a></li>
14194              </ul>
14195            </td>
14196
14197          </tr>
14198          <tr class="entries_header">
14199            <th class="th_details" colspan="6">Details</th>
14200          </tr>
14201          <tr class="entry_cont">
14202            <td class="entry_details" colspan="6">
14203              <p>Should be zero for fixed-focus cameras</p>
14204            </td>
14205          </tr>
14206
14207
14208          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14209           <!-- end of entry -->
14210
14211
14212          <tr class="entry" id="dynamic_android.lens.focusRange">
14213            <td class="entry_name
14214             " rowspan="3">
14215              android.<wbr/>lens.<wbr/>focus<wbr/>Range
14216            </td>
14217            <td class="entry_type">
14218                <span class="entry_type_name">float</span>
14219                <span class="entry_type_container">x</span>
14220
14221                <span class="entry_type_array">
14222                  2
14223                </span>
14224              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14225
14226
14227              <span class="entry_type_hwlevel">[limited] </span>
14228
14229
14230                <div class="entry_type_notes">Range of scene distances that are in focus</div>
14231
14232
14233            </td> <!-- entry_type -->
14234
14235            <td class="entry_description">
14236              <p>The range of scene distances that are in
14237sharp focus (depth of field).<wbr/></p>
14238            </td>
14239
14240            <td class="entry_units">
14241              A pair of focus distances in diopters: (near,<wbr/>
14242          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14243            </td>
14244
14245            <td class="entry_range">
14246              <p>&gt;=0</p>
14247            </td>
14248
14249            <td class="entry_hal_version">
14250              <p>3.<wbr/>2</p>
14251            </td>
14252
14253            <td class="entry_tags">
14254              <ul class="entry_tags">
14255                  <li><a href="#tag_BC">BC</a></li>
14256              </ul>
14257            </td>
14258
14259          </tr>
14260          <tr class="entries_header">
14261            <th class="th_details" colspan="6">Details</th>
14262          </tr>
14263          <tr class="entry_cont">
14264            <td class="entry_details" colspan="6">
14265              <p>If variable focus not supported,<wbr/> can still report
14266fixed depth of field range</p>
14267            </td>
14268          </tr>
14269
14270
14271          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14272           <!-- end of entry -->
14273
14274
14275          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14276            <td class="entry_name
14277             " rowspan="3">
14278              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14279            </td>
14280            <td class="entry_type">
14281                <span class="entry_type_name entry_type_name_enum">byte</span>
14282
14283              <span class="entry_type_visibility"> [public]</span>
14284
14285
14286              <span class="entry_type_hwlevel">[limited] </span>
14287
14288
14289
14290                <ul class="entry_type_enum">
14291                  <li>
14292                    <span class="entry_type_enum_name">OFF (v3.2)</span>
14293                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14294                  </li>
14295                  <li>
14296                    <span class="entry_type_enum_name">ON (v3.2)</span>
14297                    <span class="entry_type_enum_optional">[optional]</span>
14298                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14299                  </li>
14300                </ul>
14301
14302            </td> <!-- entry_type -->
14303
14304            <td class="entry_description">
14305              <p>Sets whether the camera device uses optical image stabilization (OIS)
14306when capturing images.<wbr/></p>
14307            </td>
14308
14309            <td class="entry_units">
14310            </td>
14311
14312            <td class="entry_range">
14313              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14314            </td>
14315
14316            <td class="entry_hal_version">
14317              <p>3.<wbr/>2</p>
14318            </td>
14319
14320            <td class="entry_tags">
14321              <ul class="entry_tags">
14322                  <li><a href="#tag_V1">V1</a></li>
14323              </ul>
14324            </td>
14325
14326          </tr>
14327          <tr class="entries_header">
14328            <th class="th_details" colspan="6">Details</th>
14329          </tr>
14330          <tr class="entry_cont">
14331            <td class="entry_details" colspan="6">
14332              <p>OIS is used to compensate for motion blur due to small
14333movements of the camera during capture.<wbr/> Unlike digital image
14334stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14335makes use of mechanical elements to stabilize the camera
14336sensor,<wbr/> and thus allows for longer exposure times before
14337camera shake becomes apparent.<wbr/></p>
14338<p>Switching between different optical stabilization modes may take several
14339frames to initialize,<wbr/> the camera device will report the current mode in
14340capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14341optical stabilization modes in the first several capture results may still
14342be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14343<p>If a camera device supports both OIS and digital image stabilization
14344(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14345interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14346<p>Not all devices will support OIS; see
14347<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14348available controls.<wbr/></p>
14349            </td>
14350          </tr>
14351
14352
14353          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14354           <!-- end of entry -->
14355
14356
14357          <tr class="entry" id="dynamic_android.lens.state">
14358            <td class="entry_name
14359             " rowspan="3">
14360              android.<wbr/>lens.<wbr/>state
14361            </td>
14362            <td class="entry_type">
14363                <span class="entry_type_name entry_type_name_enum">byte</span>
14364
14365              <span class="entry_type_visibility"> [public]</span>
14366
14367
14368              <span class="entry_type_hwlevel">[limited] </span>
14369
14370
14371
14372                <ul class="entry_type_enum">
14373                  <li>
14374                    <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14375                    <span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
14376<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span>
14377                  </li>
14378                  <li>
14379                    <span class="entry_type_enum_name">MOVING (v3.2)</span>
14380                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14381(<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
14382<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is
14383currently changing.<wbr/></p></span>
14384                  </li>
14385                </ul>
14386
14387            </td> <!-- entry_type -->
14388
14389            <td class="entry_description">
14390              <p>Current lens status.<wbr/></p>
14391            </td>
14392
14393            <td class="entry_units">
14394            </td>
14395
14396            <td class="entry_range">
14397            </td>
14398
14399            <td class="entry_hal_version">
14400              <p>3.<wbr/>2</p>
14401            </td>
14402
14403            <td class="entry_tags">
14404              <ul class="entry_tags">
14405                  <li><a href="#tag_V1">V1</a></li>
14406              </ul>
14407            </td>
14408
14409          </tr>
14410          <tr class="entries_header">
14411            <th class="th_details" colspan="6">Details</th>
14412          </tr>
14413          <tr class="entry_cont">
14414            <td class="entry_details" colspan="6">
14415              <p>For lens parameters <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
14416<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> when changes are requested,<wbr/>
14417they may take several frames to reach the requested values.<wbr/> This state indicates
14418the current status of the lens parameters.<wbr/></p>
14419<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14420either because the parameters are all fixed,<wbr/> or because the lens has had enough
14421time to reach the most recently-requested values.<wbr/>
14422If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14423<ul>
14424<li>Fixed focus (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> == 0</code>),<wbr/> which means
14425<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14426<li>Fixed focal length (<a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a> contains single value),<wbr/>
14427which means the optical zoom is not supported.<wbr/></li>
14428<li>No ND filter (<a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a> contains only 0).<wbr/></li>
14429<li>Fixed aperture (<a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a> contains single value).<wbr/></li>
14430</ul>
14431<p>Then this state will always be STATIONARY.<wbr/></p>
14432<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14433is changing.<wbr/></p>
14434            </td>
14435          </tr>
14436
14437
14438          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14439           <!-- end of entry -->
14440
14441
14442          <tr class="entry" id="dynamic_android.lens.poseRotation">
14443            <td class="entry_name
14444             " rowspan="3">
14445              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14446            </td>
14447            <td class="entry_type">
14448                <span class="entry_type_name">float</span>
14449                <span class="entry_type_container">x</span>
14450
14451                <span class="entry_type_array">
14452                  4
14453                </span>
14454              <span class="entry_type_visibility"> [public]</span>
14455
14456
14457
14458
14459
14460
14461            </td> <!-- entry_type -->
14462
14463            <td class="entry_description">
14464              <p>The orientation of the camera relative to the sensor
14465coordinate system.<wbr/></p>
14466            </td>
14467
14468            <td class="entry_units">
14469
14470            Quaternion coefficients
14471
14472            </td>
14473
14474            <td class="entry_range">
14475            </td>
14476
14477            <td class="entry_hal_version">
14478              <p>3.<wbr/>2</p>
14479            </td>
14480
14481            <td class="entry_tags">
14482              <ul class="entry_tags">
14483                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14484              </ul>
14485            </td>
14486
14487          </tr>
14488          <tr class="entries_header">
14489            <th class="th_details" colspan="6">Details</th>
14490          </tr>
14491          <tr class="entry_cont">
14492            <td class="entry_details" colspan="6">
14493              <p>The four coefficients that describe the quaternion
14494rotation from the Android sensor coordinate system to a
14495camera-aligned coordinate system where the X-axis is
14496aligned with the long side of the image sensor,<wbr/> the Y-axis
14497is aligned with the short side of the image sensor,<wbr/> and
14498the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14499<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14500to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14501amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14502<pre><code> theta = 2 * acos(w)
14503a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14504a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14505a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14506</code></pre>
14507<p>To create a 3x3 rotation matrix that applies the rotation
14508defined by this quaternion,<wbr/> the following matrix can be
14509used:</p>
14510<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14511           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14512           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14513</code></pre>
14514<p>This matrix can then be used to apply the rotation to a
14515 column vector point with</p>
14516<p><code>p' = Rp</code></p>
14517<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14518 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14519            </td>
14520          </tr>
14521
14522
14523          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14524           <!-- end of entry -->
14525
14526
14527          <tr class="entry" id="dynamic_android.lens.poseTranslation">
14528            <td class="entry_name
14529             " rowspan="3">
14530              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14531            </td>
14532            <td class="entry_type">
14533                <span class="entry_type_name">float</span>
14534                <span class="entry_type_container">x</span>
14535
14536                <span class="entry_type_array">
14537                  3
14538                </span>
14539              <span class="entry_type_visibility"> [public]</span>
14540
14541
14542
14543
14544
14545
14546            </td> <!-- entry_type -->
14547
14548            <td class="entry_description">
14549              <p>Position of the camera optical center.<wbr/></p>
14550            </td>
14551
14552            <td class="entry_units">
14553              Meters
14554            </td>
14555
14556            <td class="entry_range">
14557            </td>
14558
14559            <td class="entry_hal_version">
14560              <p>3.<wbr/>2</p>
14561            </td>
14562
14563            <td class="entry_tags">
14564              <ul class="entry_tags">
14565                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14566              </ul>
14567            </td>
14568
14569          </tr>
14570          <tr class="entries_header">
14571            <th class="th_details" colspan="6">Details</th>
14572          </tr>
14573          <tr class="entry_cont">
14574            <td class="entry_details" colspan="6">
14575              <p>The position of the camera device's lens optical center,<wbr/>
14576as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14577<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
14578is relative to the optical center of the largest camera device facing in the same
14579direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14580coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14581coordinate system,<wbr/> but not the origin.<wbr/></p>
14582<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14583position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14584from the main sensor along the +X axis (to the right from the user's perspective) will
14585report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14586<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14587the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
14588camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14589<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
14590relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14591camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14592camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14593coordinates.<wbr/></p>
14594<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14595image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14596<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
14597the center of the primary gyroscope on the device.<wbr/></p>
14598            </td>
14599          </tr>
14600
14601
14602          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14603           <!-- end of entry -->
14604
14605
14606          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14607            <td class="entry_name
14608             " rowspan="3">
14609              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14610            </td>
14611            <td class="entry_type">
14612                <span class="entry_type_name">float</span>
14613                <span class="entry_type_container">x</span>
14614
14615                <span class="entry_type_array">
14616                  5
14617                </span>
14618              <span class="entry_type_visibility"> [public]</span>
14619
14620
14621
14622
14623
14624
14625            </td> <!-- entry_type -->
14626
14627            <td class="entry_description">
14628              <p>The parameters for this camera device's intrinsic
14629calibration.<wbr/></p>
14630            </td>
14631
14632            <td class="entry_units">
14633
14634            Pixels in the
14635            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14636            coordinate system.<wbr/>
14637
14638            </td>
14639
14640            <td class="entry_range">
14641            </td>
14642
14643            <td class="entry_hal_version">
14644              <p>3.<wbr/>2</p>
14645            </td>
14646
14647            <td class="entry_tags">
14648              <ul class="entry_tags">
14649                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14650              </ul>
14651            </td>
14652
14653          </tr>
14654          <tr class="entries_header">
14655            <th class="th_details" colspan="6">Details</th>
14656          </tr>
14657          <tr class="entry_cont">
14658            <td class="entry_details" colspan="6">
14659              <p>The five calibration parameters that describe the
14660transform from camera-centric 3D coordinates to sensor
14661pixel coordinates:</p>
14662<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14663</code></pre>
14664<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14665focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14666axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14667being aligned with the lens plane.<wbr/></p>
14668<p>These are typically used within a transformation matrix K:</p>
14669<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14670       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14671       0    0,<wbr/>   1 ]
14672</code></pre>
14673<p>which can then be combined with the camera pose rotation
14674<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14675<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14676complete transform from world coordinates to pixel
14677coordinates:</p>
14678<pre><code>P = [ K 0   * [ R t
14679     0 1 ]     0 1 ]
14680</code></pre>
14681<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14682and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14683coordinate system,<wbr/> and with the mapping including the
14684homogeneous division by z:</p>
14685<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14686p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14687</code></pre>
14688<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14689point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14690(depth) in pixel coordinates.<wbr/></p>
14691<p>Note that the coordinate system for this transform is the
14692<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
14693where <code>(0,<wbr/>0)</code> is the top-left of the
14694preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14695intrinsic calibration transforms have been applied to a
14696world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14697transform needs to be applied,<wbr/> and the result adjusted to
14698be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14699system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14700activeArraySize rectangle),<wbr/> to determine the final pixel
14701coordinate of the world point for processed (non-RAW)
14702output buffers.<wbr/></p>
14703            </td>
14704          </tr>
14705
14706
14707          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14708           <!-- end of entry -->
14709
14710
14711          <tr class="entry" id="dynamic_android.lens.radialDistortion">
14712            <td class="entry_name
14713                entry_name_deprecated
14714             " rowspan="3">
14715              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14716            </td>
14717            <td class="entry_type">
14718                <span class="entry_type_name">float</span>
14719                <span class="entry_type_container">x</span>
14720
14721                <span class="entry_type_array">
14722                  6
14723                </span>
14724              <span class="entry_type_visibility"> [public]</span>
14725
14726
14727
14728              <span class="entry_type_deprecated">[deprecated] </span>
14729
14730
14731
14732            </td> <!-- entry_type -->
14733
14734            <td class="entry_description">
14735              <p>The correction coefficients to correct for this camera device's
14736radial and tangential lens distortion.<wbr/></p>
14737            </td>
14738
14739            <td class="entry_units">
14740
14741            Unitless coefficients.<wbr/>
14742
14743            </td>
14744
14745            <td class="entry_range">
14746              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14747            </td>
14748
14749            <td class="entry_hal_version">
14750              <p>3.<wbr/>2</p>
14751            </td>
14752
14753            <td class="entry_tags">
14754              <ul class="entry_tags">
14755                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14756              </ul>
14757            </td>
14758
14759          </tr>
14760          <tr class="entries_header">
14761            <th class="th_details" colspan="6">Details</th>
14762          </tr>
14763          <tr class="entry_cont">
14764            <td class="entry_details" colspan="6">
14765              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14766kappa_<wbr/>3]</code> and two tangential distortion coefficients
14767<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14768lens's geometric distortion with the mapping equations:</p>
14769<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14770       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14771 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14772       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14773</code></pre>
14774<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14775input image that correspond to the pixel values in the
14776corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14777<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14778</code></pre>
14779<p>The pixel coordinates are defined in a normalized
14780coordinate system related to the
14781<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14782Both <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
14783lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14784of both x and y coordinates are normalized to be 1 at the
14785edge further from the optical center,<wbr/> so the range
14786for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14787<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14788optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14789is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14790<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14791            </td>
14792          </tr>
14793
14794
14795          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14796           <!-- end of entry -->
14797
14798
14799          <tr class="entry" id="dynamic_android.lens.distortion">
14800            <td class="entry_name
14801             " rowspan="3">
14802              android.<wbr/>lens.<wbr/>distortion
14803            </td>
14804            <td class="entry_type">
14805                <span class="entry_type_name">float</span>
14806                <span class="entry_type_container">x</span>
14807
14808                <span class="entry_type_array">
14809                  5
14810                </span>
14811              <span class="entry_type_visibility"> [public]</span>
14812
14813
14814
14815
14816
14817
14818            </td> <!-- entry_type -->
14819
14820            <td class="entry_description">
14821              <p>The correction coefficients to correct for this camera device's
14822radial and tangential lens distortion.<wbr/></p>
14823<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14824inconsistently defined.<wbr/></p>
14825            </td>
14826
14827            <td class="entry_units">
14828
14829            Unitless coefficients.<wbr/>
14830
14831            </td>
14832
14833            <td class="entry_range">
14834            </td>
14835
14836            <td class="entry_hal_version">
14837              <p>3.<wbr/>3</p>
14838            </td>
14839
14840            <td class="entry_tags">
14841              <ul class="entry_tags">
14842                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14843              </ul>
14844            </td>
14845
14846          </tr>
14847          <tr class="entries_header">
14848            <th class="th_details" colspan="6">Details</th>
14849          </tr>
14850          <tr class="entry_cont">
14851            <td class="entry_details" colspan="6">
14852              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14853kappa_<wbr/>3]</code> and two tangential distortion coefficients
14854<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14855lens's geometric distortion with the mapping equations:</p>
14856<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14857       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14858 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14859       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14860</code></pre>
14861<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14862input image that correspond to the pixel values in the
14863corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14864<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14865</code></pre>
14866<p>The pixel coordinates are defined in a coordinate system
14867related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14868calibration fields; see that entry for details of the mapping stages.<wbr/>
14869Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14870have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14871the range of the coordinates depends on the focal length
14872terms of the intrinsic calibration.<wbr/></p>
14873<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14874optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14875<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14876            </td>
14877          </tr>
14878
14879
14880          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14881           <!-- end of entry -->
14882
14883
14884
14885      <!-- end of kind -->
14886      </tbody>
14887
14888  <!-- end of section -->
14889  <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14890
14891
14892      <tr><td colspan="7" class="kind">controls</td></tr>
14893
14894      <thead class="entries_header">
14895        <tr>
14896          <th class="th_name">Property Name</th>
14897          <th class="th_type">Type</th>
14898          <th class="th_description">Description</th>
14899          <th class="th_units">Units</th>
14900          <th class="th_range">Range</th>
14901          <th class="th_hal_version">Initial HIDL HAL version</th>
14902          <th class="th_tags">Tags</th>
14903        </tr>
14904      </thead>
14905
14906      <tbody>
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917          <tr class="entry" id="controls_android.noiseReduction.mode">
14918            <td class="entry_name
14919             " rowspan="5">
14920              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14921            </td>
14922            <td class="entry_type">
14923                <span class="entry_type_name entry_type_name_enum">byte</span>
14924
14925              <span class="entry_type_visibility"> [public]</span>
14926
14927
14928              <span class="entry_type_hwlevel">[full] </span>
14929
14930
14931
14932                <ul class="entry_type_enum">
14933                  <li>
14934                    <span class="entry_type_enum_name">OFF (v3.2)</span>
14935                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14936                  </li>
14937                  <li>
14938                    <span class="entry_type_enum_name">FAST (v3.2)</span>
14939                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14940output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14941relative to sensor.<wbr/></p></span>
14942                  </li>
14943                  <li>
14944                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14945                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14946rate relative to sensor output.<wbr/></p></span>
14947                  </li>
14948                  <li>
14949                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14950                    <span class="entry_type_enum_optional">[optional]</span>
14951                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14952sensor output.<wbr/> </p></span>
14953                  </li>
14954                  <li>
14955                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14956                    <span class="entry_type_enum_optional">[optional]</span>
14957                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14958based 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>)
14959or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14960supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14961noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14962and the quality is equal to or better than FAST (since it is only applied to
14963lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14964<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14965with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14966high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14967produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14968high-resolution buffers must not have noise reduction applied to maximize efficiency of
14969preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14970low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14971applied for reasonable preview quality.<wbr/></p>
14972<p>This mode is guaranteed to be supported by devices that support either the
14973YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14974(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14975be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14976                  </li>
14977                </ul>
14978
14979            </td> <!-- entry_type -->
14980
14981            <td class="entry_description">
14982              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14983            </td>
14984
14985            <td class="entry_units">
14986            </td>
14987
14988            <td class="entry_range">
14989              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14990            </td>
14991
14992            <td class="entry_hal_version">
14993              <p>3.<wbr/>2</p>
14994            </td>
14995
14996            <td class="entry_tags">
14997              <ul class="entry_tags">
14998                  <li><a href="#tag_V1">V1</a></li>
14999                  <li><a href="#tag_REPROC">REPROC</a></li>
15000              </ul>
15001            </td>
15002
15003          </tr>
15004          <tr class="entries_header">
15005            <th class="th_details" colspan="6">Details</th>
15006          </tr>
15007          <tr class="entry_cont">
15008            <td class="entry_details" colspan="6">
15009              <p>The noise reduction algorithm attempts to improve image quality by removing
15010excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15011<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15012YUV domain.<wbr/></p>
15013<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15014demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15015This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15016<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
15017<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15018will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15019will use the highest-quality noise filtering algorithms,<wbr/>
15020even if it slows down capture rate.<wbr/> FAST means the camera device will not
15021slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15022MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15023Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15024<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15025buffer of high-resolution images during preview and reprocess image(s) from that buffer
15026into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15027noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15028preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15029those will be reprocessed later if necessary.<wbr/></p>
15030<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15031will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15032may adjust the noise reduction parameters for best image quality based on the
15033<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15034            </td>
15035          </tr>
15036
15037          <tr class="entries_header">
15038            <th class="th_details" colspan="6">HAL Implementation Details</th>
15039          </tr>
15040          <tr class="entry_cont">
15041            <td class="entry_details" colspan="6">
15042              <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
15043adjust the internal noise reduction parameters appropriately to get the best quality
15044images.<wbr/></p>
15045            </td>
15046          </tr>
15047
15048          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15049           <!-- end of entry -->
15050
15051
15052          <tr class="entry" id="controls_android.noiseReduction.strength">
15053            <td class="entry_name
15054             " rowspan="1">
15055              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15056            </td>
15057            <td class="entry_type">
15058                <span class="entry_type_name">byte</span>
15059
15060              <span class="entry_type_visibility"> [system]</span>
15061
15062
15063
15064
15065
15066
15067            </td> <!-- entry_type -->
15068
15069            <td class="entry_description">
15070              <p>Control the amount of noise reduction
15071applied to the images</p>
15072            </td>
15073
15074            <td class="entry_units">
15075              1-10; 10 is max noise reduction
15076            </td>
15077
15078            <td class="entry_range">
15079              <p>1 - 10</p>
15080            </td>
15081
15082            <td class="entry_hal_version">
15083              <p>3.<wbr/>2</p>
15084            </td>
15085
15086            <td class="entry_tags">
15087              <ul class="entry_tags">
15088                  <li><a href="#tag_FUTURE">FUTURE</a></li>
15089              </ul>
15090            </td>
15091
15092          </tr>
15093
15094
15095          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15096           <!-- end of entry -->
15097
15098
15099
15100      <!-- end of kind -->
15101      </tbody>
15102      <tr><td colspan="7" class="kind">static</td></tr>
15103
15104      <thead class="entries_header">
15105        <tr>
15106          <th class="th_name">Property Name</th>
15107          <th class="th_type">Type</th>
15108          <th class="th_description">Description</th>
15109          <th class="th_units">Units</th>
15110          <th class="th_range">Range</th>
15111          <th class="th_hal_version">Initial HIDL HAL version</th>
15112          <th class="th_tags">Tags</th>
15113        </tr>
15114      </thead>
15115
15116      <tbody>
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15128            <td class="entry_name
15129             " rowspan="5">
15130              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15131            </td>
15132            <td class="entry_type">
15133                <span class="entry_type_name">byte</span>
15134                <span class="entry_type_container">x</span>
15135
15136                <span class="entry_type_array">
15137                  n
15138                </span>
15139              <span class="entry_type_visibility"> [public as enumList]</span>
15140
15141
15142              <span class="entry_type_hwlevel">[limited] </span>
15143
15144
15145                <div class="entry_type_notes">list of enums</div>
15146
15147
15148            </td> <!-- entry_type -->
15149
15150            <td class="entry_description">
15151              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15152by this camera device.<wbr/></p>
15153            </td>
15154
15155            <td class="entry_units">
15156            </td>
15157
15158            <td class="entry_range">
15159              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15160            </td>
15161
15162            <td class="entry_hal_version">
15163              <p>3.<wbr/>2</p>
15164            </td>
15165
15166            <td class="entry_tags">
15167              <ul class="entry_tags">
15168                  <li><a href="#tag_V1">V1</a></li>
15169                  <li><a href="#tag_REPROC">REPROC</a></li>
15170              </ul>
15171            </td>
15172
15173          </tr>
15174          <tr class="entries_header">
15175            <th class="th_details" colspan="6">Details</th>
15176          </tr>
15177          <tr class="entry_cont">
15178            <td class="entry_details" colspan="6">
15179              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15180<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15181ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15182<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15183            </td>
15184          </tr>
15185
15186          <tr class="entries_header">
15187            <th class="th_details" colspan="6">HAL Implementation Details</th>
15188          </tr>
15189          <tr class="entry_cont">
15190            <td class="entry_details" colspan="6">
15191              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15192on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15193That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15194capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15195            </td>
15196          </tr>
15197
15198          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15199           <!-- end of entry -->
15200
15201
15202
15203      <!-- end of kind -->
15204      </tbody>
15205      <tr><td colspan="7" class="kind">dynamic</td></tr>
15206
15207      <thead class="entries_header">
15208        <tr>
15209          <th class="th_name">Property Name</th>
15210          <th class="th_type">Type</th>
15211          <th class="th_description">Description</th>
15212          <th class="th_units">Units</th>
15213          <th class="th_range">Range</th>
15214          <th class="th_hal_version">Initial HIDL HAL version</th>
15215          <th class="th_tags">Tags</th>
15216        </tr>
15217      </thead>
15218
15219      <tbody>
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230          <tr class="entry" id="dynamic_android.noiseReduction.mode">
15231            <td class="entry_name
15232             " rowspan="5">
15233              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15234            </td>
15235            <td class="entry_type">
15236                <span class="entry_type_name entry_type_name_enum">byte</span>
15237
15238              <span class="entry_type_visibility"> [public]</span>
15239
15240
15241              <span class="entry_type_hwlevel">[full] </span>
15242
15243
15244
15245                <ul class="entry_type_enum">
15246                  <li>
15247                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15248                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15249                  </li>
15250                  <li>
15251                    <span class="entry_type_enum_name">FAST (v3.2)</span>
15252                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15253output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15254relative to sensor.<wbr/></p></span>
15255                  </li>
15256                  <li>
15257                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15258                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15259rate relative to sensor output.<wbr/></p></span>
15260                  </li>
15261                  <li>
15262                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15263                    <span class="entry_type_enum_optional">[optional]</span>
15264                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15265sensor output.<wbr/> </p></span>
15266                  </li>
15267                  <li>
15268                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15269                    <span class="entry_type_enum_optional">[optional]</span>
15270                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15271based 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>)
15272or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15273supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15274noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15275and the quality is equal to or better than FAST (since it is only applied to
15276lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15277<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15278with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15279high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15280produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15281high-resolution buffers must not have noise reduction applied to maximize efficiency of
15282preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15283low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15284applied for reasonable preview quality.<wbr/></p>
15285<p>This mode is guaranteed to be supported by devices that support either the
15286YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15287(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15288be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15289                  </li>
15290                </ul>
15291
15292            </td> <!-- entry_type -->
15293
15294            <td class="entry_description">
15295              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15296            </td>
15297
15298            <td class="entry_units">
15299            </td>
15300
15301            <td class="entry_range">
15302              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15303            </td>
15304
15305            <td class="entry_hal_version">
15306              <p>3.<wbr/>2</p>
15307            </td>
15308
15309            <td class="entry_tags">
15310              <ul class="entry_tags">
15311                  <li><a href="#tag_V1">V1</a></li>
15312                  <li><a href="#tag_REPROC">REPROC</a></li>
15313              </ul>
15314            </td>
15315
15316          </tr>
15317          <tr class="entries_header">
15318            <th class="th_details" colspan="6">Details</th>
15319          </tr>
15320          <tr class="entry_cont">
15321            <td class="entry_details" colspan="6">
15322              <p>The noise reduction algorithm attempts to improve image quality by removing
15323excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15324<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15325YUV domain.<wbr/></p>
15326<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15327demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15328This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15329<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
15330<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15331will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15332will use the highest-quality noise filtering algorithms,<wbr/>
15333even if it slows down capture rate.<wbr/> FAST means the camera device will not
15334slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15335MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15336Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15337<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15338buffer of high-resolution images during preview and reprocess image(s) from that buffer
15339into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15340noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15341preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15342those will be reprocessed later if necessary.<wbr/></p>
15343<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15344will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15345may adjust the noise reduction parameters for best image quality based on the
15346<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15347            </td>
15348          </tr>
15349
15350          <tr class="entries_header">
15351            <th class="th_details" colspan="6">HAL Implementation Details</th>
15352          </tr>
15353          <tr class="entry_cont">
15354            <td class="entry_details" colspan="6">
15355              <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
15356adjust the internal noise reduction parameters appropriately to get the best quality
15357images.<wbr/></p>
15358            </td>
15359          </tr>
15360
15361          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15362           <!-- end of entry -->
15363
15364
15365
15366      <!-- end of kind -->
15367      </tbody>
15368
15369  <!-- end of section -->
15370  <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15371
15372
15373      <tr><td colspan="7" class="kind">static</td></tr>
15374
15375      <thead class="entries_header">
15376        <tr>
15377          <th class="th_name">Property Name</th>
15378          <th class="th_type">Type</th>
15379          <th class="th_description">Description</th>
15380          <th class="th_units">Units</th>
15381          <th class="th_range">Range</th>
15382          <th class="th_hal_version">Initial HIDL HAL version</th>
15383          <th class="th_tags">Tags</th>
15384        </tr>
15385      </thead>
15386
15387      <tbody>
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398          <tr class="entry" id="static_android.quirks.meteringCropRegion">
15399            <td class="entry_name
15400                entry_name_deprecated
15401             " rowspan="3">
15402              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15403            </td>
15404            <td class="entry_type">
15405                <span class="entry_type_name">byte</span>
15406
15407              <span class="entry_type_visibility"> [system]</span>
15408
15409
15410
15411              <span class="entry_type_deprecated">[deprecated] </span>
15412
15413
15414
15415            </td> <!-- entry_type -->
15416
15417            <td class="entry_description">
15418              <p>If set to 1,<wbr/> the camera service does not
15419scale 'normalized' coordinates with respect to the crop
15420region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15421and output (face rectangles).<wbr/></p>
15422            </td>
15423
15424            <td class="entry_units">
15425            </td>
15426
15427            <td class="entry_range">
15428              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15429            </td>
15430
15431            <td class="entry_hal_version">
15432              <p>3.<wbr/>2</p>
15433            </td>
15434
15435            <td class="entry_tags">
15436            </td>
15437
15438          </tr>
15439          <tr class="entries_header">
15440            <th class="th_details" colspan="6">Details</th>
15441          </tr>
15442          <tr class="entry_cont">
15443            <td class="entry_details" colspan="6">
15444              <p>Normalized coordinates refer to those in the
15445(-1000,<wbr/>1000) range mentioned in the
15446android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15447<p>HAL implementations should instead always use and emit
15448sensor array-relative coordinates for all region data.<wbr/> Does
15449not need to be listed in static metadata.<wbr/> Support will be
15450removed in future versions of camera service.<wbr/></p>
15451            </td>
15452          </tr>
15453
15454
15455          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15456           <!-- end of entry -->
15457
15458
15459          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15460            <td class="entry_name
15461                entry_name_deprecated
15462             " rowspan="3">
15463              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15464            </td>
15465            <td class="entry_type">
15466                <span class="entry_type_name">byte</span>
15467
15468              <span class="entry_type_visibility"> [system]</span>
15469
15470
15471
15472              <span class="entry_type_deprecated">[deprecated] </span>
15473
15474
15475
15476            </td> <!-- entry_type -->
15477
15478            <td class="entry_description">
15479              <p>If set to 1,<wbr/> then the camera service always
15480switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15481trigger.<wbr/></p>
15482            </td>
15483
15484            <td class="entry_units">
15485            </td>
15486
15487            <td class="entry_range">
15488              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15489            </td>
15490
15491            <td class="entry_hal_version">
15492              <p>3.<wbr/>2</p>
15493            </td>
15494
15495            <td class="entry_tags">
15496            </td>
15497
15498          </tr>
15499          <tr class="entries_header">
15500            <th class="th_details" colspan="6">Details</th>
15501          </tr>
15502          <tr class="entry_cont">
15503            <td class="entry_details" colspan="6">
15504              <p>HAL implementations should implement AF trigger
15505modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15506CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15507not need to be listed in static metadata.<wbr/> Support will be
15508removed in future versions of camera service</p>
15509            </td>
15510          </tr>
15511
15512
15513          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15514           <!-- end of entry -->
15515
15516
15517          <tr class="entry" id="static_android.quirks.useZslFormat">
15518            <td class="entry_name
15519                entry_name_deprecated
15520             " rowspan="3">
15521              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15522            </td>
15523            <td class="entry_type">
15524                <span class="entry_type_name">byte</span>
15525
15526              <span class="entry_type_visibility"> [system]</span>
15527
15528
15529
15530              <span class="entry_type_deprecated">[deprecated] </span>
15531
15532
15533
15534            </td> <!-- entry_type -->
15535
15536            <td class="entry_description">
15537              <p>If set to 1,<wbr/> the camera service uses
15538CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15539HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15540shutter lag stream</p>
15541            </td>
15542
15543            <td class="entry_units">
15544            </td>
15545
15546            <td class="entry_range">
15547              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15548            </td>
15549
15550            <td class="entry_hal_version">
15551              <p>3.<wbr/>2</p>
15552            </td>
15553
15554            <td class="entry_tags">
15555            </td>
15556
15557          </tr>
15558          <tr class="entries_header">
15559            <th class="th_details" colspan="6">Details</th>
15560          </tr>
15561          <tr class="entry_cont">
15562            <td class="entry_details" colspan="6">
15563              <p>HAL implementations should use gralloc usage flags
15564to determine that a stream will be used for
15565zero-shutter-lag,<wbr/> instead of relying on an explicit
15566format setting.<wbr/> Does not need to be listed in static
15567metadata.<wbr/> Support will be removed in future versions of
15568camera service.<wbr/></p>
15569            </td>
15570          </tr>
15571
15572
15573          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15574           <!-- end of entry -->
15575
15576
15577          <tr class="entry" id="static_android.quirks.usePartialResult">
15578            <td class="entry_name
15579                entry_name_deprecated
15580             " rowspan="5">
15581              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15582            </td>
15583            <td class="entry_type">
15584                <span class="entry_type_name">byte</span>
15585
15586              <span class="entry_type_visibility"> [hidden]</span>
15587
15588
15589
15590              <span class="entry_type_deprecated">[deprecated] </span>
15591
15592
15593
15594            </td> <!-- entry_type -->
15595
15596            <td class="entry_description">
15597              <p>If set to 1,<wbr/> the HAL will always split result
15598metadata for a single capture into multiple buffers,<wbr/>
15599returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15600            </td>
15601
15602            <td class="entry_units">
15603            </td>
15604
15605            <td class="entry_range">
15606              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15607            </td>
15608
15609            <td class="entry_hal_version">
15610              <p>3.<wbr/>2</p>
15611            </td>
15612
15613            <td class="entry_tags">
15614            </td>
15615
15616          </tr>
15617          <tr class="entries_header">
15618            <th class="th_details" colspan="6">Details</th>
15619          </tr>
15620          <tr class="entry_cont">
15621            <td class="entry_details" colspan="6">
15622              <p>Does not need to be listed in static
15623metadata.<wbr/> Support for partial results will be reworked in
15624future versions of camera service.<wbr/> This quirk will stop
15625working at that point; DO NOT USE without careful
15626consideration of future support.<wbr/></p>
15627            </td>
15628          </tr>
15629
15630          <tr class="entries_header">
15631            <th class="th_details" colspan="6">HAL Implementation Details</th>
15632          </tr>
15633          <tr class="entry_cont">
15634            <td class="entry_details" colspan="6">
15635              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15636for information on how to implement partial results.<wbr/></p>
15637            </td>
15638          </tr>
15639
15640          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15641           <!-- end of entry -->
15642
15643
15644
15645      <!-- end of kind -->
15646      </tbody>
15647      <tr><td colspan="7" class="kind">dynamic</td></tr>
15648
15649      <thead class="entries_header">
15650        <tr>
15651          <th class="th_name">Property Name</th>
15652          <th class="th_type">Type</th>
15653          <th class="th_description">Description</th>
15654          <th class="th_units">Units</th>
15655          <th class="th_range">Range</th>
15656          <th class="th_hal_version">Initial HIDL HAL version</th>
15657          <th class="th_tags">Tags</th>
15658        </tr>
15659      </thead>
15660
15661      <tbody>
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672          <tr class="entry" id="dynamic_android.quirks.partialResult">
15673            <td class="entry_name
15674                entry_name_deprecated
15675             " rowspan="5">
15676              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15677            </td>
15678            <td class="entry_type">
15679                <span class="entry_type_name entry_type_name_enum">byte</span>
15680
15681              <span class="entry_type_visibility"> [hidden as boolean]</span>
15682
15683
15684
15685              <span class="entry_type_deprecated">[deprecated] </span>
15686
15687
15688                <ul class="entry_type_enum">
15689                  <li>
15690                    <span class="entry_type_enum_name">FINAL (v3.2)</span>
15691                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15692for this capture.<wbr/></p></span>
15693                  </li>
15694                  <li>
15695                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15696                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15697capture.<wbr/> More result buffers for this capture will be sent
15698by the camera device,<wbr/> the last of which will be marked
15699FINAL.<wbr/></p></span>
15700                  </li>
15701                </ul>
15702
15703            </td> <!-- entry_type -->
15704
15705            <td class="entry_description">
15706              <p>Whether a result given to the framework is the
15707final one for the capture,<wbr/> or only a partial that contains a
15708subset of the full set of dynamic metadata
15709values.<wbr/></p>
15710            </td>
15711
15712            <td class="entry_units">
15713            </td>
15714
15715            <td class="entry_range">
15716              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15717              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15718            </td>
15719
15720            <td class="entry_hal_version">
15721              <p>3.<wbr/>2</p>
15722            </td>
15723
15724            <td class="entry_tags">
15725            </td>
15726
15727          </tr>
15728          <tr class="entries_header">
15729            <th class="th_details" colspan="6">Details</th>
15730          </tr>
15731          <tr class="entry_cont">
15732            <td class="entry_details" colspan="6">
15733              <p>The entries in the result metadata buffers for a
15734single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15735FINAL buffers must retain FIFO ordering relative to the
15736requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15737always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15738before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15739in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15740capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15741only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15742            </td>
15743          </tr>
15744
15745          <tr class="entries_header">
15746            <th class="th_details" colspan="6">HAL Implementation Details</th>
15747          </tr>
15748          <tr class="entry_cont">
15749            <td class="entry_details" colspan="6">
15750              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15751for information on how to implement partial results.<wbr/></p>
15752            </td>
15753          </tr>
15754
15755          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15756           <!-- end of entry -->
15757
15758
15759
15760      <!-- end of kind -->
15761      </tbody>
15762
15763  <!-- end of section -->
15764  <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15765
15766
15767      <tr><td colspan="7" class="kind">controls</td></tr>
15768
15769      <thead class="entries_header">
15770        <tr>
15771          <th class="th_name">Property Name</th>
15772          <th class="th_type">Type</th>
15773          <th class="th_description">Description</th>
15774          <th class="th_units">Units</th>
15775          <th class="th_range">Range</th>
15776          <th class="th_hal_version">Initial HIDL HAL version</th>
15777          <th class="th_tags">Tags</th>
15778        </tr>
15779      </thead>
15780
15781      <tbody>
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792          <tr class="entry" id="controls_android.request.frameCount">
15793            <td class="entry_name
15794                entry_name_deprecated
15795             " rowspan="1">
15796              android.<wbr/>request.<wbr/>frame<wbr/>Count
15797            </td>
15798            <td class="entry_type">
15799                <span class="entry_type_name">int32</span>
15800
15801              <span class="entry_type_visibility"> [system]</span>
15802
15803
15804
15805              <span class="entry_type_deprecated">[deprecated] </span>
15806
15807
15808
15809            </td> <!-- entry_type -->
15810
15811            <td class="entry_description">
15812              <p>A frame counter set by the framework.<wbr/> Must
15813be maintained unchanged in output frame.<wbr/> This value monotonically
15814increases with every new result (that is,<wbr/> each new result has a unique
15815frameCount value).<wbr/></p>
15816            </td>
15817
15818            <td class="entry_units">
15819              incrementing integer
15820            </td>
15821
15822            <td class="entry_range">
15823              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15824              <p>Any int.<wbr/></p>
15825            </td>
15826
15827            <td class="entry_hal_version">
15828              <p>3.<wbr/>2</p>
15829            </td>
15830
15831            <td class="entry_tags">
15832            </td>
15833
15834          </tr>
15835
15836
15837          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15838           <!-- end of entry -->
15839
15840
15841          <tr class="entry" id="controls_android.request.id">
15842            <td class="entry_name
15843             " rowspan="1">
15844              android.<wbr/>request.<wbr/>id
15845            </td>
15846            <td class="entry_type">
15847                <span class="entry_type_name">int32</span>
15848
15849              <span class="entry_type_visibility"> [hidden]</span>
15850
15851
15852
15853
15854
15855
15856            </td> <!-- entry_type -->
15857
15858            <td class="entry_description">
15859              <p>An application-specified ID for the current
15860request.<wbr/> Must be maintained unchanged in output
15861frame</p>
15862            </td>
15863
15864            <td class="entry_units">
15865              arbitrary integer assigned by application
15866            </td>
15867
15868            <td class="entry_range">
15869              <p>Any int</p>
15870            </td>
15871
15872            <td class="entry_hal_version">
15873              <p>3.<wbr/>2</p>
15874            </td>
15875
15876            <td class="entry_tags">
15877              <ul class="entry_tags">
15878                  <li><a href="#tag_V1">V1</a></li>
15879              </ul>
15880            </td>
15881
15882          </tr>
15883
15884
15885          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15886           <!-- end of entry -->
15887
15888
15889          <tr class="entry" id="controls_android.request.inputStreams">
15890            <td class="entry_name
15891                entry_name_deprecated
15892             " rowspan="3">
15893              android.<wbr/>request.<wbr/>input<wbr/>Streams
15894            </td>
15895            <td class="entry_type">
15896                <span class="entry_type_name">int32</span>
15897                <span class="entry_type_container">x</span>
15898
15899                <span class="entry_type_array">
15900                  n
15901                </span>
15902              <span class="entry_type_visibility"> [system]</span>
15903
15904
15905
15906              <span class="entry_type_deprecated">[deprecated] </span>
15907
15908
15909
15910            </td> <!-- entry_type -->
15911
15912            <td class="entry_description">
15913              <p>List which camera reprocess stream is used
15914for the source of reprocessing data.<wbr/></p>
15915            </td>
15916
15917            <td class="entry_units">
15918              List of camera reprocess stream IDs
15919            </td>
15920
15921            <td class="entry_range">
15922              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15923              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15924            </td>
15925
15926            <td class="entry_hal_version">
15927              <p>3.<wbr/>2</p>
15928            </td>
15929
15930            <td class="entry_tags">
15931              <ul class="entry_tags">
15932                  <li><a href="#tag_HAL2">HAL2</a></li>
15933              </ul>
15934            </td>
15935
15936          </tr>
15937          <tr class="entries_header">
15938            <th class="th_details" colspan="6">Details</th>
15939          </tr>
15940          <tr class="entry_cont">
15941            <td class="entry_details" colspan="6">
15942              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15943REPROCESS.<wbr/> Ignored otherwise</p>
15944            </td>
15945          </tr>
15946
15947
15948          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15949           <!-- end of entry -->
15950
15951
15952          <tr class="entry" id="controls_android.request.metadataMode">
15953            <td class="entry_name
15954             " rowspan="1">
15955              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15956            </td>
15957            <td class="entry_type">
15958                <span class="entry_type_name entry_type_name_enum">byte</span>
15959
15960              <span class="entry_type_visibility"> [system]</span>
15961
15962
15963
15964
15965
15966                <ul class="entry_type_enum">
15967                  <li>
15968                    <span class="entry_type_enum_name">NONE (v3.2)</span>
15969                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15970for application-bound buffer data.<wbr/> If no
15971application-bound streams exist,<wbr/> no frame should be
15972placed in the output frame queue.<wbr/> If such streams
15973exist,<wbr/> a frame should be placed on the output queue
15974with null metadata but with the necessary output buffer
15975information.<wbr/> Timestamp information should still be
15976included with any output stream buffers</p></span>
15977                  </li>
15978                  <li>
15979                    <span class="entry_type_enum_name">FULL (v3.2)</span>
15980                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15981only be produced if they are separately
15982enabled</p></span>
15983                  </li>
15984                </ul>
15985
15986            </td> <!-- entry_type -->
15987
15988            <td class="entry_description">
15989              <p>How much metadata to produce on
15990output</p>
15991            </td>
15992
15993            <td class="entry_units">
15994            </td>
15995
15996            <td class="entry_range">
15997            </td>
15998
15999            <td class="entry_hal_version">
16000              <p>3.<wbr/>2</p>
16001            </td>
16002
16003            <td class="entry_tags">
16004              <ul class="entry_tags">
16005                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16006              </ul>
16007            </td>
16008
16009          </tr>
16010
16011
16012          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16013           <!-- end of entry -->
16014
16015
16016          <tr class="entry" id="controls_android.request.outputStreams">
16017            <td class="entry_name
16018                entry_name_deprecated
16019             " rowspan="3">
16020              android.<wbr/>request.<wbr/>output<wbr/>Streams
16021            </td>
16022            <td class="entry_type">
16023                <span class="entry_type_name">int32</span>
16024                <span class="entry_type_container">x</span>
16025
16026                <span class="entry_type_array">
16027                  n
16028                </span>
16029              <span class="entry_type_visibility"> [system]</span>
16030
16031
16032
16033              <span class="entry_type_deprecated">[deprecated] </span>
16034
16035
16036
16037            </td> <!-- entry_type -->
16038
16039            <td class="entry_description">
16040              <p>Lists which camera output streams image data
16041from this capture must be sent to</p>
16042            </td>
16043
16044            <td class="entry_units">
16045              List of camera stream IDs
16046            </td>
16047
16048            <td class="entry_range">
16049              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16050              <p>List must only include streams that have been
16051created</p>
16052            </td>
16053
16054            <td class="entry_hal_version">
16055              <p>3.<wbr/>2</p>
16056            </td>
16057
16058            <td class="entry_tags">
16059              <ul class="entry_tags">
16060                  <li><a href="#tag_HAL2">HAL2</a></li>
16061              </ul>
16062            </td>
16063
16064          </tr>
16065          <tr class="entries_header">
16066            <th class="th_details" colspan="6">Details</th>
16067          </tr>
16068          <tr class="entry_cont">
16069            <td class="entry_details" colspan="6">
16070              <p>If no output streams are listed,<wbr/> then the image
16071data should simply be discarded.<wbr/> The image data must
16072still be captured for metadata and statistics production,<wbr/>
16073and the lens and flash must operate as requested.<wbr/></p>
16074            </td>
16075          </tr>
16076
16077
16078          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16079           <!-- end of entry -->
16080
16081
16082          <tr class="entry" id="controls_android.request.type">
16083            <td class="entry_name
16084                entry_name_deprecated
16085             " rowspan="1">
16086              android.<wbr/>request.<wbr/>type
16087            </td>
16088            <td class="entry_type">
16089                <span class="entry_type_name entry_type_name_enum">byte</span>
16090
16091              <span class="entry_type_visibility"> [system]</span>
16092
16093
16094
16095              <span class="entry_type_deprecated">[deprecated] </span>
16096
16097
16098                <ul class="entry_type_enum">
16099                  <li>
16100                    <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16101                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16102and process it according to the
16103settings</p></span>
16104                  </li>
16105                  <li>
16106                    <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16107                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
16108<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16109source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16110needed for reprocessing with [RP]</p></span>
16111                  </li>
16112                </ul>
16113
16114            </td> <!-- entry_type -->
16115
16116            <td class="entry_description">
16117              <p>The type of the request; either CAPTURE or
16118REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16119            </td>
16120
16121            <td class="entry_units">
16122            </td>
16123
16124            <td class="entry_range">
16125              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16126            </td>
16127
16128            <td class="entry_hal_version">
16129              <p>3.<wbr/>2</p>
16130            </td>
16131
16132            <td class="entry_tags">
16133              <ul class="entry_tags">
16134                  <li><a href="#tag_HAL2">HAL2</a></li>
16135              </ul>
16136            </td>
16137
16138          </tr>
16139
16140
16141          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16142           <!-- end of entry -->
16143
16144
16145
16146      <!-- end of kind -->
16147      </tbody>
16148      <tr><td colspan="7" class="kind">static</td></tr>
16149
16150      <thead class="entries_header">
16151        <tr>
16152          <th class="th_name">Property Name</th>
16153          <th class="th_type">Type</th>
16154          <th class="th_description">Description</th>
16155          <th class="th_units">Units</th>
16156          <th class="th_range">Range</th>
16157          <th class="th_hal_version">Initial HIDL HAL version</th>
16158          <th class="th_tags">Tags</th>
16159        </tr>
16160      </thead>
16161
16162      <tbody>
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173          <tr class="entry" id="static_android.request.maxNumOutputStreams">
16174            <td class="entry_name
16175             " rowspan="3">
16176              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16177            </td>
16178            <td class="entry_type">
16179                <span class="entry_type_name">int32</span>
16180                <span class="entry_type_container">x</span>
16181
16182                <span class="entry_type_array">
16183                  3
16184                </span>
16185              <span class="entry_type_visibility"> [ndk_public]</span>
16186
16187
16188              <span class="entry_type_hwlevel">[legacy] </span>
16189
16190
16191
16192
16193            </td> <!-- entry_type -->
16194
16195            <td class="entry_description">
16196              <p>The maximum numbers of different types of output streams
16197that can be configured and used simultaneously by a camera device.<wbr/></p>
16198            </td>
16199
16200            <td class="entry_units">
16201            </td>
16202
16203            <td class="entry_range">
16204              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
16205<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
16206<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
16207for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16208&gt;= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
16209            </td>
16210
16211            <td class="entry_hal_version">
16212              <p>3.<wbr/>2</p>
16213            </td>
16214
16215            <td class="entry_tags">
16216              <ul class="entry_tags">
16217                  <li><a href="#tag_BC">BC</a></li>
16218              </ul>
16219            </td>
16220
16221          </tr>
16222          <tr class="entries_header">
16223            <th class="th_details" colspan="6">Details</th>
16224          </tr>
16225          <tr class="entry_cont">
16226            <td class="entry_details" colspan="6">
16227              <p>This is a 3 element tuple that contains the max number of output simultaneous
16228streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16229formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16230stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16231number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p>
16232<p>This lists the upper bound of the number of output streams supported by
16233the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16234CPU resources that will consume more power.<wbr/> The image format for an output stream can
16235be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16236The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16237into the 3 stream types as below:</p>
16238<ul>
16239<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16240  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16241<li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or
16242  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16243<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16244  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16245  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
16246</ul>
16247            </td>
16248          </tr>
16249
16250
16251          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16252           <!-- end of entry -->
16253
16254
16255          <tr class="entry" id="static_android.request.maxNumOutputRaw">
16256            <td class="entry_name
16257             " rowspan="3">
16258              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16259            </td>
16260            <td class="entry_type">
16261                <span class="entry_type_name">int32</span>
16262
16263              <span class="entry_type_visibility"> [java_public]</span>
16264
16265              <span class="entry_type_synthetic">[synthetic] </span>
16266
16267              <span class="entry_type_hwlevel">[legacy] </span>
16268
16269
16270
16271
16272            </td> <!-- entry_type -->
16273
16274            <td class="entry_description">
16275              <p>The maximum numbers of different types of output streams
16276that can be configured and used simultaneously by a camera device
16277for any <code>RAW</code> formats.<wbr/></p>
16278            </td>
16279
16280            <td class="entry_units">
16281            </td>
16282
16283            <td class="entry_range">
16284              <p>&gt;= 0</p>
16285            </td>
16286
16287            <td class="entry_hal_version">
16288              <p>3.<wbr/>2</p>
16289            </td>
16290
16291            <td class="entry_tags">
16292            </td>
16293
16294          </tr>
16295          <tr class="entries_header">
16296            <th class="th_details" colspan="6">Details</th>
16297          </tr>
16298          <tr class="entry_cont">
16299            <td class="entry_details" colspan="6">
16300              <p>This value contains the max number of output simultaneous
16301streams from the raw sensor.<wbr/></p>
16302<p>This lists the upper bound of the number of output streams supported by
16303the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16304CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16305be any <code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
16306<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16307<ul>
16308<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16309<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16310<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16311</ul>
16312<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16313never support raw streams.<wbr/></p>
16314            </td>
16315          </tr>
16316
16317
16318          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16319           <!-- end of entry -->
16320
16321
16322          <tr class="entry" id="static_android.request.maxNumOutputProc">
16323            <td class="entry_name
16324             " rowspan="3">
16325              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16326            </td>
16327            <td class="entry_type">
16328                <span class="entry_type_name">int32</span>
16329
16330              <span class="entry_type_visibility"> [java_public]</span>
16331
16332              <span class="entry_type_synthetic">[synthetic] </span>
16333
16334              <span class="entry_type_hwlevel">[legacy] </span>
16335
16336
16337
16338
16339            </td> <!-- entry_type -->
16340
16341            <td class="entry_description">
16342              <p>The maximum numbers of different types of output streams
16343that can be configured and used simultaneously by a camera device
16344for any processed (but not-stalling) formats.<wbr/></p>
16345            </td>
16346
16347            <td class="entry_units">
16348            </td>
16349
16350            <td class="entry_range">
16351              <p>&gt;= 3
16352for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16353&gt;= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
16354            </td>
16355
16356            <td class="entry_hal_version">
16357              <p>3.<wbr/>2</p>
16358            </td>
16359
16360            <td class="entry_tags">
16361            </td>
16362
16363          </tr>
16364          <tr class="entries_header">
16365            <th class="th_details" colspan="6">Details</th>
16366          </tr>
16367          <tr class="entry_cont">
16368            <td class="entry_details" colspan="6">
16369              <p>This value contains the max number of output simultaneous
16370streams for any processed (but not-stalling) formats.<wbr/></p>
16371<p>This lists the upper bound of the number of output streams supported by
16372the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16373CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16374be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
16375<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16376Typically:</p>
16377<ul>
16378<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16379<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16380<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16381<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li>
16382</ul>
16383<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
16384processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16385<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16386            </td>
16387          </tr>
16388
16389
16390          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16391           <!-- end of entry -->
16392
16393
16394          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16395            <td class="entry_name
16396             " rowspan="3">
16397              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16398            </td>
16399            <td class="entry_type">
16400                <span class="entry_type_name">int32</span>
16401
16402              <span class="entry_type_visibility"> [java_public]</span>
16403
16404              <span class="entry_type_synthetic">[synthetic] </span>
16405
16406              <span class="entry_type_hwlevel">[legacy] </span>
16407
16408
16409
16410
16411            </td> <!-- entry_type -->
16412
16413            <td class="entry_description">
16414              <p>The maximum numbers of different types of output streams
16415that can be configured and used simultaneously by a camera device
16416for any processed (and stalling) formats.<wbr/></p>
16417            </td>
16418
16419            <td class="entry_units">
16420            </td>
16421
16422            <td class="entry_range">
16423              <p>&gt;= 1</p>
16424            </td>
16425
16426            <td class="entry_hal_version">
16427              <p>3.<wbr/>2</p>
16428            </td>
16429
16430            <td class="entry_tags">
16431            </td>
16432
16433          </tr>
16434          <tr class="entries_header">
16435            <th class="th_details" colspan="6">Details</th>
16436          </tr>
16437          <tr class="entry_cont">
16438            <td class="entry_details" colspan="6">
16439              <p>This value contains the max number of output simultaneous
16440streams for any processed (but not-stalling) formats.<wbr/></p>
16441<p>This lists the upper bound of the number of output streams supported by
16442the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16443CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16444be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
16445<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16446&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a stalling format.<wbr/></p>
16447<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
16448processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16449<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16450            </td>
16451          </tr>
16452
16453
16454          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16455           <!-- end of entry -->
16456
16457
16458          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16459            <td class="entry_name
16460                entry_name_deprecated
16461             " rowspan="3">
16462              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16463            </td>
16464            <td class="entry_type">
16465                <span class="entry_type_name">int32</span>
16466                <span class="entry_type_container">x</span>
16467
16468                <span class="entry_type_array">
16469                  1
16470                </span>
16471              <span class="entry_type_visibility"> [system]</span>
16472
16473
16474
16475              <span class="entry_type_deprecated">[deprecated] </span>
16476
16477
16478
16479            </td> <!-- entry_type -->
16480
16481            <td class="entry_description">
16482              <p>How many reprocessing streams of any type
16483can be allocated at the same time.<wbr/></p>
16484            </td>
16485
16486            <td class="entry_units">
16487            </td>
16488
16489            <td class="entry_range">
16490              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16491              <p>&gt;= 0</p>
16492            </td>
16493
16494            <td class="entry_hal_version">
16495              <p>3.<wbr/>2</p>
16496            </td>
16497
16498            <td class="entry_tags">
16499              <ul class="entry_tags">
16500                  <li><a href="#tag_HAL2">HAL2</a></li>
16501              </ul>
16502            </td>
16503
16504          </tr>
16505          <tr class="entries_header">
16506            <th class="th_details" colspan="6">Details</th>
16507          </tr>
16508          <tr class="entry_cont">
16509            <td class="entry_details" colspan="6">
16510              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16511<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16512            </td>
16513          </tr>
16514
16515
16516          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16517           <!-- end of entry -->
16518
16519
16520          <tr class="entry" id="static_android.request.maxNumInputStreams">
16521            <td class="entry_name
16522             " rowspan="5">
16523              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16524            </td>
16525            <td class="entry_type">
16526                <span class="entry_type_name">int32</span>
16527
16528              <span class="entry_type_visibility"> [java_public]</span>
16529
16530
16531              <span class="entry_type_hwlevel">[full] </span>
16532
16533
16534
16535
16536            </td> <!-- entry_type -->
16537
16538            <td class="entry_description">
16539              <p>The maximum numbers of any type of input streams
16540that can be configured and used simultaneously by a camera device.<wbr/></p>
16541            </td>
16542
16543            <td class="entry_units">
16544            </td>
16545
16546            <td class="entry_range">
16547              <p>0 or 1.<wbr/></p>
16548            </td>
16549
16550            <td class="entry_hal_version">
16551              <p>3.<wbr/>2</p>
16552            </td>
16553
16554            <td class="entry_tags">
16555              <ul class="entry_tags">
16556                  <li><a href="#tag_REPROC">REPROC</a></li>
16557              </ul>
16558            </td>
16559
16560          </tr>
16561          <tr class="entries_header">
16562            <th class="th_details" colspan="6">Details</th>
16563          </tr>
16564          <tr class="entry_cont">
16565            <td class="entry_details" colspan="6">
16566              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16567<p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
16568input stream,<wbr/> there must be at least one output stream configured to to receive the
16569reprocessed images.<wbr/></p>
16570<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16571only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16572new sensor image will not be captured.<wbr/></p>
16573<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16574stream image format will be PRIVATE,<wbr/> the associated output stream image format
16575should be JPEG.<wbr/></p>
16576            </td>
16577          </tr>
16578
16579          <tr class="entries_header">
16580            <th class="th_details" colspan="6">HAL Implementation Details</th>
16581          </tr>
16582          <tr class="entry_cont">
16583            <td class="entry_details" colspan="6">
16584              <p>For the reprocessing flow and controls,<wbr/> see
16585hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16586            </td>
16587          </tr>
16588
16589          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16590           <!-- end of entry -->
16591
16592
16593          <tr class="entry" id="static_android.request.pipelineMaxDepth">
16594            <td class="entry_name
16595             " rowspan="5">
16596              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16597            </td>
16598            <td class="entry_type">
16599                <span class="entry_type_name">byte</span>
16600
16601              <span class="entry_type_visibility"> [public]</span>
16602
16603
16604              <span class="entry_type_hwlevel">[legacy] </span>
16605
16606
16607
16608
16609            </td> <!-- entry_type -->
16610
16611            <td class="entry_description">
16612              <p>Specifies the number of maximum pipeline stages a frame
16613has to go through from when it's exposed to when it's available
16614to the framework.<wbr/></p>
16615            </td>
16616
16617            <td class="entry_units">
16618            </td>
16619
16620            <td class="entry_range">
16621            </td>
16622
16623            <td class="entry_hal_version">
16624              <p>3.<wbr/>2</p>
16625            </td>
16626
16627            <td class="entry_tags">
16628            </td>
16629
16630          </tr>
16631          <tr class="entries_header">
16632            <th class="th_details" colspan="6">Details</th>
16633          </tr>
16634          <tr class="entry_cont">
16635            <td class="entry_details" colspan="6">
16636              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16637one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16638its own stages to do custom HW processing.<wbr/> Further stages may be
16639added by SW processing.<wbr/></p>
16640<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16641processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16642depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16643the max pipeline depth.<wbr/></p>
16644<p>A pipeline depth of X stages is equivalent to a pipeline latency of
16645X frame intervals.<wbr/></p>
16646<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16647the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16648            </td>
16649          </tr>
16650
16651          <tr class="entries_header">
16652            <th class="th_details" colspan="6">HAL Implementation Details</th>
16653          </tr>
16654          <tr class="entry_cont">
16655            <td class="entry_details" colspan="6">
16656              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16657max batch sizes may be larger than 1.<wbr/></p>
16658            </td>
16659          </tr>
16660
16661          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16662           <!-- end of entry -->
16663
16664
16665          <tr class="entry" id="static_android.request.partialResultCount">
16666            <td class="entry_name
16667             " rowspan="3">
16668              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16669            </td>
16670            <td class="entry_type">
16671                <span class="entry_type_name">int32</span>
16672
16673              <span class="entry_type_visibility"> [public]</span>
16674
16675
16676
16677
16678
16679
16680            </td> <!-- entry_type -->
16681
16682            <td class="entry_description">
16683              <p>Defines how many sub-components
16684a result will be composed of.<wbr/></p>
16685            </td>
16686
16687            <td class="entry_units">
16688            </td>
16689
16690            <td class="entry_range">
16691              <p>&gt;= 1</p>
16692            </td>
16693
16694            <td class="entry_hal_version">
16695              <p>3.<wbr/>2</p>
16696            </td>
16697
16698            <td class="entry_tags">
16699            </td>
16700
16701          </tr>
16702          <tr class="entries_header">
16703            <th class="th_details" colspan="6">Details</th>
16704          </tr>
16705          <tr class="entry_cont">
16706            <td class="entry_details" colspan="6">
16707              <p>In order to combat the pipeline latency,<wbr/> partial results
16708may be delivered to the application layer from the camera device as
16709soon as they are available.<wbr/></p>
16710<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16711results are not supported,<wbr/> and only the final TotalCaptureResult will
16712be produced by the camera device.<wbr/></p>
16713<p>A typical use case for this might be: after requesting an
16714auto-focus (AF) lock the new AF state might be available 50%
16715of the way through the pipeline.<wbr/>  The camera device could
16716then immediately dispatch this state via a partial result to
16717the application,<wbr/> and the rest of the metadata via later
16718partial results.<wbr/></p>
16719            </td>
16720          </tr>
16721
16722
16723          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16724           <!-- end of entry -->
16725
16726
16727          <tr class="entry" id="static_android.request.availableCapabilities">
16728            <td class="entry_name
16729             " rowspan="5">
16730              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16731            </td>
16732            <td class="entry_type">
16733                <span class="entry_type_name entry_type_name_enum">byte</span>
16734                <span class="entry_type_container">x</span>
16735
16736                <span class="entry_type_array">
16737                  n
16738                </span>
16739              <span class="entry_type_visibility"> [public]</span>
16740
16741
16742              <span class="entry_type_hwlevel">[legacy] </span>
16743
16744
16745
16746                <ul class="entry_type_enum">
16747                  <li>
16748                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16749                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16750device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16751supports.<wbr/></p>
16752<p>This capability is listed by all normal devices,<wbr/> and
16753indicates that the camera device has a feature set
16754that's comparable to the baseline requirements for the
16755older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16756<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16757capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16758not standard color output.<wbr/></p></span>
16759                  </li>
16760                  <li>
16761                    <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16762                    <span class="entry_type_enum_optional">[optional]</span>
16763                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16764as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16765The camera device supports basic manual control of the sensor image
16766acquisition related stages.<wbr/> This means the following controls are
16767guaranteed to be supported:</p>
16768<ul>
16769<li>Manual frame duration control<ul>
16770<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16771<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16772</ul>
16773</li>
16774<li>Manual exposure control<ul>
16775<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16776<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16777</ul>
16778</li>
16779<li>Manual sensitivity control<ul>
16780<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16781<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16782</ul>
16783</li>
16784<li>Manual lens control (if the lens is adjustable)<ul>
16785<li>android.<wbr/>lens.<wbr/>*</li>
16786</ul>
16787</li>
16788<li>Manual flash control (if a flash unit is present)<ul>
16789<li>android.<wbr/>flash.<wbr/>*</li>
16790</ul>
16791</li>
16792<li>Manual black level locking<ul>
16793<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16794</ul>
16795</li>
16796<li>Auto exposure lock<ul>
16797<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16798</ul>
16799</li>
16800</ul>
16801<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16802device will accurately report the values applied by 3A in the
16803result.<wbr/></p>
16804<p>A given camera device may also support additional manual sensor controls,<wbr/>
16805but this capability only covers the above list of controls.<wbr/></p>
16806<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16807additionally return a min frame duration that is greater than
16808zero for each supported size-format combination.<wbr/></p></span>
16809                  </li>
16810                  <li>
16811                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16812                    <span class="entry_type_enum_optional">[optional]</span>
16813                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16814The camera device supports basic manual control of the image post-processing
16815stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16816<ul>
16817<li>
16818<p>Manual tonemap control</p>
16819<ul>
16820<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16821<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16822<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16823<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16824<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16825</ul>
16826</li>
16827<li>
16828<p>Manual white balance control</p>
16829<ul>
16830<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16831<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16832</ul>
16833</li>
16834<li>Manual lens shading map control<ul>
16835<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16836<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16837<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16838<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16839</ul>
16840</li>
16841<li>Manual aberration correction control (if aberration correction is supported)<ul>
16842<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16843<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16844</ul>
16845</li>
16846<li>Auto white balance lock<ul>
16847<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16848</ul>
16849</li>
16850</ul>
16851<p>If auto white balance is enabled,<wbr/> then the camera device
16852will accurately report the values applied by AWB in the result.<wbr/></p>
16853<p>A given camera device may also support additional post-processing
16854controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16855                  </li>
16856                  <li>
16857                    <span class="entry_type_enum_name">RAW (v3.2)</span>
16858                    <span class="entry_type_enum_optional">[optional]</span>
16859                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16860metadata for interpreting them.<wbr/></p>
16861<p>Devices supporting the RAW capability allow both for
16862saving DNG files,<wbr/> and for direct application processing of
16863raw sensor images.<wbr/></p>
16864<ul>
16865<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16866<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16867  will match either the value in
16868  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16869  <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16870<li>All DNG-related optional metadata entries are provided
16871  by the camera device.<wbr/></li>
16872</ul></span>
16873                  </li>
16874                  <li>
16875                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16876                    <span class="entry_type_enum_optional">[optional]</span>
16877                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16878<ul>
16879<li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
16880<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/>
16881  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16882  formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
16883<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16884  returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
16885<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li>
16886<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16887  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16888<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16889  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16890  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16891<li>The maximum available resolution for PRIVATE streams
16892  (both input/<wbr/>output) will match the maximum available
16893  resolution of JPEG streams.<wbr/></li>
16894<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16895<li>Only below controls are effective for reprocessing requests and
16896  will be present in capture results,<wbr/> other controls in reprocess
16897  requests will be ignored by the camera device.<wbr/><ul>
16898<li>android.<wbr/>jpeg.<wbr/>*</li>
16899<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16900<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16901</ul>
16902</li>
16903<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16904  <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
16905</ul></span>
16906                  </li>
16907                  <li>
16908                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16909                    <span class="entry_type_enum_optional">[optional]</span>
16910                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16911the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16912reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16913<p>The values reported for the following controls are guaranteed to be available
16914in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16915<ul>
16916<li>Exposure control<ul>
16917<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16918</ul>
16919</li>
16920<li>Sensitivity control<ul>
16921<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16922</ul>
16923</li>
16924<li>Lens controls (if the lens is adjustable)<ul>
16925<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16926<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16927</ul>
16928</li>
16929</ul>
16930<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16931always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16932                  </li>
16933                  <li>
16934                    <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16935                    <span class="entry_type_enum_optional">[optional]</span>
16936                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16937second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16938to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16939per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16940resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16941                  </li>
16942                  <li>
16943                    <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16944                    <span class="entry_type_enum_optional">[optional]</span>
16945                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16946PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16947following:</p>
16948<ul>
16949<li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
16950<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input
16951  format,<wbr/> that is,<wbr/> YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
16952<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16953  returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
16954<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
16955<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate
16956  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16957<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
16958  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16959<li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
16960  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16961<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16962<li>Only the below controls are effective for reprocessing requests and will be present
16963  in capture results.<wbr/> The reprocess requests are from the original capture results
16964  that are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> output buffers.<wbr/>  All other controls in the
16965  reprocess requests will be ignored by the camera device.<wbr/><ul>
16966<li>android.<wbr/>jpeg.<wbr/>*</li>
16967<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16968<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16969<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16970</ul>
16971</li>
16972<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16973  <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
16974</ul></span>
16975                  </li>
16976                  <li>
16977                    <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16978                    <span class="entry_type_enum_optional">[optional]</span>
16979                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16980<p>This capability requires the camera device to support the following:</p>
16981<ul>
16982<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16983  an output format.<wbr/></li>
16984<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is
16985  optionally supported as an output format.<wbr/></li>
16986<li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/> will
16987  list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16988  and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16989<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16990<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16991<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16992<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
16993</ul>
16994</li>
16995<li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
16996<li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
16997<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16998  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16999  format.<wbr/></li>
17000</ul>
17001<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
17002so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
17003should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17004On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17005using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17006once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17007rate,<wbr/> including depth stall time.<wbr/></p></span>
17008                  </li>
17009                  <li>
17010                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17011                    <span class="entry_type_enum_optional">[optional]</span>
17012                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
17013case.<wbr/> The camera device will support high speed capture session created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
17014only accepts high speed request lists created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
17015<p>A camera device can still support high speed video streaming by advertising the high
17016speed 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
17017normal capture request per frame control and synchronization requirements will apply
17018to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17019describes the capability of a specialized operating mode with many limitations (see
17020below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17021<p>The supported high speed video sizes and fps ranges are specified in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
17022To get desired output frame rates,<wbr/> the application is only allowed to select video
17023size and FPS range combinations provided by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>  The
17024fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
17025<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17026ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17027controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17028and post-processing parameters is possible.<wbr/> All other controls operate the
17029same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17030android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17031<ul>
17032<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17033<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17034<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17035<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17036<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17037<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17038<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17039<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17040<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17041<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17042</ul>
17043<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17044<ul>
17045<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17046work since aeMode is ON)</li>
17047<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17048<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17049<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17050</ul>
17051<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17052be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17053the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17054the application need check if the video encoder is capable of supporting the
17055high frame rate for a given video size,<wbr/> or it will end up with lower recording
17056frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17057rate will be bounded by the screen refresh rate.<wbr/></p>
17058<p>The camera device will only support up to 2 high speed simultaneous output surfaces
17059(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17060if all of below conditions are true:</p>
17061<ul>
17062<li>The application creates a camera capture session with no more than 2 surfaces via
17063<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17064targeted surfaces must be preview surface (either from <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or recording
17065surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
17066<li>The stream sizes are selected from the sizes reported by
17067<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17068<li>The FPS ranges are selected from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
17069</ul>
17070<p>When above conditions are NOT satistied,<wbr/>
17071<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17072will fail.<wbr/></p>
17073<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17074reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17075the application avoids unnecessary maximum target FPS changes as much as possible
17076during high speed streaming.<wbr/></p></span>
17077                  </li>
17078                  <li>
17079                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17080                    <span class="entry_type_enum_optional">[optional]</span>
17081                    <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17082<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p>
17083<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17084results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17085                  </li>
17086                  <li>
17087                    <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17088                    <span class="entry_type_enum_optional">[optional]</span>
17089                    <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
17090also exposed to the application.<wbr/></p>
17091<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front
17092camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/>
17093the recommendation is to switch between the first rear camera and the first front
17094camera in the list of supported camera devices.<wbr/></p>
17095<p>This capability requires the camera device to support the following:</p>
17096<ul>
17097<li>This camera device must list the following static metadata entries in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>:<ul>
17098<li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
17099<li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
17100</ul>
17101</li>
17102<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17103  so that the application can correlate pixels from the physical streams:<ul>
17104<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17105<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17106<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17107<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17108<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17109</ul>
17110</li>
17111<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17112  the same.<wbr/></li>
17113<li>The logical camera device must be LIMITED or higher device.<wbr/></li>
17114</ul>
17115<p>Both the logical camera device and its underlying physical devices support the
17116mandatory stream combinations required for their device levels.<wbr/></p>
17117<p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
17118<ul>
17119<li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
17120  logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
17121  or raw stream with two physical streams of the same size and format,<wbr/> each from a
17122  separate physical camera,<wbr/> given that the size and format are supported by both
17123  physical cameras.<wbr/></li>
17124<li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
17125  cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
17126  capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
17127  physical camera.<wbr/> This is usually the case when the physical cameras have different
17128  sensor sizes.<wbr/></li>
17129</ul>
17130<p>Using physical streams in place of a logical stream of the same size and format will
17131not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
17132of the physical and logical streams are the same.<wbr/></p></span>
17133                  </li>
17134                  <li>
17135                    <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
17136                    <span class="entry_type_enum_optional">[optional]</span>
17137                    <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
17138and the pixel values on U and V planes are all 128.<wbr/></p></span>
17139                  </li>
17140                </ul>
17141
17142            </td> <!-- entry_type -->
17143
17144            <td class="entry_description">
17145              <p>List of capabilities that this camera device
17146advertises as fully supporting.<wbr/></p>
17147            </td>
17148
17149            <td class="entry_units">
17150            </td>
17151
17152            <td class="entry_range">
17153            </td>
17154
17155            <td class="entry_hal_version">
17156              <p>3.<wbr/>2</p>
17157            </td>
17158
17159            <td class="entry_tags">
17160            </td>
17161
17162          </tr>
17163          <tr class="entries_header">
17164            <th class="th_details" colspan="6">Details</th>
17165          </tr>
17166          <tr class="entry_cont">
17167            <td class="entry_details" colspan="6">
17168              <p>A capability is a contract that the camera device makes in order
17169to be able to satisfy one or more use cases.<wbr/></p>
17170<p>Listing a capability guarantees that the whole set of features
17171required to support a common use will all be available.<wbr/></p>
17172<p>Using a subset of the functionality provided by an unsupported
17173capability may be possible on a specific camera device implementation;
17174to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17175<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17176<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17177<p>The following capabilities are guaranteed to be available on
17178<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17179<ul>
17180<li>MANUAL_<wbr/>SENSOR</li>
17181<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17182</ul>
17183<p>Other capabilities may be available on either FULL or LIMITED
17184devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17185            </td>
17186          </tr>
17187
17188          <tr class="entries_header">
17189            <th class="th_details" colspan="6">HAL Implementation Details</th>
17190          </tr>
17191          <tr class="entry_cont">
17192            <td class="entry_details" colspan="6">
17193              <p>Additional constraint details per-capability will be available
17194in the Compatibility Test Suite.<wbr/></p>
17195<p>Minimum baseline requirements required for the
17196BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17197Instead refer to "BC" tags and the camera CTS tests in the
17198android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17199<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17200<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17201request and the result in order to be considered to be
17202capability-compliant.<wbr/></p>
17203<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17204then exposure time must be configurable via the request <em>and</em>
17205the actual exposure applied must be available via
17206the result.<wbr/></p>
17207<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17208<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17209<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17210hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17211<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17212CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17213<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17214YUV_<wbr/>REPROCESSING capability must support the
17215CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17216<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17217<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17218<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17219<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17220addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17221enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17222if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17223DEPTH).<wbr/></p>
17224<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17225same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17226It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17227<ul>
17228<li>
17229<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each {logical_<wbr/>camera_<wbr/>id,<wbr/>
17230physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>} combination,<wbr/> where logical_<wbr/>camera_<wbr/>id
17231is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera framework will only advertise one camera id
17232(within the combination) that is frontmost in the HAL published camera id list.<wbr/></p>
17233</li>
17234<li>
17235<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/>
17236power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p>
17237</li>
17238</ul>
17239<p>For MONOCHROME,<wbr/> the camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and
17240it is exclusive of both RAW and MANUAL_<wbr/>POST_<wbr/>PROCESSING capabilities:</p>
17241<ul>
17242<li>
17243<p>To maintain backward compatibility,<wbr/> the camera device must support all
17244BACKWARD_<wbr/>COMPATIBLE required keys.<wbr/> The <a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a> key only contains
17245AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
17246<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
17247</li>
17248<li>
17249<p>A monochrome device doesn't need to advertise DNG related optional metadata tags.<wbr/></p>
17250</li>
17251<li>
17252<p><a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>,<wbr/> <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> and
17253<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are not applicable.<wbr/> So the camera device cannot
17254be a FULL device.<wbr/> However,<wbr/> the HAL can still advertise other individual capabilites.<wbr/></p>
17255</li>
17256<li>
17257<p>If the device supports tonemap control,<wbr/> only <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> is used.<wbr/>
17258CurveGreen and curveBlue are no-ops.<wbr/></p>
17259</li>
17260</ul>
17261            </td>
17262          </tr>
17263
17264          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17265           <!-- end of entry -->
17266
17267
17268          <tr class="entry" id="static_android.request.availableRequestKeys">
17269            <td class="entry_name
17270             " rowspan="5">
17271              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17272            </td>
17273            <td class="entry_type">
17274                <span class="entry_type_name">int32</span>
17275                <span class="entry_type_container">x</span>
17276
17277                <span class="entry_type_array">
17278                  n
17279                </span>
17280              <span class="entry_type_visibility"> [ndk_public]</span>
17281
17282
17283              <span class="entry_type_hwlevel">[legacy] </span>
17284
17285
17286
17287
17288            </td> <!-- entry_type -->
17289
17290            <td class="entry_description">
17291              <p>A list of all keys that the camera device has available
17292to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17293            </td>
17294
17295            <td class="entry_units">
17296            </td>
17297
17298            <td class="entry_range">
17299            </td>
17300
17301            <td class="entry_hal_version">
17302              <p>3.<wbr/>2</p>
17303            </td>
17304
17305            <td class="entry_tags">
17306            </td>
17307
17308          </tr>
17309          <tr class="entries_header">
17310            <th class="th_details" colspan="6">Details</th>
17311          </tr>
17312          <tr class="entry_cont">
17313            <td class="entry_details" colspan="6">
17314              <p>Attempting to set a key into a CaptureRequest that is not
17315listed here will result in an invalid request and will be rejected
17316by the camera device.<wbr/></p>
17317<p>This field can be used to query the feature set of a camera device
17318at a more granular level than capabilities.<wbr/> This is especially
17319important for optional keys that are not listed under any capability
17320in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17321            </td>
17322          </tr>
17323
17324          <tr class="entries_header">
17325            <th class="th_details" colspan="6">HAL Implementation Details</th>
17326          </tr>
17327          <tr class="entry_cont">
17328            <td class="entry_details" colspan="6">
17329              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17330use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17331<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17332vendor extensions API and not against this field.<wbr/></p>
17333<p>The HAL must not consume any request tags that are not listed either
17334here or in the vendor tag list.<wbr/></p>
17335<p>The public camera2 API will always make the vendor tags visible
17336via
17337<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17338            </td>
17339          </tr>
17340
17341          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17342           <!-- end of entry -->
17343
17344
17345          <tr class="entry" id="static_android.request.availableResultKeys">
17346            <td class="entry_name
17347             " rowspan="5">
17348              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17349            </td>
17350            <td class="entry_type">
17351                <span class="entry_type_name">int32</span>
17352                <span class="entry_type_container">x</span>
17353
17354                <span class="entry_type_array">
17355                  n
17356                </span>
17357              <span class="entry_type_visibility"> [ndk_public]</span>
17358
17359
17360              <span class="entry_type_hwlevel">[legacy] </span>
17361
17362
17363
17364
17365            </td> <!-- entry_type -->
17366
17367            <td class="entry_description">
17368              <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
17369            </td>
17370
17371            <td class="entry_units">
17372            </td>
17373
17374            <td class="entry_range">
17375            </td>
17376
17377            <td class="entry_hal_version">
17378              <p>3.<wbr/>2</p>
17379            </td>
17380
17381            <td class="entry_tags">
17382            </td>
17383
17384          </tr>
17385          <tr class="entries_header">
17386            <th class="th_details" colspan="6">Details</th>
17387          </tr>
17388          <tr class="entry_cont">
17389            <td class="entry_details" colspan="6">
17390              <p>Attempting to get a key from a CaptureResult that is not
17391listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17392a CaptureResult that is listed here will generally never return a <code>null</code>
17393value.<wbr/></p>
17394<p>The following keys may return <code>null</code> unless they are enabled:</p>
17395<ul>
17396<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>
17397</ul>
17398<p>(Those sometimes-null keys will nevertheless be listed here
17399if they are available.<wbr/>)</p>
17400<p>This field can be used to query the feature set of a camera device
17401at a more granular level than capabilities.<wbr/> This is especially
17402important for optional keys that are not listed under any capability
17403in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17404            </td>
17405          </tr>
17406
17407          <tr class="entries_header">
17408            <th class="th_details" colspan="6">HAL Implementation Details</th>
17409          </tr>
17410          <tr class="entry_cont">
17411            <td class="entry_details" colspan="6">
17412              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17413even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17414matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17415<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17416use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17417<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17418vendor extensions API and not against this field.<wbr/></p>
17419<p>The HAL must not produce any result tags that are not listed either
17420here or in the vendor tag list.<wbr/></p>
17421<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>
17422            </td>
17423          </tr>
17424
17425          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17426           <!-- end of entry -->
17427
17428
17429          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17430            <td class="entry_name
17431             " rowspan="5">
17432              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17433            </td>
17434            <td class="entry_type">
17435                <span class="entry_type_name">int32</span>
17436                <span class="entry_type_container">x</span>
17437
17438                <span class="entry_type_array">
17439                  n
17440                </span>
17441              <span class="entry_type_visibility"> [ndk_public]</span>
17442
17443
17444              <span class="entry_type_hwlevel">[legacy] </span>
17445
17446
17447
17448
17449            </td> <!-- entry_type -->
17450
17451            <td class="entry_description">
17452              <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
17453            </td>
17454
17455            <td class="entry_units">
17456            </td>
17457
17458            <td class="entry_range">
17459            </td>
17460
17461            <td class="entry_hal_version">
17462              <p>3.<wbr/>2</p>
17463            </td>
17464
17465            <td class="entry_tags">
17466            </td>
17467
17468          </tr>
17469          <tr class="entries_header">
17470            <th class="th_details" colspan="6">Details</th>
17471          </tr>
17472          <tr class="entry_cont">
17473            <td class="entry_details" colspan="6">
17474              <p>This entry follows the same rules as
17475<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17476CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17477details.<wbr/></p>
17478            </td>
17479          </tr>
17480
17481          <tr class="entries_header">
17482            <th class="th_details" colspan="6">HAL Implementation Details</th>
17483          </tr>
17484          <tr class="entry_cont">
17485            <td class="entry_details" colspan="6">
17486              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17487even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17488matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17489<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17490the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17491<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17492vendor extensions API and not against this field.<wbr/></p>
17493<p>The HAL must not have any tags in its static info that are not listed
17494either here or in the vendor tag list.<wbr/></p>
17495<p>The public camera2 API will always make the vendor tags visible
17496via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17497            </td>
17498          </tr>
17499
17500          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17501           <!-- end of entry -->
17502
17503
17504          <tr class="entry" id="static_android.request.availableSessionKeys">
17505            <td class="entry_name
17506             " rowspan="5">
17507              android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17508            </td>
17509            <td class="entry_type">
17510                <span class="entry_type_name">int32</span>
17511                <span class="entry_type_container">x</span>
17512
17513                <span class="entry_type_array">
17514                  n
17515                </span>
17516              <span class="entry_type_visibility"> [ndk_public]</span>
17517
17518
17519              <span class="entry_type_hwlevel">[legacy] </span>
17520
17521
17522
17523
17524            </td> <!-- entry_type -->
17525
17526            <td class="entry_description">
17527              <p>A subset of the available request keys that the camera device
17528can pass as part of the capture session initialization.<wbr/></p>
17529            </td>
17530
17531            <td class="entry_units">
17532            </td>
17533
17534            <td class="entry_range">
17535            </td>
17536
17537            <td class="entry_hal_version">
17538              <p>3.<wbr/>3</p>
17539            </td>
17540
17541            <td class="entry_tags">
17542            </td>
17543
17544          </tr>
17545          <tr class="entries_header">
17546            <th class="th_details" colspan="6">Details</th>
17547          </tr>
17548          <tr class="entry_cont">
17549            <td class="entry_details" colspan="6">
17550              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17551contains a list of keys that are difficult to apply per-frame and
17552can result in unexpected delays when modified during the capture session
17553lifetime.<wbr/> Typical examples include parameters that require a
17554time-consuming hardware re-configuration or internal camera pipeline
17555change.<wbr/> For performance reasons we advise clients to pass their initial
17556values as part of
17557<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17558Once the camera capture session is enabled it is also recommended to avoid
17559changing them from their initial values set in
17560<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17561Control over session parameters can still be exerted in capture requests
17562but clients should be aware and expect delays during their application.<wbr/>
17563An example usage scenario could look like this:</p>
17564<ul>
17565<li>The camera client starts by quering the session parameter key list via
17566  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17567<li>Before triggering the capture session create sequence,<wbr/> a capture request
17568  must be built via
17569  <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17570  using an appropriate template matching the particular use case.<wbr/></li>
17571<li>The client should go over the list of session parameters and check
17572  whether some of the keys listed matches with the parameters that
17573  they intend to modify as part of the first capture request.<wbr/></li>
17574<li>If there is no such match,<wbr/> the capture request can be  passed
17575  unmodified to
17576  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17577<li>If matches do exist,<wbr/> the client should update the respective values
17578  and pass the request to
17579  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17580<li>After the capture session initialization completes the session parameter
17581  key list can continue to serve as reference when posting or updating
17582  further requests.<wbr/> As mentioned above further changes to session
17583  parameters should ideally be avoided,<wbr/> if updates are necessary
17584  however clients could expect a delay/<wbr/>glitch during the
17585  parameter switch.<wbr/></li>
17586</ul>
17587            </td>
17588          </tr>
17589
17590          <tr class="entries_header">
17591            <th class="th_details" colspan="6">HAL Implementation Details</th>
17592          </tr>
17593          <tr class="entry_cont">
17594            <td class="entry_details" colspan="6">
17595              <p>If <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> is part of the session parameters and constrained high
17596speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be
17597monitored by the framework and can trigger camera re-configuration.<wbr/> For more information
17598about framerate ranges during constrained high speed sessions see
17599<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
17600Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17601use the extensions C api (refer to
17602android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17603<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17604vendor extensions API and not against this field.<wbr/></p>
17605<p>The HAL must not consume any request tags in the session parameters that
17606are not listed either here or in the vendor tag list.<wbr/></p>
17607<p>The public camera2 API will always make the vendor tags visible
17608via
17609<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17610            </td>
17611          </tr>
17612
17613          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17614           <!-- end of entry -->
17615
17616
17617          <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17618            <td class="entry_name
17619             " rowspan="5">
17620              android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17621            </td>
17622            <td class="entry_type">
17623                <span class="entry_type_name">int32</span>
17624                <span class="entry_type_container">x</span>
17625
17626                <span class="entry_type_array">
17627                  n
17628                </span>
17629              <span class="entry_type_visibility"> [hidden]</span>
17630
17631
17632              <span class="entry_type_hwlevel">[limited] </span>
17633
17634
17635
17636
17637            </td> <!-- entry_type -->
17638
17639            <td class="entry_description">
17640              <p>A subset of the available request keys that can be overriden for
17641physical devices backing a logical multi-camera.<wbr/></p>
17642            </td>
17643
17644            <td class="entry_units">
17645            </td>
17646
17647            <td class="entry_range">
17648            </td>
17649
17650            <td class="entry_hal_version">
17651              <p>3.<wbr/>3</p>
17652            </td>
17653
17654            <td class="entry_tags">
17655            </td>
17656
17657          </tr>
17658          <tr class="entries_header">
17659            <th class="th_details" colspan="6">Details</th>
17660          </tr>
17661          <tr class="entry_cont">
17662            <td class="entry_details" colspan="6">
17663              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list
17664of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17665The respective value of such request key can be obtained by calling
17666<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17667individual physical device requests must be built via
17668<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17669            </td>
17670          </tr>
17671
17672          <tr class="entries_header">
17673            <th class="th_details" colspan="6">HAL Implementation Details</th>
17674          </tr>
17675          <tr class="entry_cont">
17676            <td class="entry_details" colspan="6">
17677              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17678use the extensions C api (refer to
17679android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17680details).<wbr/></p>
17681<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17682vendor extensions API and not against this field.<wbr/></p>
17683<p>The HAL must not consume any request tags in the session parameters that
17684are not listed either here or in the vendor tag list.<wbr/></p>
17685<p>There should be no overlap between this set of keys and the available session keys
17686<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17687with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17688<p>The public camera2 API will always make the vendor tags visible
17689via
17690<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17691            </td>
17692          </tr>
17693
17694          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17695           <!-- end of entry -->
17696
17697
17698
17699      <!-- end of kind -->
17700      </tbody>
17701      <tr><td colspan="7" class="kind">dynamic</td></tr>
17702
17703      <thead class="entries_header">
17704        <tr>
17705          <th class="th_name">Property Name</th>
17706          <th class="th_type">Type</th>
17707          <th class="th_description">Description</th>
17708          <th class="th_units">Units</th>
17709          <th class="th_range">Range</th>
17710          <th class="th_hal_version">Initial HIDL HAL version</th>
17711          <th class="th_tags">Tags</th>
17712        </tr>
17713      </thead>
17714
17715      <tbody>
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726          <tr class="entry" id="dynamic_android.request.frameCount">
17727            <td class="entry_name
17728                entry_name_deprecated
17729             " rowspan="3">
17730              android.<wbr/>request.<wbr/>frame<wbr/>Count
17731            </td>
17732            <td class="entry_type">
17733                <span class="entry_type_name">int32</span>
17734
17735              <span class="entry_type_visibility"> [hidden]</span>
17736
17737
17738
17739              <span class="entry_type_deprecated">[deprecated] </span>
17740
17741
17742
17743            </td> <!-- entry_type -->
17744
17745            <td class="entry_description">
17746              <p>A frame counter set by the framework.<wbr/> This value monotonically
17747increases with every new result (that is,<wbr/> each new result has a unique
17748frameCount value).<wbr/></p>
17749            </td>
17750
17751            <td class="entry_units">
17752              count of frames
17753            </td>
17754
17755            <td class="entry_range">
17756              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17757              <p>&gt; 0</p>
17758            </td>
17759
17760            <td class="entry_hal_version">
17761              <p>3.<wbr/>2</p>
17762            </td>
17763
17764            <td class="entry_tags">
17765            </td>
17766
17767          </tr>
17768          <tr class="entries_header">
17769            <th class="th_details" colspan="6">Details</th>
17770          </tr>
17771          <tr class="entry_cont">
17772            <td class="entry_details" colspan="6">
17773              <p>Reset on release()</p>
17774            </td>
17775          </tr>
17776
17777
17778          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17779           <!-- end of entry -->
17780
17781
17782          <tr class="entry" id="dynamic_android.request.id">
17783            <td class="entry_name
17784             " rowspan="1">
17785              android.<wbr/>request.<wbr/>id
17786            </td>
17787            <td class="entry_type">
17788                <span class="entry_type_name">int32</span>
17789
17790              <span class="entry_type_visibility"> [hidden]</span>
17791
17792
17793
17794
17795
17796
17797            </td> <!-- entry_type -->
17798
17799            <td class="entry_description">
17800              <p>An application-specified ID for the current
17801request.<wbr/> Must be maintained unchanged in output
17802frame</p>
17803            </td>
17804
17805            <td class="entry_units">
17806              arbitrary integer assigned by application
17807            </td>
17808
17809            <td class="entry_range">
17810              <p>Any int</p>
17811            </td>
17812
17813            <td class="entry_hal_version">
17814              <p>3.<wbr/>2</p>
17815            </td>
17816
17817            <td class="entry_tags">
17818              <ul class="entry_tags">
17819                  <li><a href="#tag_V1">V1</a></li>
17820              </ul>
17821            </td>
17822
17823          </tr>
17824
17825
17826          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17827           <!-- end of entry -->
17828
17829
17830          <tr class="entry" id="dynamic_android.request.metadataMode">
17831            <td class="entry_name
17832             " rowspan="1">
17833              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17834            </td>
17835            <td class="entry_type">
17836                <span class="entry_type_name entry_type_name_enum">byte</span>
17837
17838              <span class="entry_type_visibility"> [system]</span>
17839
17840
17841
17842
17843
17844                <ul class="entry_type_enum">
17845                  <li>
17846                    <span class="entry_type_enum_name">NONE (v3.2)</span>
17847                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17848for application-bound buffer data.<wbr/> If no
17849application-bound streams exist,<wbr/> no frame should be
17850placed in the output frame queue.<wbr/> If such streams
17851exist,<wbr/> a frame should be placed on the output queue
17852with null metadata but with the necessary output buffer
17853information.<wbr/> Timestamp information should still be
17854included with any output stream buffers</p></span>
17855                  </li>
17856                  <li>
17857                    <span class="entry_type_enum_name">FULL (v3.2)</span>
17858                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17859only be produced if they are separately
17860enabled</p></span>
17861                  </li>
17862                </ul>
17863
17864            </td> <!-- entry_type -->
17865
17866            <td class="entry_description">
17867              <p>How much metadata to produce on
17868output</p>
17869            </td>
17870
17871            <td class="entry_units">
17872            </td>
17873
17874            <td class="entry_range">
17875            </td>
17876
17877            <td class="entry_hal_version">
17878              <p>3.<wbr/>2</p>
17879            </td>
17880
17881            <td class="entry_tags">
17882              <ul class="entry_tags">
17883                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17884              </ul>
17885            </td>
17886
17887          </tr>
17888
17889
17890          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17891           <!-- end of entry -->
17892
17893
17894          <tr class="entry" id="dynamic_android.request.outputStreams">
17895            <td class="entry_name
17896                entry_name_deprecated
17897             " rowspan="3">
17898              android.<wbr/>request.<wbr/>output<wbr/>Streams
17899            </td>
17900            <td class="entry_type">
17901                <span class="entry_type_name">int32</span>
17902                <span class="entry_type_container">x</span>
17903
17904                <span class="entry_type_array">
17905                  n
17906                </span>
17907              <span class="entry_type_visibility"> [system]</span>
17908
17909
17910
17911              <span class="entry_type_deprecated">[deprecated] </span>
17912
17913
17914
17915            </td> <!-- entry_type -->
17916
17917            <td class="entry_description">
17918              <p>Lists which camera output streams image data
17919from this capture must be sent to</p>
17920            </td>
17921
17922            <td class="entry_units">
17923              List of camera stream IDs
17924            </td>
17925
17926            <td class="entry_range">
17927              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17928              <p>List must only include streams that have been
17929created</p>
17930            </td>
17931
17932            <td class="entry_hal_version">
17933              <p>3.<wbr/>2</p>
17934            </td>
17935
17936            <td class="entry_tags">
17937              <ul class="entry_tags">
17938                  <li><a href="#tag_HAL2">HAL2</a></li>
17939              </ul>
17940            </td>
17941
17942          </tr>
17943          <tr class="entries_header">
17944            <th class="th_details" colspan="6">Details</th>
17945          </tr>
17946          <tr class="entry_cont">
17947            <td class="entry_details" colspan="6">
17948              <p>If no output streams are listed,<wbr/> then the image
17949data should simply be discarded.<wbr/> The image data must
17950still be captured for metadata and statistics production,<wbr/>
17951and the lens and flash must operate as requested.<wbr/></p>
17952            </td>
17953          </tr>
17954
17955
17956          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17957           <!-- end of entry -->
17958
17959
17960          <tr class="entry" id="dynamic_android.request.pipelineDepth">
17961            <td class="entry_name
17962             " rowspan="5">
17963              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17964            </td>
17965            <td class="entry_type">
17966                <span class="entry_type_name">byte</span>
17967
17968              <span class="entry_type_visibility"> [public]</span>
17969
17970
17971              <span class="entry_type_hwlevel">[legacy] </span>
17972
17973
17974
17975
17976            </td> <!-- entry_type -->
17977
17978            <td class="entry_description">
17979              <p>Specifies the number of pipeline stages the frame went
17980through from when it was exposed to when the final completed result
17981was available to the framework.<wbr/></p>
17982            </td>
17983
17984            <td class="entry_units">
17985            </td>
17986
17987            <td class="entry_range">
17988              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17989            </td>
17990
17991            <td class="entry_hal_version">
17992              <p>3.<wbr/>2</p>
17993            </td>
17994
17995            <td class="entry_tags">
17996            </td>
17997
17998          </tr>
17999          <tr class="entries_header">
18000            <th class="th_details" colspan="6">Details</th>
18001          </tr>
18002          <tr class="entry_cont">
18003            <td class="entry_details" colspan="6">
18004              <p>Depending on what settings are used in the request,<wbr/> and
18005what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
18006and some pipeline stages skipped.<wbr/></p>
18007<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
18008            </td>
18009          </tr>
18010
18011          <tr class="entries_header">
18012            <th class="th_details" colspan="6">HAL Implementation Details</th>
18013          </tr>
18014          <tr class="entry_cont">
18015            <td class="entry_details" colspan="6">
18016              <p>This value must always represent the accurate count of how many
18017pipeline stages were actually used.<wbr/></p>
18018            </td>
18019          </tr>
18020
18021          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18022           <!-- end of entry -->
18023
18024
18025
18026      <!-- end of kind -->
18027      </tbody>
18028
18029  <!-- end of section -->
18030  <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
18031
18032
18033      <tr><td colspan="7" class="kind">controls</td></tr>
18034
18035      <thead class="entries_header">
18036        <tr>
18037          <th class="th_name">Property Name</th>
18038          <th class="th_type">Type</th>
18039          <th class="th_description">Description</th>
18040          <th class="th_units">Units</th>
18041          <th class="th_range">Range</th>
18042          <th class="th_hal_version">Initial HIDL HAL version</th>
18043          <th class="th_tags">Tags</th>
18044        </tr>
18045      </thead>
18046
18047      <tbody>
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058          <tr class="entry" id="controls_android.scaler.cropRegion">
18059            <td class="entry_name
18060             " rowspan="5">
18061              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18062            </td>
18063            <td class="entry_type">
18064                <span class="entry_type_name">int32</span>
18065                <span class="entry_type_container">x</span>
18066
18067                <span class="entry_type_array">
18068                  4
18069                </span>
18070              <span class="entry_type_visibility"> [public as rectangle]</span>
18071
18072
18073              <span class="entry_type_hwlevel">[legacy] </span>
18074
18075
18076
18077
18078            </td> <!-- entry_type -->
18079
18080            <td class="entry_description">
18081              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18082            </td>
18083
18084            <td class="entry_units">
18085              Pixel coordinates relative to
18086          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18087            </td>
18088
18089            <td class="entry_range">
18090            </td>
18091
18092            <td class="entry_hal_version">
18093              <p>3.<wbr/>2</p>
18094            </td>
18095
18096            <td class="entry_tags">
18097              <ul class="entry_tags">
18098                  <li><a href="#tag_BC">BC</a></li>
18099              </ul>
18100            </td>
18101
18102          </tr>
18103          <tr class="entries_header">
18104            <th class="th_details" colspan="6">Details</th>
18105          </tr>
18106          <tr class="entry_cont">
18107            <td class="entry_details" colspan="6">
18108              <p>This control can be used to implement digital zoom.<wbr/></p>
18109<p>The crop region coordinate system is based off
18110<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
18111top-left corner of the sensor active array.<wbr/></p>
18112<p>Output streams use this rectangle to produce their output,<wbr/>
18113cropping to a smaller region if necessary to maintain the
18114stream's aspect ratio,<wbr/> then scaling the sensor input to
18115match the output's configured resolution.<wbr/></p>
18116<p>The crop region is applied after the RAW to other color
18117space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18118(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18119croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18120<p>For non-raw streams,<wbr/> any additional per-stream cropping will
18121be done to maximize the final pixel area of the stream.<wbr/></p>
18122<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18123ratio,<wbr/> then 4:3 streams will use the exact crop
18124region.<wbr/> 16:9 streams will further crop vertically
18125(letterbox).<wbr/></p>
18126<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18127outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18128streams will match exactly.<wbr/> These additional crops will
18129be centered within the crop region.<wbr/></p>
18130<p>The width and height of the crop region cannot
18131be set to be smaller than
18132<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
18133<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>
18134<p>The camera device may adjust the crop region to account
18135for rounding and other hardware requirements; the final
18136crop region used will be included in the output capture
18137result.<wbr/></p>
18138            </td>
18139          </tr>
18140
18141          <tr class="entries_header">
18142            <th class="th_details" colspan="6">HAL Implementation Details</th>
18143          </tr>
18144          <tr class="entry_cont">
18145            <td class="entry_details" colspan="6">
18146              <p>The output streams must maintain square pixels at all
18147times,<wbr/> no matter what the relative aspect ratios of the
18148crop region and the stream are.<wbr/>  Negative values for
18149corner are allowed for raw output if full pixel array is
18150larger than active pixel array.<wbr/> Width and height may be
18151rounded to nearest larger supportable width,<wbr/> especially
18152for raw output,<wbr/> where only a few fixed scales may be
18153possible.<wbr/></p>
18154<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18155size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18156<ul>
18157<li>
18158<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18159array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18160<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>
18161<ol>
18162<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18163cropped pixel area by (tx,<wbr/> ty),<wbr/>
18164where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18165and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18166(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18167<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18168<li>Scale the width and height of requested cropRegion with scaling factor of
18169sensor<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
18170respectively.<wbr/>
18171Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18172with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18173follow the general cropping rule for this new cropRegion and effective active
18174array size.<wbr/></li>
18175</ol>
18176</li>
18177<li>
18178<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/>
18179The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18180The reported cropRegion may be slightly different with the requested cropRegion since
18181the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18182hardware limitations.<wbr/></p>
18183</li>
18184</ul>
18185<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18186            </td>
18187          </tr>
18188
18189          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18190           <!-- end of entry -->
18191
18192
18193
18194      <!-- end of kind -->
18195      </tbody>
18196      <tr><td colspan="7" class="kind">static</td></tr>
18197
18198      <thead class="entries_header">
18199        <tr>
18200          <th class="th_name">Property Name</th>
18201          <th class="th_type">Type</th>
18202          <th class="th_description">Description</th>
18203          <th class="th_units">Units</th>
18204          <th class="th_range">Range</th>
18205          <th class="th_hal_version">Initial HIDL HAL version</th>
18206          <th class="th_tags">Tags</th>
18207        </tr>
18208      </thead>
18209
18210      <tbody>
18211
18212
18213
18214
18215
18216
18217
18218
18219
18220
18221          <tr class="entry" id="static_android.scaler.availableFormats">
18222            <td class="entry_name
18223                entry_name_deprecated
18224             " rowspan="5">
18225              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18226            </td>
18227            <td class="entry_type">
18228                <span class="entry_type_name entry_type_name_enum">int32</span>
18229                <span class="entry_type_container">x</span>
18230
18231                <span class="entry_type_array">
18232                  n
18233                </span>
18234              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18235
18236
18237
18238              <span class="entry_type_deprecated">[deprecated] </span>
18239
18240
18241                <ul class="entry_type_enum">
18242                  <li>
18243                    <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18244                    <span class="entry_type_enum_optional">[optional]</span>
18245                    <span class="entry_type_enum_value">0x20</span>
18246                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18247buffers with 16-bit pixels.<wbr/></p>
18248<p>Buffers of this format are typically expected to have a
18249Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18250<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18251CFAs that are not representable by a format in
18252<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18253use this format.<wbr/></p>
18254<p>Buffers of this format will also follow the constraints given for
18255RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18256<p>This format is intended to give users access to the full contents
18257of the buffers coming directly from the image sensor prior to any
18258cropping or scaling operations,<wbr/> and all coordinate systems for
18259metadata used for this format are relative to the size of the
18260active region of the image sensor before any geometric distortion
18261correction has been applied (i.<wbr/>e.<wbr/>
18262<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
18263dimensions for this format are limited to the full dimensions of
18264the 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
18265<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
18266only supported output size).<wbr/></p>
18267<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18268the full set of performance guarantees.<wbr/></p></span>
18269                  </li>
18270                  <li>
18271                    <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18272                    <span class="entry_type_enum_optional">[optional]</span>
18273                    <span class="entry_type_enum_value">0x24</span>
18274                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18275<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18276as referred in public API) is a format for raw image buffers
18277coming from an image sensor.<wbr/></p>
18278<p>The actual structure of buffers of this format is
18279platform-specific,<wbr/> but must follow several constraints:</p>
18280<ol>
18281<li>No image post-processing operations may have been applied to
18282buffers of this type.<wbr/> These buffers contain raw image data coming
18283directly from the image sensor.<wbr/></li>
18284<li>If a buffer of this format is passed to the camera device for
18285reprocessing,<wbr/> the resulting images will be identical to the images
18286produced if the buffer had come directly from the sensor and was
18287processed with the same settings.<wbr/></li>
18288</ol>
18289<p>The intended use for this format is to allow access to the native
18290raw format buffers coming directly from the camera sensor without
18291any additional conversions or decrease in framerate.<wbr/></p>
18292<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
18293performance guarantees.<wbr/></p></span>
18294                  </li>
18295                  <li>
18296                    <span class="entry_type_enum_name">YV12 (v3.2)</span>
18297                    <span class="entry_type_enum_optional">[optional]</span>
18298                    <span class="entry_type_enum_value">0x32315659</span>
18299                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18300                  </li>
18301                  <li>
18302                    <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18303                    <span class="entry_type_enum_optional">[optional]</span>
18304                    <span class="entry_type_enum_value">0x11</span>
18305                    <span class="entry_type_enum_notes"><p>NV21</p></span>
18306                  </li>
18307                  <li>
18308                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18309                    <span class="entry_type_enum_value">0x22</span>
18310                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18311                  </li>
18312                  <li>
18313                    <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18314                    <span class="entry_type_enum_value">0x23</span>
18315                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18316                  </li>
18317                  <li>
18318                    <span class="entry_type_enum_name">BLOB (v3.2)</span>
18319                    <span class="entry_type_enum_value">0x21</span>
18320                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18321                  </li>
18322                </ul>
18323
18324            </td> <!-- entry_type -->
18325
18326            <td class="entry_description">
18327              <p>The list of image formats that are supported by this
18328camera device for output streams.<wbr/></p>
18329            </td>
18330
18331            <td class="entry_units">
18332            </td>
18333
18334            <td class="entry_range">
18335              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18336            </td>
18337
18338            <td class="entry_hal_version">
18339              <p>3.<wbr/>2</p>
18340            </td>
18341
18342            <td class="entry_tags">
18343              <ul class="entry_tags">
18344                  <li><a href="#tag_BC">BC</a></li>
18345              </ul>
18346            </td>
18347
18348          </tr>
18349          <tr class="entries_header">
18350            <th class="th_details" colspan="6">Details</th>
18351          </tr>
18352          <tr class="entry_cont">
18353            <td class="entry_details" colspan="6">
18354              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18355<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18356            </td>
18357          </tr>
18358
18359          <tr class="entries_header">
18360            <th class="th_details" colspan="6">HAL Implementation Details</th>
18361          </tr>
18362          <tr class="entry_cont">
18363            <td class="entry_details" colspan="6">
18364              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18365system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18366<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18367gralloc module will select a format based on the usage flags provided
18368by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18369usually used by preview and recording streams,<wbr/> where the application doesn't
18370need access the image data.<wbr/></p>
18371<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18372needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18373<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18374<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18375recommended that any information used by the camera device when
18376processing images is fully expressed by the result metadata
18377for that image buffer.<wbr/></p>
18378            </td>
18379          </tr>
18380
18381          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18382           <!-- end of entry -->
18383
18384
18385          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18386            <td class="entry_name
18387                entry_name_deprecated
18388             " rowspan="3">
18389              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18390            </td>
18391            <td class="entry_type">
18392                <span class="entry_type_name">int64</span>
18393                <span class="entry_type_container">x</span>
18394
18395                <span class="entry_type_array">
18396                  n
18397                </span>
18398              <span class="entry_type_visibility"> [hidden]</span>
18399
18400
18401
18402              <span class="entry_type_deprecated">[deprecated] </span>
18403
18404
18405
18406            </td> <!-- entry_type -->
18407
18408            <td class="entry_description">
18409              <p>The minimum frame duration that is supported
18410for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18411            </td>
18412
18413            <td class="entry_units">
18414              Nanoseconds
18415            </td>
18416
18417            <td class="entry_range">
18418              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18419              <p>TODO: Remove property.<wbr/></p>
18420            </td>
18421
18422            <td class="entry_hal_version">
18423              <p>3.<wbr/>2</p>
18424            </td>
18425
18426            <td class="entry_tags">
18427              <ul class="entry_tags">
18428                  <li><a href="#tag_BC">BC</a></li>
18429              </ul>
18430            </td>
18431
18432          </tr>
18433          <tr class="entries_header">
18434            <th class="th_details" colspan="6">Details</th>
18435          </tr>
18436          <tr class="entry_cont">
18437            <td class="entry_details" colspan="6">
18438              <p>This corresponds to the minimum steady-state frame duration when only
18439that JPEG stream is active and captured in a burst,<wbr/> with all
18440processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18441<p>When multiple streams are configured,<wbr/> the minimum
18442frame duration will be &gt;= max(individual stream min
18443durations)</p>
18444            </td>
18445          </tr>
18446
18447
18448          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18449           <!-- end of entry -->
18450
18451
18452          <tr class="entry" id="static_android.scaler.availableJpegSizes">
18453            <td class="entry_name
18454                entry_name_deprecated
18455             " rowspan="5">
18456              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18457            </td>
18458            <td class="entry_type">
18459                <span class="entry_type_name">int32</span>
18460                <span class="entry_type_container">x</span>
18461
18462                <span class="entry_type_array">
18463                  n x 2
18464                </span>
18465              <span class="entry_type_visibility"> [hidden as size]</span>
18466
18467
18468
18469              <span class="entry_type_deprecated">[deprecated] </span>
18470
18471
18472
18473            </td> <!-- entry_type -->
18474
18475            <td class="entry_description">
18476              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18477            </td>
18478
18479            <td class="entry_units">
18480            </td>
18481
18482            <td class="entry_range">
18483              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18484              <p>TODO: Remove property.<wbr/></p>
18485            </td>
18486
18487            <td class="entry_hal_version">
18488              <p>3.<wbr/>2</p>
18489            </td>
18490
18491            <td class="entry_tags">
18492              <ul class="entry_tags">
18493                  <li><a href="#tag_BC">BC</a></li>
18494              </ul>
18495            </td>
18496
18497          </tr>
18498          <tr class="entries_header">
18499            <th class="th_details" colspan="6">Details</th>
18500          </tr>
18501          <tr class="entry_cont">
18502            <td class="entry_details" colspan="6">
18503              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18504sensor 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>
18505            </td>
18506          </tr>
18507
18508          <tr class="entries_header">
18509            <th class="th_details" colspan="6">HAL Implementation Details</th>
18510          </tr>
18511          <tr class="entry_cont">
18512            <td class="entry_details" colspan="6">
18513              <p>The HAL must include sensor maximum resolution
18514(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18515and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18516            </td>
18517          </tr>
18518
18519          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18520           <!-- end of entry -->
18521
18522
18523          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18524            <td class="entry_name
18525             " rowspan="3">
18526              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18527            </td>
18528            <td class="entry_type">
18529                <span class="entry_type_name">float</span>
18530
18531              <span class="entry_type_visibility"> [public]</span>
18532
18533
18534              <span class="entry_type_hwlevel">[legacy] </span>
18535
18536
18537
18538
18539            </td> <!-- entry_type -->
18540
18541            <td class="entry_description">
18542              <p>The maximum ratio between both active area width
18543and crop region width,<wbr/> and active area height and
18544crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18545            </td>
18546
18547            <td class="entry_units">
18548              Zoom scale factor
18549            </td>
18550
18551            <td class="entry_range">
18552              <p>&gt;=1</p>
18553            </td>
18554
18555            <td class="entry_hal_version">
18556              <p>3.<wbr/>2</p>
18557            </td>
18558
18559            <td class="entry_tags">
18560              <ul class="entry_tags">
18561                  <li><a href="#tag_BC">BC</a></li>
18562              </ul>
18563            </td>
18564
18565          </tr>
18566          <tr class="entries_header">
18567            <th class="th_details" colspan="6">Details</th>
18568          </tr>
18569          <tr class="entry_cont">
18570            <td class="entry_details" colspan="6">
18571              <p>This represents the maximum amount of zooming possible by
18572the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18573window size.<wbr/></p>
18574<p>Crop regions that have a width or height that is smaller
18575than this ratio allows will be rounded up to the minimum
18576allowed size by the camera device.<wbr/></p>
18577            </td>
18578          </tr>
18579
18580
18581          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18582           <!-- end of entry -->
18583
18584
18585          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18586            <td class="entry_name
18587                entry_name_deprecated
18588             " rowspan="3">
18589              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18590            </td>
18591            <td class="entry_type">
18592                <span class="entry_type_name">int64</span>
18593                <span class="entry_type_container">x</span>
18594
18595                <span class="entry_type_array">
18596                  n
18597                </span>
18598              <span class="entry_type_visibility"> [hidden]</span>
18599
18600
18601
18602              <span class="entry_type_deprecated">[deprecated] </span>
18603
18604
18605
18606            </td> <!-- entry_type -->
18607
18608            <td class="entry_description">
18609              <p>For each available processed output size (defined in
18610<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18611minimum supportable frame duration for that size.<wbr/></p>
18612            </td>
18613
18614            <td class="entry_units">
18615              Nanoseconds
18616            </td>
18617
18618            <td class="entry_range">
18619              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18620            </td>
18621
18622            <td class="entry_hal_version">
18623              <p>3.<wbr/>2</p>
18624            </td>
18625
18626            <td class="entry_tags">
18627              <ul class="entry_tags">
18628                  <li><a href="#tag_BC">BC</a></li>
18629              </ul>
18630            </td>
18631
18632          </tr>
18633          <tr class="entries_header">
18634            <th class="th_details" colspan="6">Details</th>
18635          </tr>
18636          <tr class="entry_cont">
18637            <td class="entry_details" colspan="6">
18638              <p>This should correspond to the frame duration when only that processed
18639stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18640set to FAST.<wbr/></p>
18641<p>When multiple streams are configured,<wbr/> the minimum frame duration will
18642be &gt;= max(individual stream min durations).<wbr/></p>
18643            </td>
18644          </tr>
18645
18646
18647          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18648           <!-- end of entry -->
18649
18650
18651          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18652            <td class="entry_name
18653                entry_name_deprecated
18654             " rowspan="5">
18655              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18656            </td>
18657            <td class="entry_type">
18658                <span class="entry_type_name">int32</span>
18659                <span class="entry_type_container">x</span>
18660
18661                <span class="entry_type_array">
18662                  n x 2
18663                </span>
18664              <span class="entry_type_visibility"> [hidden as size]</span>
18665
18666
18667
18668              <span class="entry_type_deprecated">[deprecated] </span>
18669
18670
18671
18672            </td> <!-- entry_type -->
18673
18674            <td class="entry_description">
18675              <p>The resolutions available for use with
18676processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18677platform opaque YUV/<wbr/>RGB streams to the GPU or video
18678encoders.<wbr/></p>
18679            </td>
18680
18681            <td class="entry_units">
18682            </td>
18683
18684            <td class="entry_range">
18685              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18686            </td>
18687
18688            <td class="entry_hal_version">
18689              <p>3.<wbr/>2</p>
18690            </td>
18691
18692            <td class="entry_tags">
18693              <ul class="entry_tags">
18694                  <li><a href="#tag_BC">BC</a></li>
18695              </ul>
18696            </td>
18697
18698          </tr>
18699          <tr class="entries_header">
18700            <th class="th_details" colspan="6">Details</th>
18701          </tr>
18702          <tr class="entry_cont">
18703            <td class="entry_details" colspan="6">
18704              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18705<p>For a given use case,<wbr/> the actual maximum supported resolution
18706may be lower than what is listed here,<wbr/> depending on the destination
18707Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18708the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18709smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18710can provide.<wbr/></p>
18711<p>Please reference the documentation for the image data destination to
18712check if it limits the maximum size for image data.<wbr/></p>
18713            </td>
18714          </tr>
18715
18716          <tr class="entries_header">
18717            <th class="th_details" colspan="6">HAL Implementation Details</th>
18718          </tr>
18719          <tr class="entry_cont">
18720            <td class="entry_details" colspan="6">
18721              <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/>
18722the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
18723and each below resolution if it is smaller than or equal to the sensor
18724maximum resolution (if they are not listed in JPEG sizes already):</p>
18725<ul>
18726<li>240p (320 x 240)</li>
18727<li>480p (640 x 480)</li>
18728<li>720p (1280 x 720)</li>
18729<li>1080p (1920 x 1080)</li>
18730</ul>
18731<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/>
18732the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18733            </td>
18734          </tr>
18735
18736          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18737           <!-- end of entry -->
18738
18739
18740          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18741            <td class="entry_name
18742                entry_name_deprecated
18743             " rowspan="3">
18744              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18745            </td>
18746            <td class="entry_type">
18747                <span class="entry_type_name">int64</span>
18748                <span class="entry_type_container">x</span>
18749
18750                <span class="entry_type_array">
18751                  n
18752                </span>
18753              <span class="entry_type_visibility"> [system]</span>
18754
18755
18756
18757              <span class="entry_type_deprecated">[deprecated] </span>
18758
18759
18760
18761            </td> <!-- entry_type -->
18762
18763            <td class="entry_description">
18764              <p>For each available raw output size (defined in
18765<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18766supportable frame duration for that size.<wbr/></p>
18767            </td>
18768
18769            <td class="entry_units">
18770              Nanoseconds
18771            </td>
18772
18773            <td class="entry_range">
18774              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18775            </td>
18776
18777            <td class="entry_hal_version">
18778              <p>3.<wbr/>2</p>
18779            </td>
18780
18781            <td class="entry_tags">
18782              <ul class="entry_tags">
18783                  <li><a href="#tag_BC">BC</a></li>
18784              </ul>
18785            </td>
18786
18787          </tr>
18788          <tr class="entries_header">
18789            <th class="th_details" colspan="6">Details</th>
18790          </tr>
18791          <tr class="entry_cont">
18792            <td class="entry_details" colspan="6">
18793              <p>Should correspond to the frame duration when only the raw stream is
18794active.<wbr/></p>
18795<p>When multiple streams are configured,<wbr/> the minimum
18796frame duration will be &gt;= max(individual stream min
18797durations)</p>
18798            </td>
18799          </tr>
18800
18801
18802          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18803           <!-- end of entry -->
18804
18805
18806          <tr class="entry" id="static_android.scaler.availableRawSizes">
18807            <td class="entry_name
18808                entry_name_deprecated
18809             " rowspan="1">
18810              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18811            </td>
18812            <td class="entry_type">
18813                <span class="entry_type_name">int32</span>
18814                <span class="entry_type_container">x</span>
18815
18816                <span class="entry_type_array">
18817                  n x 2
18818                </span>
18819              <span class="entry_type_visibility"> [system as size]</span>
18820
18821
18822
18823              <span class="entry_type_deprecated">[deprecated] </span>
18824
18825
18826
18827            </td> <!-- entry_type -->
18828
18829            <td class="entry_description">
18830              <p>The resolutions available for use with raw
18831sensor output streams,<wbr/> listed as width,<wbr/>
18832height</p>
18833            </td>
18834
18835            <td class="entry_units">
18836            </td>
18837
18838            <td class="entry_range">
18839              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18840            </td>
18841
18842            <td class="entry_hal_version">
18843              <p>3.<wbr/>2</p>
18844            </td>
18845
18846            <td class="entry_tags">
18847            </td>
18848
18849          </tr>
18850
18851
18852          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18853           <!-- end of entry -->
18854
18855
18856          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18857            <td class="entry_name
18858             " rowspan="5">
18859              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18860            </td>
18861            <td class="entry_type">
18862                <span class="entry_type_name">int32</span>
18863
18864              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18865
18866
18867
18868
18869
18870
18871            </td> <!-- entry_type -->
18872
18873            <td class="entry_description">
18874              <p>The mapping of image formats that are supported by this
18875camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18876            </td>
18877
18878            <td class="entry_units">
18879            </td>
18880
18881            <td class="entry_range">
18882            </td>
18883
18884            <td class="entry_hal_version">
18885              <p>3.<wbr/>2</p>
18886            </td>
18887
18888            <td class="entry_tags">
18889              <ul class="entry_tags">
18890                  <li><a href="#tag_REPROC">REPROC</a></li>
18891              </ul>
18892            </td>
18893
18894          </tr>
18895          <tr class="entries_header">
18896            <th class="th_details" colspan="6">Details</th>
18897          </tr>
18898          <tr class="entry_cont">
18899            <td class="entry_details" colspan="6">
18900              <p>All camera devices with at least 1
18901<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18902available input format.<wbr/></p>
18903<p>The camera device will support the following map of formats,<wbr/>
18904if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18905<table>
18906<thead>
18907<tr>
18908<th align="left">Input Format</th>
18909<th align="left">Output Format</th>
18910<th align="left">Capability</th>
18911</tr>
18912</thead>
18913<tbody>
18914<tr>
18915<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18916<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18917<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18918</tr>
18919<tr>
18920<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18921<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>
18922<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18923</tr>
18924<tr>
18925<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>
18926<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18927<td align="left">YUV_<wbr/>REPROCESSING</td>
18928</tr>
18929<tr>
18930<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>
18931<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>
18932<td align="left">YUV_<wbr/>REPROCESSING</td>
18933</tr>
18934</tbody>
18935</table>
18936<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18937PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18938with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18939<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18940or 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>
18941<p>Attempting to configure an input stream with output streams not
18942listed as available in this map is not valid.<wbr/></p>
18943            </td>
18944          </tr>
18945
18946          <tr class="entries_header">
18947            <th class="th_details" colspan="6">HAL Implementation Details</th>
18948          </tr>
18949          <tr class="entry_cont">
18950            <td class="entry_details" colspan="6">
18951              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18952of the image format enumerations.<wbr/> The PRIVATE format refers to the
18953HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18954the actual format by using the gralloc usage flags.<wbr/>
18955For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18956processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18957See camera3.<wbr/>h for more details.<wbr/></p>
18958<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18959The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18960<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18961inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18962<p>A code sample to read/<wbr/>write this encoding (with a device that
18963supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18964and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18965<pre><code>//<wbr/> reading
18966int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18967for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18968    int32_<wbr/>t format = contents[i++];
18969    int32_<wbr/>t length = contents[i++];
18970    int32_<wbr/>t output_<wbr/>formats[length];
18971    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18972           length * sizeof(int32_<wbr/>t));
18973    i += length;
18974}
18975
18976//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18977int32_<wbr/>t[] contents = {
18978  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18979  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18980};
18981update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18982      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18983</code></pre>
18984<p>If the HAL claims to support any of the capabilities listed in the
18985above details,<wbr/> then it must also support all the input-output
18986combinations listed for that capability.<wbr/> It can optionally support
18987additional formats if it so chooses.<wbr/></p>
18988            </td>
18989          </tr>
18990
18991          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18992           <!-- end of entry -->
18993
18994
18995          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18996            <td class="entry_name
18997             " rowspan="5">
18998              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18999            </td>
19000            <td class="entry_type">
19001                <span class="entry_type_name entry_type_name_enum">int32</span>
19002                <span class="entry_type_container">x</span>
19003
19004                <span class="entry_type_array">
19005                  n x 4
19006                </span>
19007              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
19008
19009
19010              <span class="entry_type_hwlevel">[legacy] </span>
19011
19012
19013
19014                <ul class="entry_type_enum">
19015                  <li>
19016                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
19017                  </li>
19018                  <li>
19019                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
19020                  </li>
19021                </ul>
19022
19023            </td> <!-- entry_type -->
19024
19025            <td class="entry_description">
19026              <p>The available stream configurations that this
19027camera device supports
19028(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
19029            </td>
19030
19031            <td class="entry_units">
19032            </td>
19033
19034            <td class="entry_range">
19035            </td>
19036
19037            <td class="entry_hal_version">
19038              <p>3.<wbr/>2</p>
19039            </td>
19040
19041            <td class="entry_tags">
19042            </td>
19043
19044          </tr>
19045          <tr class="entries_header">
19046            <th class="th_details" colspan="6">Details</th>
19047          </tr>
19048          <tr class="entry_cont">
19049            <td class="entry_details" colspan="6">
19050              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
19051tuples.<wbr/></p>
19052<p>For a given use case,<wbr/> the actual maximum supported resolution
19053may be lower than what is listed here,<wbr/> depending on the destination
19054Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19055the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19056smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19057can provide.<wbr/></p>
19058<p>Please reference the documentation for the image data destination to
19059check if it limits the maximum size for image data.<wbr/></p>
19060<p>Not all output formats may be supported in a configuration with
19061an input stream of a particular format.<wbr/> For more details,<wbr/> see
19062<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19063<p>The following table describes the minimum required output stream
19064configurations based on the hardware level
19065(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19066<table>
19067<thead>
19068<tr>
19069<th align="center">Format</th>
19070<th align="center">Size</th>
19071<th align="center">Hardware Level</th>
19072<th align="center">Notes</th>
19073</tr>
19074</thead>
19075<tbody>
19076<tr>
19077<td align="center">JPEG</td>
19078<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19079<td align="center">Any</td>
19080<td align="center"></td>
19081</tr>
19082<tr>
19083<td align="center">JPEG</td>
19084<td align="center">1920x1080 (1080p)</td>
19085<td align="center">Any</td>
19086<td align="center">if 1080p &lt;= activeArraySize</td>
19087</tr>
19088<tr>
19089<td align="center">JPEG</td>
19090<td align="center">1280x720 (720)</td>
19091<td align="center">Any</td>
19092<td align="center">if 720p &lt;= activeArraySize</td>
19093</tr>
19094<tr>
19095<td align="center">JPEG</td>
19096<td align="center">640x480 (480p)</td>
19097<td align="center">Any</td>
19098<td align="center">if 480p &lt;= activeArraySize</td>
19099</tr>
19100<tr>
19101<td align="center">JPEG</td>
19102<td align="center">320x240 (240p)</td>
19103<td align="center">Any</td>
19104<td align="center">if 240p &lt;= activeArraySize</td>
19105</tr>
19106<tr>
19107<td align="center">YUV_<wbr/>420_<wbr/>888</td>
19108<td align="center">all output sizes available for JPEG</td>
19109<td align="center">FULL</td>
19110<td align="center"></td>
19111</tr>
19112<tr>
19113<td align="center">YUV_<wbr/>420_<wbr/>888</td>
19114<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19115<td align="center">LIMITED</td>
19116<td align="center"></td>
19117</tr>
19118<tr>
19119<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19120<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19121<td align="center">Any</td>
19122<td align="center"></td>
19123</tr>
19124</tbody>
19125</table>
19126<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19127mandatory stream configurations on a per-capability basis.<wbr/></p>
19128            </td>
19129          </tr>
19130
19131          <tr class="entries_header">
19132            <th class="th_details" colspan="6">HAL Implementation Details</th>
19133          </tr>
19134          <tr class="entry_cont">
19135            <td class="entry_details" colspan="6">
19136              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19137of sensor maximum resolution for JPEG formats (regardless of hardware
19138level).<wbr/></p>
19139<p>(The following is a rewording of the above required table):</p>
19140<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19141<ul>
19142<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19143(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19144(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/>
19145it does not have to be included in the supported JPEG sizes.<wbr/></li>
19146<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19147the dimensions being a multiple of 16.<wbr/></li>
19148</ul>
19149<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19150However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19151resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19152additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19153if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19154ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
191553264x2448.<wbr/></p>
19156<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/>
19157the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19158here as output streams.<wbr/></p>
19159<p>It must also include each below resolution if it is smaller than or
19160equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19161formats),<wbr/> as output streams:</p>
19162<ul>
19163<li>240p (320 x 240)</li>
19164<li>480p (640 x 480)</li>
19165<li>720p (1280 x 720)</li>
19166<li>1080p (1920 x 1080)</li>
19167</ul>
19168<p>For LIMITED capability devices
19169(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19170the HAL only has to list up to the maximum video size
19171supported by the device.<wbr/></p>
19172<p>Regardless of hardware level,<wbr/> every output resolution available for
19173YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19174<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19175<ul>
19176<li>availableFormats</li>
19177<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19178</ul>
19179            </td>
19180          </tr>
19181
19182          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19183           <!-- end of entry -->
19184
19185
19186          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19187            <td class="entry_name
19188             " rowspan="3">
19189              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19190            </td>
19191            <td class="entry_type">
19192                <span class="entry_type_name">int64</span>
19193                <span class="entry_type_container">x</span>
19194
19195                <span class="entry_type_array">
19196                  4 x n
19197                </span>
19198              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19199
19200
19201              <span class="entry_type_hwlevel">[legacy] </span>
19202
19203
19204
19205
19206            </td> <!-- entry_type -->
19207
19208            <td class="entry_description">
19209              <p>This lists the minimum frame duration for each
19210format/<wbr/>size combination.<wbr/></p>
19211            </td>
19212
19213            <td class="entry_units">
19214              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19215            </td>
19216
19217            <td class="entry_range">
19218            </td>
19219
19220            <td class="entry_hal_version">
19221              <p>3.<wbr/>2</p>
19222            </td>
19223
19224            <td class="entry_tags">
19225              <ul class="entry_tags">
19226                  <li><a href="#tag_V1">V1</a></li>
19227              </ul>
19228            </td>
19229
19230          </tr>
19231          <tr class="entries_header">
19232            <th class="th_details" colspan="6">Details</th>
19233          </tr>
19234          <tr class="entry_cont">
19235            <td class="entry_details" colspan="6">
19236              <p>This should correspond to the frame duration when only that
19237stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19238set to either OFF or FAST.<wbr/></p>
19239<p>When multiple streams are used in a request,<wbr/> the minimum frame
19240duration will be max(individual stream min durations).<wbr/></p>
19241<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19242is the same regardless of whether the stream is input or output.<wbr/></p>
19243<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19244<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19245calculating the max frame rate.<wbr/></p>
19246            </td>
19247          </tr>
19248
19249
19250          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19251           <!-- end of entry -->
19252
19253
19254          <tr class="entry" id="static_android.scaler.availableStallDurations">
19255            <td class="entry_name
19256             " rowspan="5">
19257              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19258            </td>
19259            <td class="entry_type">
19260                <span class="entry_type_name">int64</span>
19261                <span class="entry_type_container">x</span>
19262
19263                <span class="entry_type_array">
19264                  4 x n
19265                </span>
19266              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19267
19268
19269              <span class="entry_type_hwlevel">[legacy] </span>
19270
19271
19272
19273
19274            </td> <!-- entry_type -->
19275
19276            <td class="entry_description">
19277              <p>This lists the maximum stall duration for each
19278output format/<wbr/>size combination.<wbr/></p>
19279            </td>
19280
19281            <td class="entry_units">
19282              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19283            </td>
19284
19285            <td class="entry_range">
19286            </td>
19287
19288            <td class="entry_hal_version">
19289              <p>3.<wbr/>2</p>
19290            </td>
19291
19292            <td class="entry_tags">
19293              <ul class="entry_tags">
19294                  <li><a href="#tag_V1">V1</a></li>
19295              </ul>
19296            </td>
19297
19298          </tr>
19299          <tr class="entries_header">
19300            <th class="th_details" colspan="6">Details</th>
19301          </tr>
19302          <tr class="entry_cont">
19303            <td class="entry_details" colspan="6">
19304              <p>A stall duration is how much extra time would get added
19305to the normal minimum frame duration for a repeating request
19306that has streams with non-zero stall.<wbr/></p>
19307<p>For example,<wbr/> consider JPEG captures which have the following
19308characteristics:</p>
19309<ul>
19310<li>JPEG streams act like processed YUV streams in requests for which
19311they are not included; in requests in which they are directly
19312referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19313JPEG stream requires the underlying YUV data to always be ready for
19314use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19315frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19316<li>The JPEG processor can run concurrently to the rest of the camera
19317pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19318</ul>
19319<p>In other words,<wbr/> using a repeating YUV request would result
19320in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19321JPEG request is submitted periodically,<wbr/> the frame rate will stay
19322at 30 FPS (as long as we wait for the previous JPEG to return each
19323time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19324the frame rate will drop from 30 FPS.<wbr/></p>
19325<p>In general,<wbr/> submitting a new request with a non-0 stall time
19326stream will <em>not</em> cause a frame rate drop unless there are still
19327outstanding buffers for that stream from previous requests.<wbr/></p>
19328<p>Submitting a repeating request with streams (call this <code>S</code>)
19329is the same as setting the minimum frame duration from
19330the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19331the maximum stall duration for <code>S</code>.<wbr/></p>
19332<p>If interleaving requests with and without a stall duration,<wbr/>
19333a request will stall by the maximum of the remaining times
19334for each can-stall stream with outstanding buffers.<wbr/></p>
19335<p>This means that a stalling request will not have an exposure start
19336until the stall has completed.<wbr/></p>
19337<p>This should correspond to the stall duration when only that stream is
19338active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19339or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19340effectively results in an indeterminate stall duration for all
19341streams in a request (the regular stall calculation rules are
19342ignored).<wbr/></p>
19343<p>The following formats may always have a stall duration:</p>
19344<ul>
19345<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19346<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19347</ul>
19348<p>The following formats will never have a stall duration:</p>
19349<ul>
19350<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>
19351<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19352<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19353</ul>
19354<p>All other formats may or may not have an allowed stall duration on
19355a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19356for more details.<wbr/></p>
19357<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19358calculating the max frame rate (absent stalls).<wbr/></p>
19359            </td>
19360          </tr>
19361
19362          <tr class="entries_header">
19363            <th class="th_details" colspan="6">HAL Implementation Details</th>
19364          </tr>
19365          <tr class="entry_cont">
19366            <td class="entry_details" colspan="6">
19367              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19368(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19369and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19370            </td>
19371          </tr>
19372
19373          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19374           <!-- end of entry -->
19375
19376
19377          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19378            <td class="entry_name
19379             " rowspan="5">
19380              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19381            </td>
19382            <td class="entry_type">
19383                <span class="entry_type_name">int32</span>
19384
19385              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19386
19387              <span class="entry_type_synthetic">[synthetic] </span>
19388
19389              <span class="entry_type_hwlevel">[legacy] </span>
19390
19391
19392
19393
19394            </td> <!-- entry_type -->
19395
19396            <td class="entry_description">
19397              <p>The available stream configurations that this
19398camera device supports; also includes the minimum frame durations
19399and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19400            </td>
19401
19402            <td class="entry_units">
19403            </td>
19404
19405            <td class="entry_range">
19406            </td>
19407
19408            <td class="entry_hal_version">
19409              <p>3.<wbr/>2</p>
19410            </td>
19411
19412            <td class="entry_tags">
19413            </td>
19414
19415          </tr>
19416          <tr class="entries_header">
19417            <th class="th_details" colspan="6">Details</th>
19418          </tr>
19419          <tr class="entry_cont">
19420            <td class="entry_details" colspan="6">
19421              <p>All camera devices will support sensor maximum resolution (defined by
19422<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>
19423<p>For a given use case,<wbr/> the actual maximum supported resolution
19424may be lower than what is listed here,<wbr/> depending on the destination
19425Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19426the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19427smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19428can provide.<wbr/></p>
19429<p>Please reference the documentation for the image data destination to
19430check if it limits the maximum size for image data.<wbr/></p>
19431<p>The following table describes the minimum required output stream
19432configurations based on the hardware level
19433(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19434<table>
19435<thead>
19436<tr>
19437<th align="center">Format</th>
19438<th align="center">Size</th>
19439<th align="center">Hardware Level</th>
19440<th align="center">Notes</th>
19441</tr>
19442</thead>
19443<tbody>
19444<tr>
19445<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19446<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19447<td align="center">Any</td>
19448<td align="center"></td>
19449</tr>
19450<tr>
19451<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19452<td align="center">1920x1080 (1080p)</td>
19453<td align="center">Any</td>
19454<td align="center">if 1080p &lt;= activeArraySize</td>
19455</tr>
19456<tr>
19457<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19458<td align="center">1280x720 (720p)</td>
19459<td align="center">Any</td>
19460<td align="center">if 720p &lt;= activeArraySize</td>
19461</tr>
19462<tr>
19463<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19464<td align="center">640x480 (480p)</td>
19465<td align="center">Any</td>
19466<td align="center">if 480p &lt;= activeArraySize</td>
19467</tr>
19468<tr>
19469<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19470<td align="center">320x240 (240p)</td>
19471<td align="center">Any</td>
19472<td align="center">if 240p &lt;= activeArraySize</td>
19473</tr>
19474<tr>
19475<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>
19476<td align="center">all output sizes available for JPEG</td>
19477<td align="center">FULL</td>
19478<td align="center"></td>
19479</tr>
19480<tr>
19481<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>
19482<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19483<td align="center">LIMITED</td>
19484<td align="center"></td>
19485</tr>
19486<tr>
19487<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19488<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19489<td align="center">Any</td>
19490<td align="center"></td>
19491</tr>
19492</tbody>
19493</table>
19494<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
19495stream configurations on a per-capability basis.<wbr/></p>
19496<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19497<ul>
19498<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19499(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19500(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/>
19501it does not have to be included in the supported JPEG sizes.<wbr/></li>
19502<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19503the dimensions being a multiple of 16.<wbr/>
19504Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19505However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19506resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19507additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19508if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19509ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
195103264x2448.<wbr/></li>
19511</ul>
19512            </td>
19513          </tr>
19514
19515          <tr class="entries_header">
19516            <th class="th_details" colspan="6">HAL Implementation Details</th>
19517          </tr>
19518          <tr class="entry_cont">
19519            <td class="entry_details" colspan="6">
19520              <p>Do not set this property directly
19521(it is synthetic and will not be available at the HAL layer);
19522set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19523<p>Not all output formats may be supported in a configuration with
19524an input stream of a particular format.<wbr/> For more details,<wbr/> see
19525<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19526<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19527of sensor maximum resolution for JPEG formats (regardless of hardware
19528level).<wbr/></p>
19529<p>(The following is a rewording of the above required table):</p>
19530<p>The HAL must include sensor maximum resolution (defined by
19531<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19532<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/>
19533the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19534here as output streams.<wbr/></p>
19535<p>It must also include each below resolution if it is smaller than or
19536equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19537formats),<wbr/> as output streams:</p>
19538<ul>
19539<li>240p (320 x 240)</li>
19540<li>480p (640 x 480)</li>
19541<li>720p (1280 x 720)</li>
19542<li>1080p (1920 x 1080)</li>
19543</ul>
19544<p>For LIMITED capability devices
19545(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19546the HAL only has to list up to the maximum video size
19547supported by the device.<wbr/></p>
19548<p>Regardless of hardware level,<wbr/> every output resolution available for
19549YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19550<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19551<ul>
19552<li>availableFormats</li>
19553<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19554</ul>
19555            </td>
19556          </tr>
19557
19558          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19559           <!-- end of entry -->
19560
19561
19562          <tr class="entry" id="static_android.scaler.croppingType">
19563            <td class="entry_name
19564             " rowspan="3">
19565              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19566            </td>
19567            <td class="entry_type">
19568                <span class="entry_type_name entry_type_name_enum">byte</span>
19569
19570              <span class="entry_type_visibility"> [public]</span>
19571
19572
19573              <span class="entry_type_hwlevel">[legacy] </span>
19574
19575
19576
19577                <ul class="entry_type_enum">
19578                  <li>
19579                    <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19580                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19581                  </li>
19582                  <li>
19583                    <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19584                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19585                  </li>
19586                </ul>
19587
19588            </td> <!-- entry_type -->
19589
19590            <td class="entry_description">
19591              <p>The crop type that this camera device supports.<wbr/></p>
19592            </td>
19593
19594            <td class="entry_units">
19595            </td>
19596
19597            <td class="entry_range">
19598            </td>
19599
19600            <td class="entry_hal_version">
19601              <p>3.<wbr/>2</p>
19602            </td>
19603
19604            <td class="entry_tags">
19605            </td>
19606
19607          </tr>
19608          <tr class="entries_header">
19609            <th class="th_details" colspan="6">Details</th>
19610          </tr>
19611          <tr class="entry_cont">
19612            <td class="entry_details" colspan="6">
19613              <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
19614device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19615crop 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>)
19616and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19617final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19618<p>Camera devices that support FREEFORM cropping will support any crop region that
19619is inside of the active array.<wbr/> The camera device will apply the same crop region and
19620return 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>
19621<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19622            </td>
19623          </tr>
19624
19625
19626          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19627           <!-- end of entry -->
19628
19629
19630
19631      <!-- end of kind -->
19632      </tbody>
19633      <tr><td colspan="7" class="kind">dynamic</td></tr>
19634
19635      <thead class="entries_header">
19636        <tr>
19637          <th class="th_name">Property Name</th>
19638          <th class="th_type">Type</th>
19639          <th class="th_description">Description</th>
19640          <th class="th_units">Units</th>
19641          <th class="th_range">Range</th>
19642          <th class="th_hal_version">Initial HIDL HAL version</th>
19643          <th class="th_tags">Tags</th>
19644        </tr>
19645      </thead>
19646
19647      <tbody>
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658          <tr class="entry" id="dynamic_android.scaler.cropRegion">
19659            <td class="entry_name
19660             " rowspan="5">
19661              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19662            </td>
19663            <td class="entry_type">
19664                <span class="entry_type_name">int32</span>
19665                <span class="entry_type_container">x</span>
19666
19667                <span class="entry_type_array">
19668                  4
19669                </span>
19670              <span class="entry_type_visibility"> [public as rectangle]</span>
19671
19672
19673              <span class="entry_type_hwlevel">[legacy] </span>
19674
19675
19676
19677
19678            </td> <!-- entry_type -->
19679
19680            <td class="entry_description">
19681              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19682            </td>
19683
19684            <td class="entry_units">
19685              Pixel coordinates relative to
19686          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19687            </td>
19688
19689            <td class="entry_range">
19690            </td>
19691
19692            <td class="entry_hal_version">
19693              <p>3.<wbr/>2</p>
19694            </td>
19695
19696            <td class="entry_tags">
19697              <ul class="entry_tags">
19698                  <li><a href="#tag_BC">BC</a></li>
19699              </ul>
19700            </td>
19701
19702          </tr>
19703          <tr class="entries_header">
19704            <th class="th_details" colspan="6">Details</th>
19705          </tr>
19706          <tr class="entry_cont">
19707            <td class="entry_details" colspan="6">
19708              <p>This control can be used to implement digital zoom.<wbr/></p>
19709<p>The crop region coordinate system is based off
19710<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
19711top-left corner of the sensor active array.<wbr/></p>
19712<p>Output streams use this rectangle to produce their output,<wbr/>
19713cropping to a smaller region if necessary to maintain the
19714stream's aspect ratio,<wbr/> then scaling the sensor input to
19715match the output's configured resolution.<wbr/></p>
19716<p>The crop region is applied after the RAW to other color
19717space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19718(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19719croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19720<p>For non-raw streams,<wbr/> any additional per-stream cropping will
19721be done to maximize the final pixel area of the stream.<wbr/></p>
19722<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19723ratio,<wbr/> then 4:3 streams will use the exact crop
19724region.<wbr/> 16:9 streams will further crop vertically
19725(letterbox).<wbr/></p>
19726<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19727outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19728streams will match exactly.<wbr/> These additional crops will
19729be centered within the crop region.<wbr/></p>
19730<p>The width and height of the crop region cannot
19731be set to be smaller than
19732<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
19733<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>
19734<p>The camera device may adjust the crop region to account
19735for rounding and other hardware requirements; the final
19736crop region used will be included in the output capture
19737result.<wbr/></p>
19738            </td>
19739          </tr>
19740
19741          <tr class="entries_header">
19742            <th class="th_details" colspan="6">HAL Implementation Details</th>
19743          </tr>
19744          <tr class="entry_cont">
19745            <td class="entry_details" colspan="6">
19746              <p>The output streams must maintain square pixels at all
19747times,<wbr/> no matter what the relative aspect ratios of the
19748crop region and the stream are.<wbr/>  Negative values for
19749corner are allowed for raw output if full pixel array is
19750larger than active pixel array.<wbr/> Width and height may be
19751rounded to nearest larger supportable width,<wbr/> especially
19752for raw output,<wbr/> where only a few fixed scales may be
19753possible.<wbr/></p>
19754<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19755size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19756<ul>
19757<li>
19758<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19759array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19760<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>
19761<ol>
19762<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19763cropped pixel area by (tx,<wbr/> ty),<wbr/>
19764where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19765and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19766(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19767<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19768<li>Scale the width and height of requested cropRegion with scaling factor of
19769sensor<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
19770respectively.<wbr/>
19771Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19772with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19773follow the general cropping rule for this new cropRegion and effective active
19774array size.<wbr/></li>
19775</ol>
19776</li>
19777<li>
19778<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/>
19779The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19780The reported cropRegion may be slightly different with the requested cropRegion since
19781the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19782hardware limitations.<wbr/></p>
19783</li>
19784</ul>
19785<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19786            </td>
19787          </tr>
19788
19789          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19790           <!-- end of entry -->
19791
19792
19793
19794      <!-- end of kind -->
19795      </tbody>
19796
19797  <!-- end of section -->
19798  <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19799
19800
19801      <tr><td colspan="7" class="kind">controls</td></tr>
19802
19803      <thead class="entries_header">
19804        <tr>
19805          <th class="th_name">Property Name</th>
19806          <th class="th_type">Type</th>
19807          <th class="th_description">Description</th>
19808          <th class="th_units">Units</th>
19809          <th class="th_range">Range</th>
19810          <th class="th_hal_version">Initial HIDL HAL version</th>
19811          <th class="th_tags">Tags</th>
19812        </tr>
19813      </thead>
19814
19815      <tbody>
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826          <tr class="entry" id="controls_android.sensor.exposureTime">
19827            <td class="entry_name
19828             " rowspan="3">
19829              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19830            </td>
19831            <td class="entry_type">
19832                <span class="entry_type_name">int64</span>
19833
19834              <span class="entry_type_visibility"> [public]</span>
19835
19836
19837              <span class="entry_type_hwlevel">[full] </span>
19838
19839
19840
19841
19842            </td> <!-- entry_type -->
19843
19844            <td class="entry_description">
19845              <p>Duration each pixel is exposed to
19846light.<wbr/></p>
19847            </td>
19848
19849            <td class="entry_units">
19850              Nanoseconds
19851            </td>
19852
19853            <td class="entry_range">
19854              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19855            </td>
19856
19857            <td class="entry_hal_version">
19858              <p>3.<wbr/>2</p>
19859            </td>
19860
19861            <td class="entry_tags">
19862              <ul class="entry_tags">
19863                  <li><a href="#tag_V1">V1</a></li>
19864              </ul>
19865            </td>
19866
19867          </tr>
19868          <tr class="entries_header">
19869            <th class="th_details" colspan="6">Details</th>
19870          </tr>
19871          <tr class="entry_cont">
19872            <td class="entry_details" colspan="6">
19873              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19874duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19875The final exposure time used will be available in the output capture result.<wbr/></p>
19876<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
19877OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19878            </td>
19879          </tr>
19880
19881
19882          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19883           <!-- end of entry -->
19884
19885
19886          <tr class="entry" id="controls_android.sensor.frameDuration">
19887            <td class="entry_name
19888             " rowspan="5">
19889              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19890            </td>
19891            <td class="entry_type">
19892                <span class="entry_type_name">int64</span>
19893
19894              <span class="entry_type_visibility"> [public]</span>
19895
19896
19897              <span class="entry_type_hwlevel">[full] </span>
19898
19899
19900
19901
19902            </td> <!-- entry_type -->
19903
19904            <td class="entry_description">
19905              <p>Duration from start of frame exposure to
19906start of next frame exposure.<wbr/></p>
19907            </td>
19908
19909            <td class="entry_units">
19910              Nanoseconds
19911            </td>
19912
19913            <td class="entry_range">
19914              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
19915The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19916            </td>
19917
19918            <td class="entry_hal_version">
19919              <p>3.<wbr/>2</p>
19920            </td>
19921
19922            <td class="entry_tags">
19923              <ul class="entry_tags">
19924                  <li><a href="#tag_V1">V1</a></li>
19925              </ul>
19926            </td>
19927
19928          </tr>
19929          <tr class="entries_header">
19930            <th class="th_details" colspan="6">Details</th>
19931          </tr>
19932          <tr class="entry_cont">
19933            <td class="entry_details" colspan="6">
19934              <p>The maximum frame rate that can be supported by a camera subsystem is
19935a function of many factors:</p>
19936<ul>
19937<li>Requested resolutions of output image streams</li>
19938<li>Availability of binning /<wbr/> skipping modes on the imager</li>
19939<li>The bandwidth of the imager interface</li>
19940<li>The bandwidth of the various ISP processing blocks</li>
19941</ul>
19942<p>Since these factors can vary greatly between different ISPs and
19943sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19944restrictions with as simple a model as possible.<wbr/></p>
19945<p>The model presented has the following characteristics:</p>
19946<ul>
19947<li>The image sensor is always configured to output the smallest
19948resolution possible given the application's requested output stream
19949sizes.<wbr/>  The smallest resolution is defined as being at least as large
19950as the largest requested output stream size; the camera pipeline must
19951never digitally upsample sensor data when the crop region covers the
19952whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19953resolutions are configured,<wbr/> the sensor can provide a higher frame
19954rate.<wbr/></li>
19955<li>Since any request may use any or all the currently configured
19956output streams,<wbr/> the sensor and ISP must be configured to support
19957scaling a single capture to all the streams at the same time.<wbr/>  This
19958means the camera pipeline must be ready to produce the largest
19959requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19960frame rate of a given configured stream set is governed only by the
19961largest requested stream resolution.<wbr/></li>
19962<li>Using more than one output stream in a request does not affect the
19963frame duration.<wbr/></li>
19964<li>Certain format-streams may need to do additional background processing
19965before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19966can run concurrently to the rest of the camera pipeline,<wbr/> but
19967cannot process more than 1 capture at a time.<wbr/></li>
19968</ul>
19969<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19970<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19971These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19972possible for a given stream configuration.<wbr/></p>
19973<p>Specifically,<wbr/> the application can use the following rules to
19974determine the minimum frame duration it can request from the camera
19975device:</p>
19976<ol>
19977<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19978<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19979(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19980<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19981out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
19982</ol>
19983<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>
19984using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19985state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19986this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19987<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19988new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19989<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19990buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19991<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
19992<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
19993OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19994            </td>
19995          </tr>
19996
19997          <tr class="entries_header">
19998            <th class="th_details" colspan="6">HAL Implementation Details</th>
19999          </tr>
20000          <tr class="entry_cont">
20001            <td class="entry_details" colspan="6">
20002              <p>For more details about stalling,<wbr/> see
20003<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20004            </td>
20005          </tr>
20006
20007          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20008           <!-- end of entry -->
20009
20010
20011          <tr class="entry" id="controls_android.sensor.sensitivity">
20012            <td class="entry_name
20013             " rowspan="5">
20014              android.<wbr/>sensor.<wbr/>sensitivity
20015            </td>
20016            <td class="entry_type">
20017                <span class="entry_type_name">int32</span>
20018
20019              <span class="entry_type_visibility"> [public]</span>
20020
20021
20022              <span class="entry_type_hwlevel">[full] </span>
20023
20024
20025
20026
20027            </td> <!-- entry_type -->
20028
20029            <td class="entry_description">
20030              <p>The amount of gain applied to sensor data
20031before processing.<wbr/></p>
20032            </td>
20033
20034            <td class="entry_units">
20035              ISO arithmetic units
20036            </td>
20037
20038            <td class="entry_range">
20039              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20040            </td>
20041
20042            <td class="entry_hal_version">
20043              <p>3.<wbr/>2</p>
20044            </td>
20045
20046            <td class="entry_tags">
20047              <ul class="entry_tags">
20048                  <li><a href="#tag_V1">V1</a></li>
20049              </ul>
20050            </td>
20051
20052          </tr>
20053          <tr class="entries_header">
20054            <th class="th_details" colspan="6">Details</th>
20055          </tr>
20056          <tr class="entry_cont">
20057            <td class="entry_details" colspan="6">
20058              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20059as defined in ISO 12232:2006.<wbr/></p>
20060<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
20061if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20062is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20063<p>If the camera device cannot apply the exact sensitivity
20064requested,<wbr/> it will reduce the gain to the nearest supported
20065value.<wbr/> The final sensitivity used will be available in the
20066output capture result.<wbr/></p>
20067<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
20068OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20069            </td>
20070          </tr>
20071
20072          <tr class="entries_header">
20073            <th class="th_details" colspan="6">HAL Implementation Details</th>
20074          </tr>
20075          <tr class="entry_cont">
20076            <td class="entry_details" colspan="6">
20077              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20078            </td>
20079          </tr>
20080
20081          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20082           <!-- end of entry -->
20083
20084
20085          <tr class="entry" id="controls_android.sensor.testPatternData">
20086            <td class="entry_name
20087             " rowspan="5">
20088              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20089            </td>
20090            <td class="entry_type">
20091                <span class="entry_type_name">int32</span>
20092                <span class="entry_type_container">x</span>
20093
20094                <span class="entry_type_array">
20095                  4
20096                </span>
20097              <span class="entry_type_visibility"> [public]</span>
20098
20099
20100
20101
20102
20103
20104            </td> <!-- entry_type -->
20105
20106            <td class="entry_description">
20107              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20108when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20109            </td>
20110
20111            <td class="entry_units">
20112            </td>
20113
20114            <td class="entry_range">
20115            </td>
20116
20117            <td class="entry_hal_version">
20118              <p>3.<wbr/>2</p>
20119            </td>
20120
20121            <td class="entry_tags">
20122            </td>
20123
20124          </tr>
20125          <tr class="entries_header">
20126            <th class="th_details" colspan="6">Details</th>
20127          </tr>
20128          <tr class="entry_cont">
20129            <td class="entry_details" colspan="6">
20130              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20131The camera device then uses the most significant X bits
20132that correspond to how many bits are in its Bayer raw sensor
20133output.<wbr/></p>
20134<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2013510 most significant bits from each color channel.<wbr/></p>
20136            </td>
20137          </tr>
20138
20139          <tr class="entries_header">
20140            <th class="th_details" colspan="6">HAL Implementation Details</th>
20141          </tr>
20142          <tr class="entry_cont">
20143            <td class="entry_details" colspan="6">
20144
20145            </td>
20146          </tr>
20147
20148          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20149           <!-- end of entry -->
20150
20151
20152          <tr class="entry" id="controls_android.sensor.testPatternMode">
20153            <td class="entry_name
20154             " rowspan="5">
20155              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20156            </td>
20157            <td class="entry_type">
20158                <span class="entry_type_name entry_type_name_enum">int32</span>
20159
20160              <span class="entry_type_visibility"> [public]</span>
20161
20162
20163
20164
20165
20166                <ul class="entry_type_enum">
20167                  <li>
20168                    <span class="entry_type_enum_name">OFF (v3.2)</span>
20169                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20170device returns captures from the image sensor.<wbr/></p>
20171<p>This is the default if the key is not set.<wbr/></p></span>
20172                  </li>
20173                  <li>
20174                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20175                    <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
20176respective color channel provided in
20177<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20178<p>For example:</p>
20179<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20180</code></pre>
20181<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20182<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20183</code></pre>
20184<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20185are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20186                  </li>
20187                  <li>
20188                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20189                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20190<p>The vertical bars (left-to-right) are as follows:</p>
20191<ul>
20192<li>100% white</li>
20193<li>yellow</li>
20194<li>cyan</li>
20195<li>green</li>
20196<li>magenta</li>
20197<li>red</li>
20198<li>blue</li>
20199<li>black</li>
20200</ul>
20201<p>In general the image would look like the following:</p>
20202<pre><code>W Y C G M R B K
20203W Y C G M R B K
20204W Y C G M R B K
20205W Y C G M R B K
20206W Y C G M R B K
20207.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20208.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20209.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20210
20211(B = Blue,<wbr/> K = Black)
20212</code></pre>
20213<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20214When this is not possible,<wbr/> the bar size should be rounded
20215down to the nearest integer and the pattern can repeat
20216on the right side.<wbr/></p>
20217<p>Each bar's height must always take up the full sensor
20218pixel array height.<wbr/></p>
20219<p>Each pixel in this test pattern must be set to either
202200% intensity or 100% intensity.<wbr/></p></span>
20221                  </li>
20222                  <li>
20223                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20224                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20225each bar should start at its specified color at the top,<wbr/>
20226and fade to gray at the bottom.<wbr/></p>
20227<p>Furthermore each bar is further subdivided into a left and
20228right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20229and the right half should have a quantized gradient.<wbr/></p>
20230<p>In particular,<wbr/> the right half's should consist of blocks of the
20231same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20232<p>The least significant bits in the quantized gradient should
20233be copied from the most significant bits of the smooth gradient.<wbr/></p>
20234<p>The height of each bar should always be a multiple of 128.<wbr/>
20235When this is not the case,<wbr/> the pattern should repeat at the bottom
20236of the image.<wbr/></p></span>
20237                  </li>
20238                  <li>
20239                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
20240                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20241generated from a PN9 512-bit sequence (typically implemented
20242in hardware with a linear feedback shift register).<wbr/></p>
20243<p>The generator should be reset at the beginning of each frame,<wbr/>
20244and thus each subsequent raw frame with this test pattern should
20245be exactly the same as the last.<wbr/></p></span>
20246                  </li>
20247                  <li>
20248                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20249                    <span class="entry_type_enum_value">256</span>
20250                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20251available only on this camera device are at least this numeric
20252value.<wbr/></p>
20253<p>All of the custom test patterns will be static
20254(that is the raw image must not vary from frame to frame).<wbr/></p></span>
20255                  </li>
20256                </ul>
20257
20258            </td> <!-- entry_type -->
20259
20260            <td class="entry_description">
20261              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20262doing a real exposure from the camera.<wbr/></p>
20263            </td>
20264
20265            <td class="entry_units">
20266            </td>
20267
20268            <td class="entry_range">
20269              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20270            </td>
20271
20272            <td class="entry_hal_version">
20273              <p>3.<wbr/>2</p>
20274            </td>
20275
20276            <td class="entry_tags">
20277            </td>
20278
20279          </tr>
20280          <tr class="entries_header">
20281            <th class="th_details" colspan="6">Details</th>
20282          </tr>
20283          <tr class="entry_cont">
20284            <td class="entry_details" colspan="6">
20285              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20286by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20287work as normal.<wbr/></p>
20288<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20289occur (and that the test pattern remain unmodified,<wbr/> since the flash
20290would not actually affect it).<wbr/></p>
20291<p>Defaults to OFF.<wbr/></p>
20292            </td>
20293          </tr>
20294
20295          <tr class="entries_header">
20296            <th class="th_details" colspan="6">HAL Implementation Details</th>
20297          </tr>
20298          <tr class="entry_cont">
20299            <td class="entry_details" colspan="6">
20300              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20301<p>The HAL may choose to substitute test patterns from the sensor
20302with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20303indistinguishable to the ISP whether the data came from the
20304sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20305            </td>
20306          </tr>
20307
20308          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20309           <!-- end of entry -->
20310
20311
20312
20313      <!-- end of kind -->
20314      </tbody>
20315      <tr><td colspan="7" class="kind">static</td></tr>
20316
20317      <thead class="entries_header">
20318        <tr>
20319          <th class="th_name">Property Name</th>
20320          <th class="th_type">Type</th>
20321          <th class="th_description">Description</th>
20322          <th class="th_units">Units</th>
20323          <th class="th_range">Range</th>
20324          <th class="th_hal_version">Initial HIDL HAL version</th>
20325          <th class="th_tags">Tags</th>
20326        </tr>
20327      </thead>
20328
20329      <tbody>
20330
20331
20332
20333
20334
20335
20336
20337
20338
20339
20340
20341
20342          <tr class="entry" id="static_android.sensor.info.activeArraySize">
20343            <td class="entry_name
20344             " rowspan="5">
20345              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20346            </td>
20347            <td class="entry_type">
20348                <span class="entry_type_name">int32</span>
20349                <span class="entry_type_container">x</span>
20350
20351                <span class="entry_type_array">
20352                  4
20353                </span>
20354              <span class="entry_type_visibility"> [public as rectangle]</span>
20355
20356
20357              <span class="entry_type_hwlevel">[legacy] </span>
20358
20359
20360                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20361
20362
20363            </td> <!-- entry_type -->
20364
20365            <td class="entry_description">
20366              <p>The area of the image sensor which corresponds to active pixels after any geometric
20367distortion correction has been applied.<wbr/></p>
20368            </td>
20369
20370            <td class="entry_units">
20371              Pixel coordinates on the image sensor
20372            </td>
20373
20374            <td class="entry_range">
20375            </td>
20376
20377            <td class="entry_hal_version">
20378              <p>3.<wbr/>2</p>
20379            </td>
20380
20381            <td class="entry_tags">
20382              <ul class="entry_tags">
20383                  <li><a href="#tag_RAW">RAW</a></li>
20384              </ul>
20385            </td>
20386
20387          </tr>
20388          <tr class="entries_header">
20389            <th class="th_details" colspan="6">Details</th>
20390          </tr>
20391          <tr class="entry_cont">
20392            <td class="entry_details" colspan="6">
20393              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20394the region that actually receives light from the scene) after any geometric correction
20395has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20396image output formats aside from the raw formats.<wbr/></p>
20397<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20398the full pixel array,<wbr/> and the size of the full pixel array is given by
20399<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20400<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20401<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
20402this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20403<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20404include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20405resulting in scaling or cropping may have been applied.<wbr/></p>
20406            </td>
20407          </tr>
20408
20409          <tr class="entries_header">
20410            <th class="th_details" colspan="6">HAL Implementation Details</th>
20411          </tr>
20412          <tr class="entry_cont">
20413            <td class="entry_details" colspan="6">
20414              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20415&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20416The <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>
20417            </td>
20418          </tr>
20419
20420          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20421           <!-- end of entry -->
20422
20423
20424          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20425            <td class="entry_name
20426             " rowspan="3">
20427              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20428            </td>
20429            <td class="entry_type">
20430                <span class="entry_type_name">int32</span>
20431                <span class="entry_type_container">x</span>
20432
20433                <span class="entry_type_array">
20434                  2
20435                </span>
20436              <span class="entry_type_visibility"> [public as rangeInt]</span>
20437
20438
20439              <span class="entry_type_hwlevel">[full] </span>
20440
20441
20442                <div class="entry_type_notes">Range of supported sensitivities</div>
20443
20444
20445            </td> <!-- entry_type -->
20446
20447            <td class="entry_description">
20448              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20449camera device.<wbr/></p>
20450            </td>
20451
20452            <td class="entry_units">
20453            </td>
20454
20455            <td class="entry_range">
20456              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20457            </td>
20458
20459            <td class="entry_hal_version">
20460              <p>3.<wbr/>2</p>
20461            </td>
20462
20463            <td class="entry_tags">
20464              <ul class="entry_tags">
20465                  <li><a href="#tag_BC">BC</a></li>
20466                  <li><a href="#tag_V1">V1</a></li>
20467              </ul>
20468            </td>
20469
20470          </tr>
20471          <tr class="entries_header">
20472            <th class="th_details" colspan="6">Details</th>
20473          </tr>
20474          <tr class="entry_cont">
20475            <td class="entry_details" colspan="6">
20476              <p>The values are the standard ISO sensitivity values,<wbr/>
20477as defined in ISO 12232:2006.<wbr/></p>
20478            </td>
20479          </tr>
20480
20481
20482          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20483           <!-- end of entry -->
20484
20485
20486          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20487            <td class="entry_name
20488             " rowspan="1">
20489              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20490            </td>
20491            <td class="entry_type">
20492                <span class="entry_type_name entry_type_name_enum">byte</span>
20493
20494              <span class="entry_type_visibility"> [public]</span>
20495
20496
20497              <span class="entry_type_hwlevel">[full] </span>
20498
20499
20500
20501                <ul class="entry_type_enum">
20502                  <li>
20503                    <span class="entry_type_enum_name">RGGB (v3.2)</span>
20504                  </li>
20505                  <li>
20506                    <span class="entry_type_enum_name">GRBG (v3.2)</span>
20507                  </li>
20508                  <li>
20509                    <span class="entry_type_enum_name">GBRG (v3.2)</span>
20510                  </li>
20511                  <li>
20512                    <span class="entry_type_enum_name">BGGR (v3.2)</span>
20513                  </li>
20514                  <li>
20515                    <span class="entry_type_enum_name">RGB (v3.2)</span>
20516                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20517values for each pixel,<wbr/> instead of just 1 16-bit value
20518per pixel.<wbr/></p></span>
20519                  </li>
20520                </ul>
20521
20522            </td> <!-- entry_type -->
20523
20524            <td class="entry_description">
20525              <p>The arrangement of color filters on sensor;
20526represents the colors in the top-left 2x2 section of
20527the sensor,<wbr/> in reading order.<wbr/></p>
20528            </td>
20529
20530            <td class="entry_units">
20531            </td>
20532
20533            <td class="entry_range">
20534            </td>
20535
20536            <td class="entry_hal_version">
20537              <p>3.<wbr/>2</p>
20538            </td>
20539
20540            <td class="entry_tags">
20541              <ul class="entry_tags">
20542                  <li><a href="#tag_RAW">RAW</a></li>
20543              </ul>
20544            </td>
20545
20546          </tr>
20547
20548
20549          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20550           <!-- end of entry -->
20551
20552
20553          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20554            <td class="entry_name
20555             " rowspan="3">
20556              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20557            </td>
20558            <td class="entry_type">
20559                <span class="entry_type_name">int64</span>
20560                <span class="entry_type_container">x</span>
20561
20562                <span class="entry_type_array">
20563                  2
20564                </span>
20565              <span class="entry_type_visibility"> [public as rangeLong]</span>
20566
20567
20568              <span class="entry_type_hwlevel">[full] </span>
20569
20570
20571                <div class="entry_type_notes">nanoseconds</div>
20572
20573
20574            </td> <!-- entry_type -->
20575
20576            <td class="entry_description">
20577              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20578by this camera device.<wbr/></p>
20579            </td>
20580
20581            <td class="entry_units">
20582              Nanoseconds
20583            </td>
20584
20585            <td class="entry_range">
20586              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20587capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20588the maximum exposure time will be greater than 100ms.<wbr/></p>
20589            </td>
20590
20591            <td class="entry_hal_version">
20592              <p>3.<wbr/>2</p>
20593            </td>
20594
20595            <td class="entry_tags">
20596              <ul class="entry_tags">
20597                  <li><a href="#tag_V1">V1</a></li>
20598              </ul>
20599            </td>
20600
20601          </tr>
20602
20603          <tr class="entries_header">
20604            <th class="th_details" colspan="6">HAL Implementation Details</th>
20605          </tr>
20606          <tr class="entry_cont">
20607            <td class="entry_details" colspan="6">
20608              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20609The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20610100ms.<wbr/></p>
20611            </td>
20612          </tr>
20613
20614          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20615           <!-- end of entry -->
20616
20617
20618          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20619            <td class="entry_name
20620             " rowspan="5">
20621              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20622            </td>
20623            <td class="entry_type">
20624                <span class="entry_type_name">int64</span>
20625
20626              <span class="entry_type_visibility"> [public]</span>
20627
20628
20629              <span class="entry_type_hwlevel">[full] </span>
20630
20631
20632
20633
20634            </td> <!-- entry_type -->
20635
20636            <td class="entry_description">
20637              <p>The maximum possible frame duration (minimum frame rate) for
20638<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20639            </td>
20640
20641            <td class="entry_units">
20642              Nanoseconds
20643            </td>
20644
20645            <td class="entry_range">
20646              <p>For FULL capability devices
20647(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20648            </td>
20649
20650            <td class="entry_hal_version">
20651              <p>3.<wbr/>2</p>
20652            </td>
20653
20654            <td class="entry_tags">
20655              <ul class="entry_tags">
20656                  <li><a href="#tag_V1">V1</a></li>
20657              </ul>
20658            </td>
20659
20660          </tr>
20661          <tr class="entries_header">
20662            <th class="th_details" colspan="6">Details</th>
20663          </tr>
20664          <tr class="entry_cont">
20665            <td class="entry_details" colspan="6">
20666              <p>Attempting to use frame durations beyond the maximum will result in the frame
20667duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20668durations.<wbr/></p>
20669<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20670for the minimum frame duration values.<wbr/></p>
20671            </td>
20672          </tr>
20673
20674          <tr class="entries_header">
20675            <th class="th_details" colspan="6">HAL Implementation Details</th>
20676          </tr>
20677          <tr class="entry_cont">
20678            <td class="entry_details" colspan="6">
20679              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20680The maximum of the range SHOULD be at least
206811 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20682<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20683equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20684value (since exposure time overrides frame duration).<wbr/></p>
20685<p>Available minimum frame durations for JPEG must be no greater
20686than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20687minimum frame durations (for that respective size).<wbr/></p>
20688<p>Since JPEG processing is considered offline and can take longer than
20689a single uncompressed capture,<wbr/> refer to
20690<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20691for details about encoding this scenario.<wbr/></p>
20692            </td>
20693          </tr>
20694
20695          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20696           <!-- end of entry -->
20697
20698
20699          <tr class="entry" id="static_android.sensor.info.physicalSize">
20700            <td class="entry_name
20701             " rowspan="5">
20702              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20703            </td>
20704            <td class="entry_type">
20705                <span class="entry_type_name">float</span>
20706                <span class="entry_type_container">x</span>
20707
20708                <span class="entry_type_array">
20709                  2
20710                </span>
20711              <span class="entry_type_visibility"> [public as sizeF]</span>
20712
20713
20714              <span class="entry_type_hwlevel">[legacy] </span>
20715
20716
20717                <div class="entry_type_notes">width x height</div>
20718
20719
20720            </td> <!-- entry_type -->
20721
20722            <td class="entry_description">
20723              <p>The physical dimensions of the full pixel
20724array.<wbr/></p>
20725            </td>
20726
20727            <td class="entry_units">
20728              Millimeters
20729            </td>
20730
20731            <td class="entry_range">
20732            </td>
20733
20734            <td class="entry_hal_version">
20735              <p>3.<wbr/>2</p>
20736            </td>
20737
20738            <td class="entry_tags">
20739              <ul class="entry_tags">
20740                  <li><a href="#tag_V1">V1</a></li>
20741                  <li><a href="#tag_BC">BC</a></li>
20742              </ul>
20743            </td>
20744
20745          </tr>
20746          <tr class="entries_header">
20747            <th class="th_details" colspan="6">Details</th>
20748          </tr>
20749          <tr class="entry_cont">
20750            <td class="entry_details" colspan="6">
20751              <p>This is the physical size of the sensor pixel
20752array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20753            </td>
20754          </tr>
20755
20756          <tr class="entries_header">
20757            <th class="th_details" colspan="6">HAL Implementation Details</th>
20758          </tr>
20759          <tr class="entry_cont">
20760            <td class="entry_details" colspan="6">
20761              <p>Needed for FOV calculation for old API</p>
20762            </td>
20763          </tr>
20764
20765          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20766           <!-- end of entry -->
20767
20768
20769          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20770            <td class="entry_name
20771             " rowspan="3">
20772              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20773            </td>
20774            <td class="entry_type">
20775                <span class="entry_type_name">int32</span>
20776                <span class="entry_type_container">x</span>
20777
20778                <span class="entry_type_array">
20779                  2
20780                </span>
20781              <span class="entry_type_visibility"> [public as size]</span>
20782
20783
20784              <span class="entry_type_hwlevel">[legacy] </span>
20785
20786
20787
20788
20789            </td> <!-- entry_type -->
20790
20791            <td class="entry_description">
20792              <p>Dimensions of the full pixel array,<wbr/> possibly
20793including black calibration pixels.<wbr/></p>
20794            </td>
20795
20796            <td class="entry_units">
20797              Pixels
20798            </td>
20799
20800            <td class="entry_range">
20801            </td>
20802
20803            <td class="entry_hal_version">
20804              <p>3.<wbr/>2</p>
20805            </td>
20806
20807            <td class="entry_tags">
20808              <ul class="entry_tags">
20809                  <li><a href="#tag_RAW">RAW</a></li>
20810                  <li><a href="#tag_BC">BC</a></li>
20811              </ul>
20812            </td>
20813
20814          </tr>
20815          <tr class="entries_header">
20816            <th class="th_details" colspan="6">Details</th>
20817          </tr>
20818          <tr class="entry_cont">
20819            <td class="entry_details" colspan="6">
20820              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20821<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
20822the raw buffers produced by this sensor.<wbr/></p>
20823<p>If a camera device supports raw sensor formats,<wbr/> either this or
20824<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
20825output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20826(this depends on whether or not the image sensor returns buffers containing pixels that
20827are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20828<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20829or 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
20830defines the rectangle of active pixels that will be included in processed image
20831formats.<wbr/></p>
20832            </td>
20833          </tr>
20834
20835
20836          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20837           <!-- end of entry -->
20838
20839
20840          <tr class="entry" id="static_android.sensor.info.whiteLevel">
20841            <td class="entry_name
20842             " rowspan="5">
20843              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20844            </td>
20845            <td class="entry_type">
20846                <span class="entry_type_name">int32</span>
20847
20848              <span class="entry_type_visibility"> [public]</span>
20849
20850
20851
20852
20853
20854
20855            </td> <!-- entry_type -->
20856
20857            <td class="entry_description">
20858              <p>Maximum raw value output by sensor.<wbr/></p>
20859            </td>
20860
20861            <td class="entry_units">
20862            </td>
20863
20864            <td class="entry_range">
20865              <p>&gt; 255 (8-bit output)</p>
20866            </td>
20867
20868            <td class="entry_hal_version">
20869              <p>3.<wbr/>2</p>
20870            </td>
20871
20872            <td class="entry_tags">
20873              <ul class="entry_tags">
20874                  <li><a href="#tag_RAW">RAW</a></li>
20875              </ul>
20876            </td>
20877
20878          </tr>
20879          <tr class="entries_header">
20880            <th class="th_details" colspan="6">Details</th>
20881          </tr>
20882          <tr class="entry_cont">
20883            <td class="entry_details" colspan="6">
20884              <p>This specifies the fully-saturated encoding level for the raw
20885sample values from the sensor.<wbr/>  This is typically caused by the
20886sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20887each channel is specified by the offset in the
20888<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20889<p>The white level is typically determined either by sensor bit depth
20890(8-14 bits is expected),<wbr/> or by the point where the sensor response
20891becomes too non-linear to be useful.<wbr/>  The default value for this is
20892maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20893<p>The white level values of captured images may vary for different
20894capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20895represents a coarse approximation for such case.<wbr/> It is recommended
20896to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20897by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20898            </td>
20899          </tr>
20900
20901          <tr class="entries_header">
20902            <th class="th_details" colspan="6">HAL Implementation Details</th>
20903          </tr>
20904          <tr class="entry_cont">
20905            <td class="entry_details" colspan="6">
20906              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20907so the value for linear sensors should not be significantly lower
20908than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20909            </td>
20910          </tr>
20911
20912          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20913           <!-- end of entry -->
20914
20915
20916          <tr class="entry" id="static_android.sensor.info.timestampSource">
20917            <td class="entry_name
20918             " rowspan="5">
20919              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20920            </td>
20921            <td class="entry_type">
20922                <span class="entry_type_name entry_type_name_enum">byte</span>
20923
20924              <span class="entry_type_visibility"> [public]</span>
20925
20926
20927              <span class="entry_type_hwlevel">[legacy] </span>
20928
20929
20930
20931                <ul class="entry_type_enum">
20932                  <li>
20933                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20934                    <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/>
20935but can not be compared to timestamps from other subsystems
20936(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20937camera devices in the same system.<wbr/> Timestamps between streams and results for
20938a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20939and the result metadata generated by a single capture are identical.<wbr/></p></span>
20940                  </li>
20941                  <li>
20942                    <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20943                    <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
20944<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20945and they can be compared to other timestamps using that base.<wbr/></p></span>
20946                  </li>
20947                </ul>
20948
20949            </td> <!-- entry_type -->
20950
20951            <td class="entry_description">
20952              <p>The time base source for sensor capture start timestamps.<wbr/></p>
20953            </td>
20954
20955            <td class="entry_units">
20956            </td>
20957
20958            <td class="entry_range">
20959            </td>
20960
20961            <td class="entry_hal_version">
20962              <p>3.<wbr/>2</p>
20963            </td>
20964
20965            <td class="entry_tags">
20966              <ul class="entry_tags">
20967                  <li><a href="#tag_V1">V1</a></li>
20968              </ul>
20969            </td>
20970
20971          </tr>
20972          <tr class="entries_header">
20973            <th class="th_details" colspan="6">Details</th>
20974          </tr>
20975          <tr class="entry_cont">
20976            <td class="entry_details" colspan="6">
20977              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20978may not based on a time source that can be compared to other system time sources.<wbr/></p>
20979<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20980can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20981            </td>
20982          </tr>
20983
20984          <tr class="entries_header">
20985            <th class="th_details" colspan="6">HAL Implementation Details</th>
20986          </tr>
20987          <tr class="entry_cont">
20988            <td class="entry_details" colspan="6">
20989              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20990source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20991framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20992system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20993SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20994recording might suffer unexpected behavior.<wbr/></p>
20995<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20996tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20997            </td>
20998          </tr>
20999
21000          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21001           <!-- end of entry -->
21002
21003
21004          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
21005            <td class="entry_name
21006             " rowspan="3">
21007              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
21008            </td>
21009            <td class="entry_type">
21010                <span class="entry_type_name entry_type_name_enum">byte</span>
21011
21012              <span class="entry_type_visibility"> [public as boolean]</span>
21013
21014
21015
21016
21017
21018                <ul class="entry_type_enum">
21019                  <li>
21020                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
21021                  </li>
21022                  <li>
21023                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
21024                  </li>
21025                </ul>
21026
21027            </td> <!-- entry_type -->
21028
21029            <td class="entry_description">
21030              <p>Whether the RAW images output from this camera device are subject to
21031lens shading correction.<wbr/></p>
21032            </td>
21033
21034            <td class="entry_units">
21035            </td>
21036
21037            <td class="entry_range">
21038            </td>
21039
21040            <td class="entry_hal_version">
21041              <p>3.<wbr/>2</p>
21042            </td>
21043
21044            <td class="entry_tags">
21045            </td>
21046
21047          </tr>
21048          <tr class="entries_header">
21049            <th class="th_details" colspan="6">Details</th>
21050          </tr>
21051          <tr class="entry_cont">
21052            <td class="entry_details" colspan="6">
21053              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21054have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21055not be adjusted for lens shading correction.<wbr/>
21056See <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>
21057<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21058Devices with RAW capability will always report this information in this key.<wbr/></p>
21059            </td>
21060          </tr>
21061
21062
21063          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21064           <!-- end of entry -->
21065
21066
21067          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21068            <td class="entry_name
21069             " rowspan="5">
21070              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21071            </td>
21072            <td class="entry_type">
21073                <span class="entry_type_name">int32</span>
21074                <span class="entry_type_container">x</span>
21075
21076                <span class="entry_type_array">
21077                  4
21078                </span>
21079              <span class="entry_type_visibility"> [public as rectangle]</span>
21080
21081
21082              <span class="entry_type_hwlevel">[legacy] </span>
21083
21084
21085                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21086
21087
21088            </td> <!-- entry_type -->
21089
21090            <td class="entry_description">
21091              <p>The area of the image sensor which corresponds to active pixels prior to the
21092application of any geometric distortion correction.<wbr/></p>
21093            </td>
21094
21095            <td class="entry_units">
21096              Pixel coordinates on the image sensor
21097            </td>
21098
21099            <td class="entry_range">
21100            </td>
21101
21102            <td class="entry_hal_version">
21103              <p>3.<wbr/>2</p>
21104            </td>
21105
21106            <td class="entry_tags">
21107              <ul class="entry_tags">
21108                  <li><a href="#tag_RAW">RAW</a></li>
21109              </ul>
21110            </td>
21111
21112          </tr>
21113          <tr class="entries_header">
21114            <th class="th_details" colspan="6">Details</th>
21115          </tr>
21116          <tr class="entry_cont">
21117            <td class="entry_details" colspan="6">
21118              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21119the region that actually receives light from the scene) before any geometric correction
21120has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21121raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21122correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21123the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21124<p>The size of this region determines the maximum field of view and the maximum number of
21125pixels that an image from this sensor can contain,<wbr/> prior to the application of
21126geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21127post-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>
21128field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21129can be calculated by applying the geometric distortion correction fields to this
21130rectangle,<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>
21131<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21132dimensions 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/>
21133(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21134<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21135<ol>
21136<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21137<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
21138to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21139<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21140(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21141buffers is defined relative to the top,<wbr/> left of the
21142<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>
21143<li>If the resulting corrected pixel coordinate is within the region given in
21144<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
21145processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21146when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21147</ol>
21148<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>
21149is (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/>
21150<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
21151correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21152pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21153with 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)
21154relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21155<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21156<p>The currently supported fields that correct for geometric distortion are:</p>
21157<ol>
21158<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21159</ol>
21160<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21161as the post-distortion-corrected rectangle given in
21162<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21163<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21164the full pixel array,<wbr/> and the size of the full pixel array is given by
21165<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21166<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21167full array may include black calibration pixels or other inactive regions.<wbr/></p>
21168            </td>
21169          </tr>
21170
21171          <tr class="entries_header">
21172            <th class="th_details" colspan="6">HAL Implementation Details</th>
21173          </tr>
21174          <tr class="entry_cont">
21175            <td class="entry_details" colspan="6">
21176              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21177&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
21178The <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>
21179<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21180the same as the post-correction active array region given in
21181<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21182            </td>
21183          </tr>
21184
21185          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21186           <!-- end of entry -->
21187
21188
21189
21190
21191
21192          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21193            <td class="entry_name
21194             " rowspan="5">
21195              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21196            </td>
21197            <td class="entry_type">
21198                <span class="entry_type_name entry_type_name_enum">byte</span>
21199
21200              <span class="entry_type_visibility"> [public]</span>
21201
21202
21203
21204
21205
21206                <ul class="entry_type_enum">
21207                  <li>
21208                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21209                    <span class="entry_type_enum_value">1</span>
21210                  </li>
21211                  <li>
21212                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21213                    <span class="entry_type_enum_value">2</span>
21214                  </li>
21215                  <li>
21216                    <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21217                    <span class="entry_type_enum_value">3</span>
21218                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21219                  </li>
21220                  <li>
21221                    <span class="entry_type_enum_name">FLASH (v3.2)</span>
21222                    <span class="entry_type_enum_value">4</span>
21223                  </li>
21224                  <li>
21225                    <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21226                    <span class="entry_type_enum_value">9</span>
21227                  </li>
21228                  <li>
21229                    <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21230                    <span class="entry_type_enum_value">10</span>
21231                  </li>
21232                  <li>
21233                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
21234                    <span class="entry_type_enum_value">11</span>
21235                  </li>
21236                  <li>
21237                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21238                    <span class="entry_type_enum_value">12</span>
21239                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21240                  </li>
21241                  <li>
21242                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21243                    <span class="entry_type_enum_value">13</span>
21244                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21245                  </li>
21246                  <li>
21247                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21248                    <span class="entry_type_enum_value">14</span>
21249                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21250                  </li>
21251                  <li>
21252                    <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21253                    <span class="entry_type_enum_value">15</span>
21254                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21255                  </li>
21256                  <li>
21257                    <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21258                    <span class="entry_type_enum_value">17</span>
21259                  </li>
21260                  <li>
21261                    <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21262                    <span class="entry_type_enum_value">18</span>
21263                  </li>
21264                  <li>
21265                    <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21266                    <span class="entry_type_enum_value">19</span>
21267                  </li>
21268                  <li>
21269                    <span class="entry_type_enum_name">D55 (v3.2)</span>
21270                    <span class="entry_type_enum_value">20</span>
21271                  </li>
21272                  <li>
21273                    <span class="entry_type_enum_name">D65 (v3.2)</span>
21274                    <span class="entry_type_enum_value">21</span>
21275                  </li>
21276                  <li>
21277                    <span class="entry_type_enum_name">D75 (v3.2)</span>
21278                    <span class="entry_type_enum_value">22</span>
21279                  </li>
21280                  <li>
21281                    <span class="entry_type_enum_name">D50 (v3.2)</span>
21282                    <span class="entry_type_enum_value">23</span>
21283                  </li>
21284                  <li>
21285                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21286                    <span class="entry_type_enum_value">24</span>
21287                  </li>
21288                </ul>
21289
21290            </td> <!-- entry_type -->
21291
21292            <td class="entry_description">
21293              <p>The standard reference illuminant used as the scene light source when
21294calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21295<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21296<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21297            </td>
21298
21299            <td class="entry_units">
21300            </td>
21301
21302            <td class="entry_range">
21303            </td>
21304
21305            <td class="entry_hal_version">
21306              <p>3.<wbr/>2</p>
21307            </td>
21308
21309            <td class="entry_tags">
21310              <ul class="entry_tags">
21311                  <li><a href="#tag_RAW">RAW</a></li>
21312              </ul>
21313            </td>
21314
21315          </tr>
21316          <tr class="entries_header">
21317            <th class="th_details" colspan="6">Details</th>
21318          </tr>
21319          <tr class="entry_cont">
21320            <td class="entry_details" colspan="6">
21321              <p>The values in this key correspond to the values defined for the
21322EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21323that are often used calibrating camera devices.<wbr/></p>
21324<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21325<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21326<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21327<p>Some devices may choose to provide a second set of calibration
21328information for improved quality,<wbr/> including
21329<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21330            </td>
21331          </tr>
21332
21333          <tr class="entries_header">
21334            <th class="th_details" colspan="6">HAL Implementation Details</th>
21335          </tr>
21336          <tr class="entry_cont">
21337            <td class="entry_details" colspan="6">
21338              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21339and corresponding matrices must be present to support the RAW capability
21340and DNG output.<wbr/></p>
21341<p>When producing raw images with a color profile that has only been
21342calibrated against a single light source,<wbr/> it is valid to omit
21343<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21344<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/>
21345and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21346<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21347chosen so that it is representative of typical scene lighting.<wbr/>  In
21348general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21349<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21350<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21351chosen to represent the typical range of scene lighting conditions.<wbr/>
21352In general,<wbr/> low color temperature illuminant such as Standard-A will
21353be chosen for the first reference illuminant and a higher color
21354temperature illuminant such as D65 will be chosen for the second
21355reference illuminant.<wbr/></p>
21356            </td>
21357          </tr>
21358
21359          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21360           <!-- end of entry -->
21361
21362
21363          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21364            <td class="entry_name
21365             " rowspan="3">
21366              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21367            </td>
21368            <td class="entry_type">
21369                <span class="entry_type_name">byte</span>
21370
21371              <span class="entry_type_visibility"> [public]</span>
21372
21373
21374
21375
21376
21377
21378            </td> <!-- entry_type -->
21379
21380            <td class="entry_description">
21381              <p>The standard reference illuminant used as the scene light source when
21382calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21383<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21384<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21385            </td>
21386
21387            <td class="entry_units">
21388            </td>
21389
21390            <td class="entry_range">
21391              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21392            </td>
21393
21394            <td class="entry_hal_version">
21395              <p>3.<wbr/>2</p>
21396            </td>
21397
21398            <td class="entry_tags">
21399              <ul class="entry_tags">
21400                  <li><a href="#tag_RAW">RAW</a></li>
21401              </ul>
21402            </td>
21403
21404          </tr>
21405          <tr class="entries_header">
21406            <th class="th_details" colspan="6">Details</th>
21407          </tr>
21408          <tr class="entry_cont">
21409            <td class="entry_details" colspan="6">
21410              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21411<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21412<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21413<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21414            </td>
21415          </tr>
21416
21417
21418          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21419           <!-- end of entry -->
21420
21421
21422          <tr class="entry" id="static_android.sensor.calibrationTransform1">
21423            <td class="entry_name
21424             " rowspan="3">
21425              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21426            </td>
21427            <td class="entry_type">
21428                <span class="entry_type_name">rational</span>
21429                <span class="entry_type_container">x</span>
21430
21431                <span class="entry_type_array">
21432                  3 x 3
21433                </span>
21434              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21435
21436
21437
21438
21439                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21440
21441
21442            </td> <!-- entry_type -->
21443
21444            <td class="entry_description">
21445              <p>A per-device calibration transform matrix that maps from the
21446reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21447            </td>
21448
21449            <td class="entry_units">
21450            </td>
21451
21452            <td class="entry_range">
21453            </td>
21454
21455            <td class="entry_hal_version">
21456              <p>3.<wbr/>2</p>
21457            </td>
21458
21459            <td class="entry_tags">
21460              <ul class="entry_tags">
21461                  <li><a href="#tag_RAW">RAW</a></li>
21462              </ul>
21463            </td>
21464
21465          </tr>
21466          <tr class="entries_header">
21467            <th class="th_details" colspan="6">Details</th>
21468          </tr>
21469          <tr class="entry_cont">
21470            <td class="entry_details" colspan="6">
21471              <p>This matrix is used to correct for per-device variations in the
21472sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21473<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21474contains a per-device calibration transform that maps colors
21475from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21476colorspace) into this camera device's native sensor color
21477space under the first reference illuminant
21478(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21479            </td>
21480          </tr>
21481
21482
21483          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21484           <!-- end of entry -->
21485
21486
21487          <tr class="entry" id="static_android.sensor.calibrationTransform2">
21488            <td class="entry_name
21489             " rowspan="3">
21490              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21491            </td>
21492            <td class="entry_type">
21493                <span class="entry_type_name">rational</span>
21494                <span class="entry_type_container">x</span>
21495
21496                <span class="entry_type_array">
21497                  3 x 3
21498                </span>
21499              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21500
21501
21502
21503
21504                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21505
21506
21507            </td> <!-- entry_type -->
21508
21509            <td class="entry_description">
21510              <p>A per-device calibration transform matrix that maps from the
21511reference sensor colorspace to the actual device sensor colorspace
21512(this is the colorspace of the raw buffer data).<wbr/></p>
21513            </td>
21514
21515            <td class="entry_units">
21516            </td>
21517
21518            <td class="entry_range">
21519            </td>
21520
21521            <td class="entry_hal_version">
21522              <p>3.<wbr/>2</p>
21523            </td>
21524
21525            <td class="entry_tags">
21526              <ul class="entry_tags">
21527                  <li><a href="#tag_RAW">RAW</a></li>
21528              </ul>
21529            </td>
21530
21531          </tr>
21532          <tr class="entries_header">
21533            <th class="th_details" colspan="6">Details</th>
21534          </tr>
21535          <tr class="entry_cont">
21536            <td class="entry_details" colspan="6">
21537              <p>This matrix is used to correct for per-device variations in the
21538sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21539<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21540contains a per-device calibration transform that maps colors
21541from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21542colorspace) into this camera device's native sensor color
21543space under the second reference illuminant
21544(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21545<p>This matrix will only be present if the second reference
21546illuminant is present.<wbr/></p>
21547            </td>
21548          </tr>
21549
21550
21551          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21552           <!-- end of entry -->
21553
21554
21555          <tr class="entry" id="static_android.sensor.colorTransform1">
21556            <td class="entry_name
21557             " rowspan="3">
21558              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21559            </td>
21560            <td class="entry_type">
21561                <span class="entry_type_name">rational</span>
21562                <span class="entry_type_container">x</span>
21563
21564                <span class="entry_type_array">
21565                  3 x 3
21566                </span>
21567              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21568
21569
21570
21571
21572                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21573
21574
21575            </td> <!-- entry_type -->
21576
21577            <td class="entry_description">
21578              <p>A matrix that transforms color values from CIE XYZ color space to
21579reference sensor color space.<wbr/></p>
21580            </td>
21581
21582            <td class="entry_units">
21583            </td>
21584
21585            <td class="entry_range">
21586            </td>
21587
21588            <td class="entry_hal_version">
21589              <p>3.<wbr/>2</p>
21590            </td>
21591
21592            <td class="entry_tags">
21593              <ul class="entry_tags">
21594                  <li><a href="#tag_RAW">RAW</a></li>
21595              </ul>
21596            </td>
21597
21598          </tr>
21599          <tr class="entries_header">
21600            <th class="th_details" colspan="6">Details</th>
21601          </tr>
21602          <tr class="entry_cont">
21603            <td class="entry_details" colspan="6">
21604              <p>This matrix is used to convert from the standard CIE XYZ color
21605space to the reference sensor colorspace,<wbr/> and is used when processing
21606raw buffer data.<wbr/></p>
21607<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21608contains a color transform matrix that maps colors from the CIE
21609XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21610"golden module" colorspace) under the first reference illuminant
21611(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21612<p>The white points chosen in both the reference sensor color space
21613and the CIE XYZ colorspace when calculating this transform will
21614match the standard white point for the first reference illuminant
21615(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21616            </td>
21617          </tr>
21618
21619
21620          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21621           <!-- end of entry -->
21622
21623
21624          <tr class="entry" id="static_android.sensor.colorTransform2">
21625            <td class="entry_name
21626             " rowspan="3">
21627              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21628            </td>
21629            <td class="entry_type">
21630                <span class="entry_type_name">rational</span>
21631                <span class="entry_type_container">x</span>
21632
21633                <span class="entry_type_array">
21634                  3 x 3
21635                </span>
21636              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21637
21638
21639
21640
21641                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21642
21643
21644            </td> <!-- entry_type -->
21645
21646            <td class="entry_description">
21647              <p>A matrix that transforms color values from CIE XYZ color space to
21648reference sensor color space.<wbr/></p>
21649            </td>
21650
21651            <td class="entry_units">
21652            </td>
21653
21654            <td class="entry_range">
21655            </td>
21656
21657            <td class="entry_hal_version">
21658              <p>3.<wbr/>2</p>
21659            </td>
21660
21661            <td class="entry_tags">
21662              <ul class="entry_tags">
21663                  <li><a href="#tag_RAW">RAW</a></li>
21664              </ul>
21665            </td>
21666
21667          </tr>
21668          <tr class="entries_header">
21669            <th class="th_details" colspan="6">Details</th>
21670          </tr>
21671          <tr class="entry_cont">
21672            <td class="entry_details" colspan="6">
21673              <p>This matrix is used to convert from the standard CIE XYZ color
21674space to the reference sensor colorspace,<wbr/> and is used when processing
21675raw buffer data.<wbr/></p>
21676<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21677contains a color transform matrix that maps colors from the CIE
21678XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21679"golden module" colorspace) under the second reference illuminant
21680(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21681<p>The white points chosen in both the reference sensor color space
21682and the CIE XYZ colorspace when calculating this transform will
21683match the standard white point for the second reference illuminant
21684(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21685<p>This matrix will only be present if the second reference
21686illuminant is present.<wbr/></p>
21687            </td>
21688          </tr>
21689
21690
21691          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21692           <!-- end of entry -->
21693
21694
21695          <tr class="entry" id="static_android.sensor.forwardMatrix1">
21696            <td class="entry_name
21697             " rowspan="3">
21698              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21699            </td>
21700            <td class="entry_type">
21701                <span class="entry_type_name">rational</span>
21702                <span class="entry_type_container">x</span>
21703
21704                <span class="entry_type_array">
21705                  3 x 3
21706                </span>
21707              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21708
21709
21710
21711
21712                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21713
21714
21715            </td> <!-- entry_type -->
21716
21717            <td class="entry_description">
21718              <p>A matrix that transforms white balanced camera colors from the reference
21719sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21720            </td>
21721
21722            <td class="entry_units">
21723            </td>
21724
21725            <td class="entry_range">
21726            </td>
21727
21728            <td class="entry_hal_version">
21729              <p>3.<wbr/>2</p>
21730            </td>
21731
21732            <td class="entry_tags">
21733              <ul class="entry_tags">
21734                  <li><a href="#tag_RAW">RAW</a></li>
21735              </ul>
21736            </td>
21737
21738          </tr>
21739          <tr class="entries_header">
21740            <th class="th_details" colspan="6">Details</th>
21741          </tr>
21742          <tr class="entry_cont">
21743            <td class="entry_details" colspan="6">
21744              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21745is used when processing raw buffer data.<wbr/></p>
21746<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21747a color transform matrix that maps white balanced colors from the
21748reference sensor color space to the CIE XYZ color space with a D50 white
21749point.<wbr/></p>
21750<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21751this matrix is chosen so that the standard white point for this reference
21752illuminant in the reference sensor colorspace is mapped to D50 in the
21753CIE XYZ colorspace.<wbr/></p>
21754            </td>
21755          </tr>
21756
21757
21758          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21759           <!-- end of entry -->
21760
21761
21762          <tr class="entry" id="static_android.sensor.forwardMatrix2">
21763            <td class="entry_name
21764             " rowspan="3">
21765              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21766            </td>
21767            <td class="entry_type">
21768                <span class="entry_type_name">rational</span>
21769                <span class="entry_type_container">x</span>
21770
21771                <span class="entry_type_array">
21772                  3 x 3
21773                </span>
21774              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21775
21776
21777
21778
21779                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21780
21781
21782            </td> <!-- entry_type -->
21783
21784            <td class="entry_description">
21785              <p>A matrix that transforms white balanced camera colors from the reference
21786sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21787            </td>
21788
21789            <td class="entry_units">
21790            </td>
21791
21792            <td class="entry_range">
21793            </td>
21794
21795            <td class="entry_hal_version">
21796              <p>3.<wbr/>2</p>
21797            </td>
21798
21799            <td class="entry_tags">
21800              <ul class="entry_tags">
21801                  <li><a href="#tag_RAW">RAW</a></li>
21802              </ul>
21803            </td>
21804
21805          </tr>
21806          <tr class="entries_header">
21807            <th class="th_details" colspan="6">Details</th>
21808          </tr>
21809          <tr class="entry_cont">
21810            <td class="entry_details" colspan="6">
21811              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21812is used when processing raw buffer data.<wbr/></p>
21813<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21814a color transform matrix that maps white balanced colors from the
21815reference sensor color space to the CIE XYZ color space with a D50 white
21816point.<wbr/></p>
21817<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21818this matrix is chosen so that the standard white point for this reference
21819illuminant in the reference sensor colorspace is mapped to D50 in the
21820CIE XYZ colorspace.<wbr/></p>
21821<p>This matrix will only be present if the second reference
21822illuminant is present.<wbr/></p>
21823            </td>
21824          </tr>
21825
21826
21827          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21828           <!-- end of entry -->
21829
21830
21831          <tr class="entry" id="static_android.sensor.baseGainFactor">
21832            <td class="entry_name
21833             " rowspan="1">
21834              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21835            </td>
21836            <td class="entry_type">
21837                <span class="entry_type_name">rational</span>
21838
21839              <span class="entry_type_visibility"> [system]</span>
21840
21841
21842
21843
21844
21845
21846            </td> <!-- entry_type -->
21847
21848            <td class="entry_description">
21849              <p>Gain factor from electrons to raw units when
21850ISO=100</p>
21851            </td>
21852
21853            <td class="entry_units">
21854            </td>
21855
21856            <td class="entry_range">
21857            </td>
21858
21859            <td class="entry_hal_version">
21860              <p>3.<wbr/>2</p>
21861            </td>
21862
21863            <td class="entry_tags">
21864              <ul class="entry_tags">
21865                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21866              </ul>
21867            </td>
21868
21869          </tr>
21870
21871
21872          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21873           <!-- end of entry -->
21874
21875
21876          <tr class="entry" id="static_android.sensor.blackLevelPattern">
21877            <td class="entry_name
21878             " rowspan="5">
21879              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21880            </td>
21881            <td class="entry_type">
21882                <span class="entry_type_name">int32</span>
21883                <span class="entry_type_container">x</span>
21884
21885                <span class="entry_type_array">
21886                  4
21887                </span>
21888              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21889
21890
21891
21892
21893                <div class="entry_type_notes">2x2 raw count block</div>
21894
21895
21896            </td> <!-- entry_type -->
21897
21898            <td class="entry_description">
21899              <p>A fixed black level offset for each of the color filter arrangement
21900(CFA) mosaic channels.<wbr/></p>
21901            </td>
21902
21903            <td class="entry_units">
21904            </td>
21905
21906            <td class="entry_range">
21907              <p>&gt;= 0 for each.<wbr/></p>
21908            </td>
21909
21910            <td class="entry_hal_version">
21911              <p>3.<wbr/>2</p>
21912            </td>
21913
21914            <td class="entry_tags">
21915              <ul class="entry_tags">
21916                  <li><a href="#tag_RAW">RAW</a></li>
21917              </ul>
21918            </td>
21919
21920          </tr>
21921          <tr class="entries_header">
21922            <th class="th_details" colspan="6">Details</th>
21923          </tr>
21924          <tr class="entry_cont">
21925            <td class="entry_details" colspan="6">
21926              <p>This key specifies the zero light value for each of the CFA mosaic
21927channels in the camera sensor.<wbr/>  The maximal value output by the
21928sensor 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>
21929<p>The values are given in the same order as channels listed for the CFA
21930layout 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
21931nth value given corresponds to the black level offset for the nth
21932color channel listed in the CFA.<wbr/></p>
21933<p>The black level values of captured images may vary for different
21934capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21935represents a coarse approximation for such case.<wbr/> It is recommended to
21936use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21937<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21938supported by the camera device,<wbr/> which provides more accurate black
21939level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21940pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21941level values for each frame.<wbr/></p>
21942            </td>
21943          </tr>
21944
21945          <tr class="entries_header">
21946            <th class="th_details" colspan="6">HAL Implementation Details</th>
21947          </tr>
21948          <tr class="entry_cont">
21949            <td class="entry_details" colspan="6">
21950              <p>The values are given in row-column scan order,<wbr/> with the first value
21951corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21952            </td>
21953          </tr>
21954
21955          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21956           <!-- end of entry -->
21957
21958
21959          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21960            <td class="entry_name
21961             " rowspan="3">
21962              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21963            </td>
21964            <td class="entry_type">
21965                <span class="entry_type_name">int32</span>
21966
21967              <span class="entry_type_visibility"> [public]</span>
21968
21969
21970              <span class="entry_type_hwlevel">[full] </span>
21971
21972
21973
21974
21975            </td> <!-- entry_type -->
21976
21977            <td class="entry_description">
21978              <p>Maximum sensitivity that is implemented
21979purely through analog gain.<wbr/></p>
21980            </td>
21981
21982            <td class="entry_units">
21983            </td>
21984
21985            <td class="entry_range">
21986            </td>
21987
21988            <td class="entry_hal_version">
21989              <p>3.<wbr/>2</p>
21990            </td>
21991
21992            <td class="entry_tags">
21993              <ul class="entry_tags">
21994                  <li><a href="#tag_V1">V1</a></li>
21995                  <li><a href="#tag_FULL">FULL</a></li>
21996              </ul>
21997            </td>
21998
21999          </tr>
22000          <tr class="entries_header">
22001            <th class="th_details" colspan="6">Details</th>
22002          </tr>
22003          <tr class="entry_cont">
22004            <td class="entry_details" colspan="6">
22005              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
22006equal to this,<wbr/> all applied gain must be analog.<wbr/> For
22007values above this,<wbr/> the gain applied can be a mix of analog and
22008digital.<wbr/></p>
22009            </td>
22010          </tr>
22011
22012
22013          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22014           <!-- end of entry -->
22015
22016
22017          <tr class="entry" id="static_android.sensor.orientation">
22018            <td class="entry_name
22019             " rowspan="3">
22020              android.<wbr/>sensor.<wbr/>orientation
22021            </td>
22022            <td class="entry_type">
22023                <span class="entry_type_name">int32</span>
22024
22025              <span class="entry_type_visibility"> [public]</span>
22026
22027
22028              <span class="entry_type_hwlevel">[legacy] </span>
22029
22030
22031
22032
22033            </td> <!-- entry_type -->
22034
22035            <td class="entry_description">
22036              <p>Clockwise angle through which the output image needs to be rotated to be
22037upright on the device screen in its native orientation.<wbr/></p>
22038            </td>
22039
22040            <td class="entry_units">
22041              Degrees of clockwise rotation; always a multiple of
22042          90
22043            </td>
22044
22045            <td class="entry_range">
22046              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
22047            </td>
22048
22049            <td class="entry_hal_version">
22050              <p>3.<wbr/>2</p>
22051            </td>
22052
22053            <td class="entry_tags">
22054              <ul class="entry_tags">
22055                  <li><a href="#tag_BC">BC</a></li>
22056              </ul>
22057            </td>
22058
22059          </tr>
22060          <tr class="entries_header">
22061            <th class="th_details" colspan="6">Details</th>
22062          </tr>
22063          <tr class="entry_cont">
22064            <td class="entry_details" colspan="6">
22065              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22066the sensor's coordinate system.<wbr/></p>
22067            </td>
22068          </tr>
22069
22070
22071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22072           <!-- end of entry -->
22073
22074
22075          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22076            <td class="entry_name
22077             " rowspan="3">
22078              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22079            </td>
22080            <td class="entry_type">
22081                <span class="entry_type_name">int32</span>
22082                <span class="entry_type_container">x</span>
22083
22084                <span class="entry_type_array">
22085                  3
22086                </span>
22087              <span class="entry_type_visibility"> [system]</span>
22088
22089
22090
22091
22092                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22093
22094
22095            </td> <!-- entry_type -->
22096
22097            <td class="entry_description">
22098              <p>The number of input samples for each dimension of
22099<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22100            </td>
22101
22102            <td class="entry_units">
22103            </td>
22104
22105            <td class="entry_range">
22106              <p>Hue &gt;= 1,<wbr/>
22107Saturation &gt;= 2,<wbr/>
22108Value &gt;= 1</p>
22109            </td>
22110
22111            <td class="entry_hal_version">
22112              <p>3.<wbr/>2</p>
22113            </td>
22114
22115            <td class="entry_tags">
22116              <ul class="entry_tags">
22117                  <li><a href="#tag_RAW">RAW</a></li>
22118              </ul>
22119            </td>
22120
22121          </tr>
22122          <tr class="entries_header">
22123            <th class="th_details" colspan="6">Details</th>
22124          </tr>
22125          <tr class="entry_cont">
22126            <td class="entry_details" colspan="6">
22127              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22128dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
22129dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22130element.<wbr/></p>
22131            </td>
22132          </tr>
22133
22134
22135          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22136           <!-- end of entry -->
22137
22138
22139          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22140            <td class="entry_name
22141             " rowspan="5">
22142              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22143            </td>
22144            <td class="entry_type">
22145                <span class="entry_type_name">int32</span>
22146                <span class="entry_type_container">x</span>
22147
22148                <span class="entry_type_array">
22149                  n
22150                </span>
22151              <span class="entry_type_visibility"> [public]</span>
22152
22153
22154
22155
22156                <div class="entry_type_notes">list of enums</div>
22157
22158
22159            </td> <!-- entry_type -->
22160
22161            <td class="entry_description">
22162              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22163supported by this camera device.<wbr/></p>
22164            </td>
22165
22166            <td class="entry_units">
22167            </td>
22168
22169            <td class="entry_range">
22170              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22171            </td>
22172
22173            <td class="entry_hal_version">
22174              <p>3.<wbr/>2</p>
22175            </td>
22176
22177            <td class="entry_tags">
22178            </td>
22179
22180          </tr>
22181          <tr class="entries_header">
22182            <th class="th_details" colspan="6">Details</th>
22183          </tr>
22184          <tr class="entry_cont">
22185            <td class="entry_details" colspan="6">
22186              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22187            </td>
22188          </tr>
22189
22190          <tr class="entries_header">
22191            <th class="th_details" colspan="6">HAL Implementation Details</th>
22192          </tr>
22193          <tr class="entry_cont">
22194            <td class="entry_details" colspan="6">
22195              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
22196            </td>
22197          </tr>
22198
22199          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22200           <!-- end of entry -->
22201
22202
22203          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22204            <td class="entry_name
22205             " rowspan="5">
22206              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22207            </td>
22208            <td class="entry_type">
22209                <span class="entry_type_name">int32</span>
22210                <span class="entry_type_container">x</span>
22211
22212                <span class="entry_type_array">
22213                  4 x num_regions
22214                </span>
22215              <span class="entry_type_visibility"> [public as rectangle]</span>
22216
22217
22218
22219
22220
22221
22222            </td> <!-- entry_type -->
22223
22224            <td class="entry_description">
22225              <p>List of disjoint rectangles indicating the sensor
22226optically shielded black pixel regions.<wbr/></p>
22227            </td>
22228
22229            <td class="entry_units">
22230            </td>
22231
22232            <td class="entry_range">
22233            </td>
22234
22235            <td class="entry_hal_version">
22236              <p>3.<wbr/>2</p>
22237            </td>
22238
22239            <td class="entry_tags">
22240            </td>
22241
22242          </tr>
22243          <tr class="entries_header">
22244            <th class="th_details" colspan="6">Details</th>
22245          </tr>
22246          <tr class="entry_cont">
22247            <td class="entry_details" colspan="6">
22248              <p>In most camera sensors,<wbr/> the active array is surrounded by some
22249optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22250provides a reliable black reference for black level compensation
22251in active array region.<wbr/></p>
22252<p>This key provides a list of disjoint rectangles specifying the
22253regions of optically shielded (with metal shield) black pixel
22254regions if the camera device is capable of reading out these black
22255pixels in the output raw images.<wbr/> In comparison to the fixed black
22256level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22257may provide a more accurate way for the application to calculate
22258black level of each captured raw images.<wbr/></p>
22259<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
22260<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22261            </td>
22262          </tr>
22263
22264          <tr class="entries_header">
22265            <th class="th_details" colspan="6">HAL Implementation Details</th>
22266          </tr>
22267          <tr class="entry_cont">
22268            <td class="entry_details" colspan="6">
22269              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22270must be &gt;= (0,<wbr/>0) and &lt;=
22271<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
22272&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
22273outside the region reported by
22274<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>
22275<p>The HAL must report minimal number of disjoint regions for the
22276optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22277be covered by one rectangle,<wbr/> the HAL must not split this region into
22278multiple rectangles.<wbr/></p>
22279            </td>
22280          </tr>
22281
22282          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22283           <!-- end of entry -->
22284
22285
22286          <tr class="entry" id="static_android.sensor.opaqueRawSize">
22287            <td class="entry_name
22288             " rowspan="5">
22289              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22290            </td>
22291            <td class="entry_type">
22292                <span class="entry_type_name">int32</span>
22293                <span class="entry_type_container">x</span>
22294
22295                <span class="entry_type_array">
22296                  n x 3
22297                </span>
22298              <span class="entry_type_visibility"> [system]</span>
22299
22300
22301
22302
22303
22304
22305            </td> <!-- entry_type -->
22306
22307            <td class="entry_description">
22308              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22309            </td>
22310
22311            <td class="entry_units">
22312            </td>
22313
22314            <td class="entry_range">
22315              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22316the camera</p>
22317            </td>
22318
22319            <td class="entry_hal_version">
22320              <p>3.<wbr/>2</p>
22321            </td>
22322
22323            <td class="entry_tags">
22324            </td>
22325
22326          </tr>
22327          <tr class="entries_header">
22328            <th class="th_details" colspan="6">Details</th>
22329          </tr>
22330          <tr class="entry_cont">
22331            <td class="entry_details" colspan="6">
22332              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22333This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22334All RAW_<wbr/>OPAQUE output stream configuration listed in
22335<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22336this key.<wbr/></p>
22337            </td>
22338          </tr>
22339
22340          <tr class="entries_header">
22341            <th class="th_details" colspan="6">HAL Implementation Details</th>
22342          </tr>
22343          <tr class="entry_cont">
22344            <td class="entry_details" colspan="6">
22345              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22346<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22347key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22348framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22349between rows.<wbr/></p>
22350            </td>
22351          </tr>
22352
22353          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22354           <!-- end of entry -->
22355
22356
22357
22358      <!-- end of kind -->
22359      </tbody>
22360      <tr><td colspan="7" class="kind">dynamic</td></tr>
22361
22362      <thead class="entries_header">
22363        <tr>
22364          <th class="th_name">Property Name</th>
22365          <th class="th_type">Type</th>
22366          <th class="th_description">Description</th>
22367          <th class="th_units">Units</th>
22368          <th class="th_range">Range</th>
22369          <th class="th_hal_version">Initial HIDL HAL version</th>
22370          <th class="th_tags">Tags</th>
22371        </tr>
22372      </thead>
22373
22374      <tbody>
22375
22376
22377
22378
22379
22380
22381
22382
22383
22384
22385          <tr class="entry" id="dynamic_android.sensor.exposureTime">
22386            <td class="entry_name
22387             " rowspan="3">
22388              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22389            </td>
22390            <td class="entry_type">
22391                <span class="entry_type_name">int64</span>
22392
22393              <span class="entry_type_visibility"> [public]</span>
22394
22395
22396              <span class="entry_type_hwlevel">[full] </span>
22397
22398
22399
22400
22401            </td> <!-- entry_type -->
22402
22403            <td class="entry_description">
22404              <p>Duration each pixel is exposed to
22405light.<wbr/></p>
22406            </td>
22407
22408            <td class="entry_units">
22409              Nanoseconds
22410            </td>
22411
22412            <td class="entry_range">
22413              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22414            </td>
22415
22416            <td class="entry_hal_version">
22417              <p>3.<wbr/>2</p>
22418            </td>
22419
22420            <td class="entry_tags">
22421              <ul class="entry_tags">
22422                  <li><a href="#tag_V1">V1</a></li>
22423              </ul>
22424            </td>
22425
22426          </tr>
22427          <tr class="entries_header">
22428            <th class="th_details" colspan="6">Details</th>
22429          </tr>
22430          <tr class="entry_cont">
22431            <td class="entry_details" colspan="6">
22432              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22433duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22434The final exposure time used will be available in the output capture result.<wbr/></p>
22435<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
22436OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22437            </td>
22438          </tr>
22439
22440
22441          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22442           <!-- end of entry -->
22443
22444
22445          <tr class="entry" id="dynamic_android.sensor.frameDuration">
22446            <td class="entry_name
22447             " rowspan="5">
22448              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22449            </td>
22450            <td class="entry_type">
22451                <span class="entry_type_name">int64</span>
22452
22453              <span class="entry_type_visibility"> [public]</span>
22454
22455
22456              <span class="entry_type_hwlevel">[full] </span>
22457
22458
22459
22460
22461            </td> <!-- entry_type -->
22462
22463            <td class="entry_description">
22464              <p>Duration from start of frame exposure to
22465start of next frame exposure.<wbr/></p>
22466            </td>
22467
22468            <td class="entry_units">
22469              Nanoseconds
22470            </td>
22471
22472            <td class="entry_range">
22473              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
22474The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22475            </td>
22476
22477            <td class="entry_hal_version">
22478              <p>3.<wbr/>2</p>
22479            </td>
22480
22481            <td class="entry_tags">
22482              <ul class="entry_tags">
22483                  <li><a href="#tag_V1">V1</a></li>
22484              </ul>
22485            </td>
22486
22487          </tr>
22488          <tr class="entries_header">
22489            <th class="th_details" colspan="6">Details</th>
22490          </tr>
22491          <tr class="entry_cont">
22492            <td class="entry_details" colspan="6">
22493              <p>The maximum frame rate that can be supported by a camera subsystem is
22494a function of many factors:</p>
22495<ul>
22496<li>Requested resolutions of output image streams</li>
22497<li>Availability of binning /<wbr/> skipping modes on the imager</li>
22498<li>The bandwidth of the imager interface</li>
22499<li>The bandwidth of the various ISP processing blocks</li>
22500</ul>
22501<p>Since these factors can vary greatly between different ISPs and
22502sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22503restrictions with as simple a model as possible.<wbr/></p>
22504<p>The model presented has the following characteristics:</p>
22505<ul>
22506<li>The image sensor is always configured to output the smallest
22507resolution possible given the application's requested output stream
22508sizes.<wbr/>  The smallest resolution is defined as being at least as large
22509as the largest requested output stream size; the camera pipeline must
22510never digitally upsample sensor data when the crop region covers the
22511whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22512resolutions are configured,<wbr/> the sensor can provide a higher frame
22513rate.<wbr/></li>
22514<li>Since any request may use any or all the currently configured
22515output streams,<wbr/> the sensor and ISP must be configured to support
22516scaling a single capture to all the streams at the same time.<wbr/>  This
22517means the camera pipeline must be ready to produce the largest
22518requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22519frame rate of a given configured stream set is governed only by the
22520largest requested stream resolution.<wbr/></li>
22521<li>Using more than one output stream in a request does not affect the
22522frame duration.<wbr/></li>
22523<li>Certain format-streams may need to do additional background processing
22524before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22525can run concurrently to the rest of the camera pipeline,<wbr/> but
22526cannot process more than 1 capture at a time.<wbr/></li>
22527</ul>
22528<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22529<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22530These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22531possible for a given stream configuration.<wbr/></p>
22532<p>Specifically,<wbr/> the application can use the following rules to
22533determine the minimum frame duration it can request from the camera
22534device:</p>
22535<ol>
22536<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22537<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
22538(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22539<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22540out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
22541</ol>
22542<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>
22543using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22544state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22545this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22546<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22547new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22548<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22549buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22550<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
22551<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
22552OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22553            </td>
22554          </tr>
22555
22556          <tr class="entries_header">
22557            <th class="th_details" colspan="6">HAL Implementation Details</th>
22558          </tr>
22559          <tr class="entry_cont">
22560            <td class="entry_details" colspan="6">
22561              <p>For more details about stalling,<wbr/> see
22562<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22563            </td>
22564          </tr>
22565
22566          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22567           <!-- end of entry -->
22568
22569
22570          <tr class="entry" id="dynamic_android.sensor.sensitivity">
22571            <td class="entry_name
22572             " rowspan="5">
22573              android.<wbr/>sensor.<wbr/>sensitivity
22574            </td>
22575            <td class="entry_type">
22576                <span class="entry_type_name">int32</span>
22577
22578              <span class="entry_type_visibility"> [public]</span>
22579
22580
22581              <span class="entry_type_hwlevel">[full] </span>
22582
22583
22584
22585
22586            </td> <!-- entry_type -->
22587
22588            <td class="entry_description">
22589              <p>The amount of gain applied to sensor data
22590before processing.<wbr/></p>
22591            </td>
22592
22593            <td class="entry_units">
22594              ISO arithmetic units
22595            </td>
22596
22597            <td class="entry_range">
22598              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22599            </td>
22600
22601            <td class="entry_hal_version">
22602              <p>3.<wbr/>2</p>
22603            </td>
22604
22605            <td class="entry_tags">
22606              <ul class="entry_tags">
22607                  <li><a href="#tag_V1">V1</a></li>
22608              </ul>
22609            </td>
22610
22611          </tr>
22612          <tr class="entries_header">
22613            <th class="th_details" colspan="6">Details</th>
22614          </tr>
22615          <tr class="entry_cont">
22616            <td class="entry_details" colspan="6">
22617              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22618as defined in ISO 12232:2006.<wbr/></p>
22619<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
22620if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
22621is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22622<p>If the camera device cannot apply the exact sensitivity
22623requested,<wbr/> it will reduce the gain to the nearest supported
22624value.<wbr/> The final sensitivity used will be available in the
22625output capture result.<wbr/></p>
22626<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
22627OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22628            </td>
22629          </tr>
22630
22631          <tr class="entries_header">
22632            <th class="th_details" colspan="6">HAL Implementation Details</th>
22633          </tr>
22634          <tr class="entry_cont">
22635            <td class="entry_details" colspan="6">
22636              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22637            </td>
22638          </tr>
22639
22640          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22641           <!-- end of entry -->
22642
22643
22644          <tr class="entry" id="dynamic_android.sensor.timestamp">
22645            <td class="entry_name
22646             " rowspan="5">
22647              android.<wbr/>sensor.<wbr/>timestamp
22648            </td>
22649            <td class="entry_type">
22650                <span class="entry_type_name">int64</span>
22651
22652              <span class="entry_type_visibility"> [public]</span>
22653
22654
22655              <span class="entry_type_hwlevel">[legacy] </span>
22656
22657
22658
22659
22660            </td> <!-- entry_type -->
22661
22662            <td class="entry_description">
22663              <p>Time at start of exposure of first
22664row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22665            </td>
22666
22667            <td class="entry_units">
22668              Nanoseconds
22669            </td>
22670
22671            <td class="entry_range">
22672              <p>&gt; 0</p>
22673            </td>
22674
22675            <td class="entry_hal_version">
22676              <p>3.<wbr/>2</p>
22677            </td>
22678
22679            <td class="entry_tags">
22680              <ul class="entry_tags">
22681                  <li><a href="#tag_BC">BC</a></li>
22682              </ul>
22683            </td>
22684
22685          </tr>
22686          <tr class="entries_header">
22687            <th class="th_details" colspan="6">Details</th>
22688          </tr>
22689          <tr class="entry_cont">
22690            <td class="entry_details" colspan="6">
22691              <p>The timestamps are also included in all image
22692buffers produced for the same capture,<wbr/> and will be identical
22693on all the outputs.<wbr/></p>
22694<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22695the timestamps measure time since an unspecified starting point,<wbr/>
22696and are monotonically increasing.<wbr/> They can be compared with the
22697timestamps for other captures from the same camera device,<wbr/> but are
22698not guaranteed to be comparable to any other time source.<wbr/></p>
22699<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22700timestamps 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
22701be compared to other timestamps from other subsystems that
22702are using that base.<wbr/></p>
22703<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22704the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22705timestamp</a> in the TotalCaptureResult that was used to create the
22706reprocess capture request.<wbr/></p>
22707            </td>
22708          </tr>
22709
22710          <tr class="entries_header">
22711            <th class="th_details" colspan="6">HAL Implementation Details</th>
22712          </tr>
22713          <tr class="entry_cont">
22714            <td class="entry_details" colspan="6">
22715              <p>All timestamps must be in reference to the kernel's
22716CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22717time spent asleep.<wbr/> This allows for synchronization with
22718sensors that continue to operate while the system is
22719otherwise asleep.<wbr/></p>
22720<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22721The timestamp must be synchronized with the timestamps from other
22722sensor subsystems that are using the same timebase.<wbr/></p>
22723<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22724with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22725capture request.<wbr/></p>
22726            </td>
22727          </tr>
22728
22729          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22730           <!-- end of entry -->
22731
22732
22733          <tr class="entry" id="dynamic_android.sensor.temperature">
22734            <td class="entry_name
22735             " rowspan="1">
22736              android.<wbr/>sensor.<wbr/>temperature
22737            </td>
22738            <td class="entry_type">
22739                <span class="entry_type_name">float</span>
22740
22741              <span class="entry_type_visibility"> [system]</span>
22742
22743
22744
22745
22746
22747
22748            </td> <!-- entry_type -->
22749
22750            <td class="entry_description">
22751              <p>The temperature of the sensor,<wbr/> sampled at the time
22752exposure began for this frame.<wbr/></p>
22753<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22754somewhere close to it.<wbr/></p>
22755            </td>
22756
22757            <td class="entry_units">
22758              Celsius
22759            </td>
22760
22761            <td class="entry_range">
22762              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22763            </td>
22764
22765            <td class="entry_hal_version">
22766              <p>3.<wbr/>2</p>
22767            </td>
22768
22769            <td class="entry_tags">
22770              <ul class="entry_tags">
22771                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22772              </ul>
22773            </td>
22774
22775          </tr>
22776
22777
22778          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22779           <!-- end of entry -->
22780
22781
22782          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22783            <td class="entry_name
22784             " rowspan="3">
22785              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22786            </td>
22787            <td class="entry_type">
22788                <span class="entry_type_name">rational</span>
22789                <span class="entry_type_container">x</span>
22790
22791                <span class="entry_type_array">
22792                  3
22793                </span>
22794              <span class="entry_type_visibility"> [public]</span>
22795
22796
22797
22798
22799
22800
22801            </td> <!-- entry_type -->
22802
22803            <td class="entry_description">
22804              <p>The estimated camera neutral color in the native sensor colorspace at
22805the time of capture.<wbr/></p>
22806            </td>
22807
22808            <td class="entry_units">
22809            </td>
22810
22811            <td class="entry_range">
22812            </td>
22813
22814            <td class="entry_hal_version">
22815              <p>3.<wbr/>2</p>
22816            </td>
22817
22818            <td class="entry_tags">
22819              <ul class="entry_tags">
22820                  <li><a href="#tag_RAW">RAW</a></li>
22821              </ul>
22822            </td>
22823
22824          </tr>
22825          <tr class="entries_header">
22826            <th class="th_details" colspan="6">Details</th>
22827          </tr>
22828          <tr class="entry_cont">
22829            <td class="entry_details" colspan="6">
22830              <p>This value gives the neutral color point encoded as an RGB value in the
22831native sensor color space.<wbr/>  The neutral color point indicates the
22832currently estimated white point of the scene illumination.<wbr/>  It can be
22833used to interpolate between the provided color transforms when
22834processing raw sensor data.<wbr/></p>
22835<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22836            </td>
22837          </tr>
22838
22839
22840          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22841           <!-- end of entry -->
22842
22843
22844          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22845            <td class="entry_name
22846             " rowspan="5">
22847              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22848            </td>
22849            <td class="entry_type">
22850                <span class="entry_type_name">double</span>
22851                <span class="entry_type_container">x</span>
22852
22853                <span class="entry_type_array">
22854                  2 x CFA Channels
22855                </span>
22856              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22857
22858
22859
22860
22861                <div class="entry_type_notes">Pairs of noise model coefficients</div>
22862
22863
22864            </td> <!-- entry_type -->
22865
22866            <td class="entry_description">
22867              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22868            </td>
22869
22870            <td class="entry_units">
22871            </td>
22872
22873            <td class="entry_range">
22874            </td>
22875
22876            <td class="entry_hal_version">
22877              <p>3.<wbr/>2</p>
22878            </td>
22879
22880            <td class="entry_tags">
22881              <ul class="entry_tags">
22882                  <li><a href="#tag_RAW">RAW</a></li>
22883              </ul>
22884            </td>
22885
22886          </tr>
22887          <tr class="entries_header">
22888            <th class="th_details" colspan="6">Details</th>
22889          </tr>
22890          <tr class="entry_cont">
22891            <td class="entry_details" colspan="6">
22892              <p>This key contains two noise model coefficients for each CFA channel
22893corresponding to the sensor amplification (S) and sensor readout
22894noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22895in the same order as channels listed for the CFA layout key
22896(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22897represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22898the first member of the Pair at index n is the S coefficient and the
22899second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22900<p>These coefficients are used in a two parameter noise model to describe
22901the amount of noise present in the image for each CFA channel.<wbr/>  The
22902noise model used here is:</p>
22903<p>N(x) = sqrt(Sx + O)</p>
22904<p>Where x represents the recorded signal of a CFA channel normalized to
22905the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22906that channel.<wbr/></p>
22907<p>A more detailed description of the noise model can be found in the
22908Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22909            </td>
22910          </tr>
22911
22912          <tr class="entries_header">
22913            <th class="th_details" colspan="6">HAL Implementation Details</th>
22914          </tr>
22915          <tr class="entry_cont">
22916            <td class="entry_details" colspan="6">
22917              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22918an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22919for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22920channel,<wbr/> etc.<wbr/></p>
22921            </td>
22922          </tr>
22923
22924          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22925           <!-- end of entry -->
22926
22927
22928          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22929            <td class="entry_name
22930             " rowspan="3">
22931              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22932            </td>
22933            <td class="entry_type">
22934                <span class="entry_type_name">float</span>
22935                <span class="entry_type_container">x</span>
22936
22937                <span class="entry_type_array">
22938                  hue_samples x saturation_samples x value_samples x 3
22939                </span>
22940              <span class="entry_type_visibility"> [system]</span>
22941
22942
22943
22944
22945                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22946
22947
22948            </td> <!-- entry_type -->
22949
22950            <td class="entry_description">
22951              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22952for each pixel.<wbr/></p>
22953            </td>
22954
22955            <td class="entry_units">
22956
22957          The hue shift is given in degrees; saturation and value scale factors are
22958          unitless and are between 0 and 1 inclusive
22959
22960            </td>
22961
22962            <td class="entry_range">
22963            </td>
22964
22965            <td class="entry_hal_version">
22966              <p>3.<wbr/>2</p>
22967            </td>
22968
22969            <td class="entry_tags">
22970              <ul class="entry_tags">
22971                  <li><a href="#tag_RAW">RAW</a></li>
22972              </ul>
22973            </td>
22974
22975          </tr>
22976          <tr class="entries_header">
22977            <th class="th_details" colspan="6">Details</th>
22978          </tr>
22979          <tr class="entry_cont">
22980            <td class="entry_details" colspan="6">
22981              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22982<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22983<p>Each entry of this map contains three floats corresponding to the
22984hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22985hue shift has the lowest index.<wbr/> The map entries are stored in the key
22986in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22987hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22988inner loop.<wbr/> All zero input saturation entries are required to have a
22989value scale factor of 1.<wbr/>0.<wbr/></p>
22990            </td>
22991          </tr>
22992
22993
22994          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22995           <!-- end of entry -->
22996
22997
22998          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22999            <td class="entry_name
23000             " rowspan="3">
23001              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
23002            </td>
23003            <td class="entry_type">
23004                <span class="entry_type_name">float</span>
23005                <span class="entry_type_container">x</span>
23006
23007                <span class="entry_type_array">
23008                  samples x 2
23009                </span>
23010              <span class="entry_type_visibility"> [system]</span>
23011
23012
23013
23014
23015                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
23016
23017
23018            </td> <!-- entry_type -->
23019
23020            <td class="entry_description">
23021              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
23022            </td>
23023
23024            <td class="entry_units">
23025            </td>
23026
23027            <td class="entry_range">
23028              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
23029<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
23030sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
23031            </td>
23032
23033            <td class="entry_hal_version">
23034              <p>3.<wbr/>2</p>
23035            </td>
23036
23037            <td class="entry_tags">
23038              <ul class="entry_tags">
23039                  <li><a href="#tag_RAW">RAW</a></li>
23040              </ul>
23041            </td>
23042
23043          </tr>
23044          <tr class="entries_header">
23045            <th class="th_details" colspan="6">Details</th>
23046          </tr>
23047          <tr class="entry_cont">
23048            <td class="entry_details" colspan="6">
23049              <p>This key contains a default tone curve that can be applied while
23050processing the image as a starting point for user adjustments.<wbr/>
23051The curve is specified as a list of value pairs in linear gamma.<wbr/>
23052The curve is interpolated using a cubic spline.<wbr/></p>
23053            </td>
23054          </tr>
23055
23056
23057          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23058           <!-- end of entry -->
23059
23060
23061          <tr class="entry" id="dynamic_android.sensor.greenSplit">
23062            <td class="entry_name
23063             " rowspan="5">
23064              android.<wbr/>sensor.<wbr/>green<wbr/>Split
23065            </td>
23066            <td class="entry_type">
23067                <span class="entry_type_name">float</span>
23068
23069              <span class="entry_type_visibility"> [public]</span>
23070
23071
23072
23073
23074
23075
23076            </td> <!-- entry_type -->
23077
23078            <td class="entry_description">
23079              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23080            </td>
23081
23082            <td class="entry_units">
23083            </td>
23084
23085            <td class="entry_range">
23086              <p>&gt;= 0</p>
23087            </td>
23088
23089            <td class="entry_hal_version">
23090              <p>3.<wbr/>2</p>
23091            </td>
23092
23093            <td class="entry_tags">
23094              <ul class="entry_tags">
23095                  <li><a href="#tag_RAW">RAW</a></li>
23096              </ul>
23097            </td>
23098
23099          </tr>
23100          <tr class="entries_header">
23101            <th class="th_details" colspan="6">Details</th>
23102          </tr>
23103          <tr class="entry_cont">
23104            <td class="entry_details" colspan="6">
23105              <p>This value is an estimate of the worst case split between the
23106Bayer green channels in the red and blue rows in the sensor color
23107filter array.<wbr/></p>
23108<p>The green split is calculated as follows:</p>
23109<ol>
23110<li>A 5x5 pixel (or larger) window W within the active sensor array is
23111chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23112mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
23113chosen is implementation defined,<wbr/> and should be chosen to provide a
23114green split estimate that is both representative of the entire image
23115for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23116<li>The arithmetic mean of the green channels from the red
23117rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23118<li>The arithmetic mean of the green channels from the blue
23119rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23120<li>The maximum ratio R of the two means is computed as follows:
23121<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23122</ol>
23123<p>The ratio R is the green split divergence reported for this property,<wbr/>
23124which represents how much the green channels differ in the mosaic
23125pattern.<wbr/>  This value is typically used to determine the treatment of
23126the green mosaic channels when demosaicing.<wbr/></p>
23127<p>The green split value can be roughly interpreted as follows:</p>
23128<ul>
23129<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
23130<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
23131correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23132<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
23133a usuable image (&gt;20% divergence).<wbr/></li>
23134</ul>
23135            </td>
23136          </tr>
23137
23138          <tr class="entries_header">
23139            <th class="th_details" colspan="6">HAL Implementation Details</th>
23140          </tr>
23141          <tr class="entry_cont">
23142            <td class="entry_details" colspan="6">
23143              <p>The green split given may be a static value based on prior
23144characterization of the camera sensor using the green split
23145calculation method given here over a large,<wbr/> representative,<wbr/> sample
23146set of images.<wbr/>  Other methods of calculation that produce equivalent
23147results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23148            </td>
23149          </tr>
23150
23151          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23152           <!-- end of entry -->
23153
23154
23155          <tr class="entry" id="dynamic_android.sensor.testPatternData">
23156            <td class="entry_name
23157             " rowspan="5">
23158              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23159            </td>
23160            <td class="entry_type">
23161                <span class="entry_type_name">int32</span>
23162                <span class="entry_type_container">x</span>
23163
23164                <span class="entry_type_array">
23165                  4
23166                </span>
23167              <span class="entry_type_visibility"> [public]</span>
23168
23169
23170
23171
23172
23173
23174            </td> <!-- entry_type -->
23175
23176            <td class="entry_description">
23177              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23178when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23179            </td>
23180
23181            <td class="entry_units">
23182            </td>
23183
23184            <td class="entry_range">
23185            </td>
23186
23187            <td class="entry_hal_version">
23188              <p>3.<wbr/>2</p>
23189            </td>
23190
23191            <td class="entry_tags">
23192            </td>
23193
23194          </tr>
23195          <tr class="entries_header">
23196            <th class="th_details" colspan="6">Details</th>
23197          </tr>
23198          <tr class="entry_cont">
23199            <td class="entry_details" colspan="6">
23200              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23201The camera device then uses the most significant X bits
23202that correspond to how many bits are in its Bayer raw sensor
23203output.<wbr/></p>
23204<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2320510 most significant bits from each color channel.<wbr/></p>
23206            </td>
23207          </tr>
23208
23209          <tr class="entries_header">
23210            <th class="th_details" colspan="6">HAL Implementation Details</th>
23211          </tr>
23212          <tr class="entry_cont">
23213            <td class="entry_details" colspan="6">
23214
23215            </td>
23216          </tr>
23217
23218          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23219           <!-- end of entry -->
23220
23221
23222          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23223            <td class="entry_name
23224             " rowspan="5">
23225              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23226            </td>
23227            <td class="entry_type">
23228                <span class="entry_type_name entry_type_name_enum">int32</span>
23229
23230              <span class="entry_type_visibility"> [public]</span>
23231
23232
23233
23234
23235
23236                <ul class="entry_type_enum">
23237                  <li>
23238                    <span class="entry_type_enum_name">OFF (v3.2)</span>
23239                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23240device returns captures from the image sensor.<wbr/></p>
23241<p>This is the default if the key is not set.<wbr/></p></span>
23242                  </li>
23243                  <li>
23244                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23245                    <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
23246respective color channel provided in
23247<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23248<p>For example:</p>
23249<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23250</code></pre>
23251<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23252<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23253</code></pre>
23254<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23255are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23256                  </li>
23257                  <li>
23258                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23259                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23260<p>The vertical bars (left-to-right) are as follows:</p>
23261<ul>
23262<li>100% white</li>
23263<li>yellow</li>
23264<li>cyan</li>
23265<li>green</li>
23266<li>magenta</li>
23267<li>red</li>
23268<li>blue</li>
23269<li>black</li>
23270</ul>
23271<p>In general the image would look like the following:</p>
23272<pre><code>W Y C G M R B K
23273W Y C G M R B K
23274W Y C G M R B K
23275W Y C G M R B K
23276W Y C G M R B K
23277.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23278.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23279.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23280
23281(B = Blue,<wbr/> K = Black)
23282</code></pre>
23283<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23284When this is not possible,<wbr/> the bar size should be rounded
23285down to the nearest integer and the pattern can repeat
23286on the right side.<wbr/></p>
23287<p>Each bar's height must always take up the full sensor
23288pixel array height.<wbr/></p>
23289<p>Each pixel in this test pattern must be set to either
232900% intensity or 100% intensity.<wbr/></p></span>
23291                  </li>
23292                  <li>
23293                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23294                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23295each bar should start at its specified color at the top,<wbr/>
23296and fade to gray at the bottom.<wbr/></p>
23297<p>Furthermore each bar is further subdivided into a left and
23298right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23299and the right half should have a quantized gradient.<wbr/></p>
23300<p>In particular,<wbr/> the right half's should consist of blocks of the
23301same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23302<p>The least significant bits in the quantized gradient should
23303be copied from the most significant bits of the smooth gradient.<wbr/></p>
23304<p>The height of each bar should always be a multiple of 128.<wbr/>
23305When this is not the case,<wbr/> the pattern should repeat at the bottom
23306of the image.<wbr/></p></span>
23307                  </li>
23308                  <li>
23309                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
23310                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23311generated from a PN9 512-bit sequence (typically implemented
23312in hardware with a linear feedback shift register).<wbr/></p>
23313<p>The generator should be reset at the beginning of each frame,<wbr/>
23314and thus each subsequent raw frame with this test pattern should
23315be exactly the same as the last.<wbr/></p></span>
23316                  </li>
23317                  <li>
23318                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23319                    <span class="entry_type_enum_value">256</span>
23320                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23321available only on this camera device are at least this numeric
23322value.<wbr/></p>
23323<p>All of the custom test patterns will be static
23324(that is the raw image must not vary from frame to frame).<wbr/></p></span>
23325                  </li>
23326                </ul>
23327
23328            </td> <!-- entry_type -->
23329
23330            <td class="entry_description">
23331              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23332doing a real exposure from the camera.<wbr/></p>
23333            </td>
23334
23335            <td class="entry_units">
23336            </td>
23337
23338            <td class="entry_range">
23339              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23340            </td>
23341
23342            <td class="entry_hal_version">
23343              <p>3.<wbr/>2</p>
23344            </td>
23345
23346            <td class="entry_tags">
23347            </td>
23348
23349          </tr>
23350          <tr class="entries_header">
23351            <th class="th_details" colspan="6">Details</th>
23352          </tr>
23353          <tr class="entry_cont">
23354            <td class="entry_details" colspan="6">
23355              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23356by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23357work as normal.<wbr/></p>
23358<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23359occur (and that the test pattern remain unmodified,<wbr/> since the flash
23360would not actually affect it).<wbr/></p>
23361<p>Defaults to OFF.<wbr/></p>
23362            </td>
23363          </tr>
23364
23365          <tr class="entries_header">
23366            <th class="th_details" colspan="6">HAL Implementation Details</th>
23367          </tr>
23368          <tr class="entry_cont">
23369            <td class="entry_details" colspan="6">
23370              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23371<p>The HAL may choose to substitute test patterns from the sensor
23372with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23373indistinguishable to the ISP whether the data came from the
23374sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23375            </td>
23376          </tr>
23377
23378          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23379           <!-- end of entry -->
23380
23381
23382          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23383            <td class="entry_name
23384             " rowspan="5">
23385              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23386            </td>
23387            <td class="entry_type">
23388                <span class="entry_type_name">int64</span>
23389
23390              <span class="entry_type_visibility"> [public]</span>
23391
23392
23393              <span class="entry_type_hwlevel">[limited] </span>
23394
23395
23396
23397
23398            </td> <!-- entry_type -->
23399
23400            <td class="entry_description">
23401              <p>Duration between the start of first row exposure
23402and the start of last row exposure.<wbr/></p>
23403            </td>
23404
23405            <td class="entry_units">
23406              Nanoseconds
23407            </td>
23408
23409            <td class="entry_range">
23410              <p>&gt;= 0 and &lt;
23411<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23412            </td>
23413
23414            <td class="entry_hal_version">
23415              <p>3.<wbr/>2</p>
23416            </td>
23417
23418            <td class="entry_tags">
23419              <ul class="entry_tags">
23420                  <li><a href="#tag_V1">V1</a></li>
23421              </ul>
23422            </td>
23423
23424          </tr>
23425          <tr class="entries_header">
23426            <th class="th_details" colspan="6">Details</th>
23427          </tr>
23428          <tr class="entry_cont">
23429            <td class="entry_details" colspan="6">
23430              <p>This is the exposure time skew between the first and last
23431row exposure start times.<wbr/> The first row and the last row are
23432the first and last rows inside of the
23433<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23434<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23435to the frame readout time.<wbr/></p>
23436            </td>
23437          </tr>
23438
23439          <tr class="entries_header">
23440            <th class="th_details" colspan="6">HAL Implementation Details</th>
23441          </tr>
23442          <tr class="entry_cont">
23443            <td class="entry_details" colspan="6">
23444              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23445exposure at the same time.<wbr/></p>
23446            </td>
23447          </tr>
23448
23449          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23450           <!-- end of entry -->
23451
23452
23453          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23454            <td class="entry_name
23455             " rowspan="5">
23456              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23457            </td>
23458            <td class="entry_type">
23459                <span class="entry_type_name">float</span>
23460                <span class="entry_type_container">x</span>
23461
23462                <span class="entry_type_array">
23463                  4
23464                </span>
23465              <span class="entry_type_visibility"> [public]</span>
23466
23467
23468
23469
23470                <div class="entry_type_notes">2x2 raw count block</div>
23471
23472
23473            </td> <!-- entry_type -->
23474
23475            <td class="entry_description">
23476              <p>A per-frame dynamic black level offset for each of the color filter
23477arrangement (CFA) mosaic channels.<wbr/></p>
23478            </td>
23479
23480            <td class="entry_units">
23481            </td>
23482
23483            <td class="entry_range">
23484              <p>&gt;= 0 for each.<wbr/></p>
23485            </td>
23486
23487            <td class="entry_hal_version">
23488              <p>3.<wbr/>2</p>
23489            </td>
23490
23491            <td class="entry_tags">
23492              <ul class="entry_tags">
23493                  <li><a href="#tag_RAW">RAW</a></li>
23494              </ul>
23495            </td>
23496
23497          </tr>
23498          <tr class="entries_header">
23499            <th class="th_details" colspan="6">Details</th>
23500          </tr>
23501          <tr class="entry_cont">
23502            <td class="entry_details" colspan="6">
23503              <p>Camera sensor black levels may vary dramatically for different
23504capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23505level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23506inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23507camera device internal pipeline relies on reliable black level values
23508to process the raw images appropriately.<wbr/> To get the best image
23509quality,<wbr/> the camera device may choose to estimate the per frame black
23510level values either based on optically shielded black regions
23511(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23512<p>This key reports the camera device estimated per-frame zero light
23513value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23514<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23515approximation of the actual black level values.<wbr/> This value is the
23516black level used in camera device internal image processing pipeline
23517and generally more accurate than the fixed black level values.<wbr/>
23518However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23519may not be as accurate as the black level values calculated from the
23520optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23521<p>The values are given in the same order as channels listed for the CFA
23522layout 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
23523nth value given corresponds to the black level offset for the nth
23524color channel listed in the CFA.<wbr/></p>
23525<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is available or the
23526camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23527            </td>
23528          </tr>
23529
23530          <tr class="entries_header">
23531            <th class="th_details" colspan="6">HAL Implementation Details</th>
23532          </tr>
23533          <tr class="entry_cont">
23534            <td class="entry_details" colspan="6">
23535              <p>The values are given in row-column scan order,<wbr/> with the first value
23536corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23537            </td>
23538          </tr>
23539
23540          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23541           <!-- end of entry -->
23542
23543
23544          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23545            <td class="entry_name
23546             " rowspan="5">
23547              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23548            </td>
23549            <td class="entry_type">
23550                <span class="entry_type_name">int32</span>
23551
23552              <span class="entry_type_visibility"> [public]</span>
23553
23554
23555
23556
23557
23558
23559            </td> <!-- entry_type -->
23560
23561            <td class="entry_description">
23562              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23563            </td>
23564
23565            <td class="entry_units">
23566            </td>
23567
23568            <td class="entry_range">
23569              <p>&gt;= 0</p>
23570            </td>
23571
23572            <td class="entry_hal_version">
23573              <p>3.<wbr/>2</p>
23574            </td>
23575
23576            <td class="entry_tags">
23577              <ul class="entry_tags">
23578                  <li><a href="#tag_RAW">RAW</a></li>
23579              </ul>
23580            </td>
23581
23582          </tr>
23583          <tr class="entries_header">
23584            <th class="th_details" colspan="6">Details</th>
23585          </tr>
23586          <tr class="entry_cont">
23587            <td class="entry_details" colspan="6">
23588              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23589capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23590level will change accordingly.<wbr/> This key is similar to
23591<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23592estimated white level for each frame.<wbr/></p>
23593<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23594available or the camera device advertises this key via
23595<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23596            </td>
23597          </tr>
23598
23599          <tr class="entries_header">
23600            <th class="th_details" colspan="6">HAL Implementation Details</th>
23601          </tr>
23602          <tr class="entry_cont">
23603            <td class="entry_details" colspan="6">
23604              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23605so the value for linear sensors should not be significantly lower
23606than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23607            </td>
23608          </tr>
23609
23610          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23611           <!-- end of entry -->
23612
23613
23614
23615      <!-- end of kind -->
23616      </tbody>
23617
23618  <!-- end of section -->
23619  <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23620
23621
23622      <tr><td colspan="7" class="kind">controls</td></tr>
23623
23624      <thead class="entries_header">
23625        <tr>
23626          <th class="th_name">Property Name</th>
23627          <th class="th_type">Type</th>
23628          <th class="th_description">Description</th>
23629          <th class="th_units">Units</th>
23630          <th class="th_range">Range</th>
23631          <th class="th_hal_version">Initial HIDL HAL version</th>
23632          <th class="th_tags">Tags</th>
23633        </tr>
23634      </thead>
23635
23636      <tbody>
23637
23638
23639
23640
23641
23642
23643
23644
23645
23646
23647          <tr class="entry" id="controls_android.shading.mode">
23648            <td class="entry_name
23649             " rowspan="3">
23650              android.<wbr/>shading.<wbr/>mode
23651            </td>
23652            <td class="entry_type">
23653                <span class="entry_type_name entry_type_name_enum">byte</span>
23654
23655              <span class="entry_type_visibility"> [public]</span>
23656
23657
23658              <span class="entry_type_hwlevel">[full] </span>
23659
23660
23661
23662                <ul class="entry_type_enum">
23663                  <li>
23664                    <span class="entry_type_enum_name">OFF (v3.2)</span>
23665                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23666                  </li>
23667                  <li>
23668                    <span class="entry_type_enum_name">FAST (v3.2)</span>
23669                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23670frame rate relative to sensor raw output</p></span>
23671                  </li>
23672                  <li>
23673                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23674                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23675cost of possibly reduced frame rate.<wbr/></p></span>
23676                  </li>
23677                </ul>
23678
23679            </td> <!-- entry_type -->
23680
23681            <td class="entry_description">
23682              <p>Quality of lens shading correction applied
23683to the image data.<wbr/></p>
23684            </td>
23685
23686            <td class="entry_units">
23687            </td>
23688
23689            <td class="entry_range">
23690              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23691            </td>
23692
23693            <td class="entry_hal_version">
23694              <p>3.<wbr/>2</p>
23695            </td>
23696
23697            <td class="entry_tags">
23698            </td>
23699
23700          </tr>
23701          <tr class="entries_header">
23702            <th class="th_details" colspan="6">Details</th>
23703          </tr>
23704          <tr class="entry_cont">
23705            <td class="entry_details" colspan="6">
23706              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23707camera device,<wbr/> and an identity lens shading map data will be provided
23708if <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
23709shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23710the 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
23711map shown below:</p>
23712<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/>
23713 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/>
23714 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/>
23715 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/>
23716 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/>
23717 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 ]
23718</code></pre>
23719<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23720device.<wbr/> Applications can request lens shading map data by setting
23721<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
23722shading 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
23723data will be the one applied by the camera device for this capture request.<wbr/></p>
23724<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23725the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23726AWB 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>
23727OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23728to be converged before using the returned shading map data.<wbr/></p>
23729            </td>
23730          </tr>
23731
23732
23733          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23734           <!-- end of entry -->
23735
23736
23737          <tr class="entry" id="controls_android.shading.strength">
23738            <td class="entry_name
23739             " rowspan="1">
23740              android.<wbr/>shading.<wbr/>strength
23741            </td>
23742            <td class="entry_type">
23743                <span class="entry_type_name">byte</span>
23744
23745              <span class="entry_type_visibility"> [system]</span>
23746
23747
23748
23749
23750
23751
23752            </td> <!-- entry_type -->
23753
23754            <td class="entry_description">
23755              <p>Control the amount of shading correction
23756applied to the images</p>
23757            </td>
23758
23759            <td class="entry_units">
23760              unitless: 1-10; 10 is full shading
23761          compensation
23762            </td>
23763
23764            <td class="entry_range">
23765            </td>
23766
23767            <td class="entry_hal_version">
23768              <p>3.<wbr/>2</p>
23769            </td>
23770
23771            <td class="entry_tags">
23772              <ul class="entry_tags">
23773                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23774              </ul>
23775            </td>
23776
23777          </tr>
23778
23779
23780          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23781           <!-- end of entry -->
23782
23783
23784
23785      <!-- end of kind -->
23786      </tbody>
23787      <tr><td colspan="7" class="kind">dynamic</td></tr>
23788
23789      <thead class="entries_header">
23790        <tr>
23791          <th class="th_name">Property Name</th>
23792          <th class="th_type">Type</th>
23793          <th class="th_description">Description</th>
23794          <th class="th_units">Units</th>
23795          <th class="th_range">Range</th>
23796          <th class="th_hal_version">Initial HIDL HAL version</th>
23797          <th class="th_tags">Tags</th>
23798        </tr>
23799      </thead>
23800
23801      <tbody>
23802
23803
23804
23805
23806
23807
23808
23809
23810
23811
23812          <tr class="entry" id="dynamic_android.shading.mode">
23813            <td class="entry_name
23814             " rowspan="3">
23815              android.<wbr/>shading.<wbr/>mode
23816            </td>
23817            <td class="entry_type">
23818                <span class="entry_type_name entry_type_name_enum">byte</span>
23819
23820              <span class="entry_type_visibility"> [public]</span>
23821
23822
23823              <span class="entry_type_hwlevel">[full] </span>
23824
23825
23826
23827                <ul class="entry_type_enum">
23828                  <li>
23829                    <span class="entry_type_enum_name">OFF (v3.2)</span>
23830                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23831                  </li>
23832                  <li>
23833                    <span class="entry_type_enum_name">FAST (v3.2)</span>
23834                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23835frame rate relative to sensor raw output</p></span>
23836                  </li>
23837                  <li>
23838                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23839                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23840cost of possibly reduced frame rate.<wbr/></p></span>
23841                  </li>
23842                </ul>
23843
23844            </td> <!-- entry_type -->
23845
23846            <td class="entry_description">
23847              <p>Quality of lens shading correction applied
23848to the image data.<wbr/></p>
23849            </td>
23850
23851            <td class="entry_units">
23852            </td>
23853
23854            <td class="entry_range">
23855              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23856            </td>
23857
23858            <td class="entry_hal_version">
23859              <p>3.<wbr/>2</p>
23860            </td>
23861
23862            <td class="entry_tags">
23863            </td>
23864
23865          </tr>
23866          <tr class="entries_header">
23867            <th class="th_details" colspan="6">Details</th>
23868          </tr>
23869          <tr class="entry_cont">
23870            <td class="entry_details" colspan="6">
23871              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23872camera device,<wbr/> and an identity lens shading map data will be provided
23873if <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
23874shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23875the 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
23876map shown below:</p>
23877<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/>
23878 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/>
23879 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/>
23880 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/>
23881 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/>
23882 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 ]
23883</code></pre>
23884<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23885device.<wbr/> Applications can request lens shading map data by setting
23886<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
23887shading 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
23888data will be the one applied by the camera device for this capture request.<wbr/></p>
23889<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23890the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23891AWB 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>
23892OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23893to be converged before using the returned shading map data.<wbr/></p>
23894            </td>
23895          </tr>
23896
23897
23898          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23899           <!-- end of entry -->
23900
23901
23902
23903      <!-- end of kind -->
23904      </tbody>
23905      <tr><td colspan="7" class="kind">static</td></tr>
23906
23907      <thead class="entries_header">
23908        <tr>
23909          <th class="th_name">Property Name</th>
23910          <th class="th_type">Type</th>
23911          <th class="th_description">Description</th>
23912          <th class="th_units">Units</th>
23913          <th class="th_range">Range</th>
23914          <th class="th_hal_version">Initial HIDL HAL version</th>
23915          <th class="th_tags">Tags</th>
23916        </tr>
23917      </thead>
23918
23919      <tbody>
23920
23921
23922
23923
23924
23925
23926
23927
23928
23929
23930          <tr class="entry" id="static_android.shading.availableModes">
23931            <td class="entry_name
23932             " rowspan="5">
23933              android.<wbr/>shading.<wbr/>available<wbr/>Modes
23934            </td>
23935            <td class="entry_type">
23936                <span class="entry_type_name">byte</span>
23937                <span class="entry_type_container">x</span>
23938
23939                <span class="entry_type_array">
23940                  n
23941                </span>
23942              <span class="entry_type_visibility"> [public as enumList]</span>
23943
23944
23945              <span class="entry_type_hwlevel">[legacy] </span>
23946
23947
23948                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23949
23950
23951            </td> <!-- entry_type -->
23952
23953            <td class="entry_description">
23954              <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>
23955            </td>
23956
23957            <td class="entry_units">
23958            </td>
23959
23960            <td class="entry_range">
23961              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23962            </td>
23963
23964            <td class="entry_hal_version">
23965              <p>3.<wbr/>2</p>
23966            </td>
23967
23968            <td class="entry_tags">
23969            </td>
23970
23971          </tr>
23972          <tr class="entries_header">
23973            <th class="th_details" colspan="6">Details</th>
23974          </tr>
23975          <tr class="entry_cont">
23976            <td class="entry_details" colspan="6">
23977              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23978Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23979list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23980LEGACY devices will always only support FAST mode.<wbr/></p>
23981            </td>
23982          </tr>
23983
23984          <tr class="entries_header">
23985            <th class="th_details" colspan="6">HAL Implementation Details</th>
23986          </tr>
23987          <tr class="entry_cont">
23988            <td class="entry_details" colspan="6">
23989              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23990available on the camera device,<wbr/> but the underlying implementation can be the same for
23991both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23992slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23993            </td>
23994          </tr>
23995
23996          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23997           <!-- end of entry -->
23998
23999
24000
24001      <!-- end of kind -->
24002      </tbody>
24003
24004  <!-- end of section -->
24005  <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
24006
24007
24008      <tr><td colspan="7" class="kind">controls</td></tr>
24009
24010      <thead class="entries_header">
24011        <tr>
24012          <th class="th_name">Property Name</th>
24013          <th class="th_type">Type</th>
24014          <th class="th_description">Description</th>
24015          <th class="th_units">Units</th>
24016          <th class="th_range">Range</th>
24017          <th class="th_hal_version">Initial HIDL HAL version</th>
24018          <th class="th_tags">Tags</th>
24019        </tr>
24020      </thead>
24021
24022      <tbody>
24023
24024
24025
24026
24027
24028
24029
24030
24031
24032
24033          <tr class="entry" id="controls_android.statistics.faceDetectMode">
24034            <td class="entry_name
24035             " rowspan="5">
24036              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24037            </td>
24038            <td class="entry_type">
24039                <span class="entry_type_name entry_type_name_enum">byte</span>
24040
24041              <span class="entry_type_visibility"> [public]</span>
24042
24043
24044              <span class="entry_type_hwlevel">[legacy] </span>
24045
24046
24047
24048                <ul class="entry_type_enum">
24049                  <li>
24050                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24051                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24052results.<wbr/></p></span>
24053                  </li>
24054                  <li>
24055                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24056                    <span class="entry_type_enum_optional">[optional]</span>
24057                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24058                  </li>
24059                  <li>
24060                    <span class="entry_type_enum_name">FULL (v3.2)</span>
24061                    <span class="entry_type_enum_optional">[optional]</span>
24062                    <span class="entry_type_enum_notes"><p>Return all face
24063metadata.<wbr/></p>
24064<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24065                  </li>
24066                </ul>
24067
24068            </td> <!-- entry_type -->
24069
24070            <td class="entry_description">
24071              <p>Operating mode for the face detector
24072unit.<wbr/></p>
24073            </td>
24074
24075            <td class="entry_units">
24076            </td>
24077
24078            <td class="entry_range">
24079              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24080            </td>
24081
24082            <td class="entry_hal_version">
24083              <p>3.<wbr/>2</p>
24084            </td>
24085
24086            <td class="entry_tags">
24087              <ul class="entry_tags">
24088                  <li><a href="#tag_BC">BC</a></li>
24089              </ul>
24090            </td>
24091
24092          </tr>
24093          <tr class="entries_header">
24094            <th class="th_details" colspan="6">Details</th>
24095          </tr>
24096          <tr class="entry_cont">
24097            <td class="entry_details" colspan="6">
24098              <p>Whether face detection is enabled,<wbr/> and whether it
24099should output just the basic fields or the full set of
24100fields.<wbr/></p>
24101            </td>
24102          </tr>
24103
24104          <tr class="entries_header">
24105            <th class="th_details" colspan="6">HAL Implementation Details</th>
24106          </tr>
24107          <tr class="entry_cont">
24108            <td class="entry_details" colspan="6">
24109              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24110<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24111FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24112<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24113            </td>
24114          </tr>
24115
24116          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24117           <!-- end of entry -->
24118
24119
24120          <tr class="entry" id="controls_android.statistics.histogramMode">
24121            <td class="entry_name
24122             " rowspan="1">
24123              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24124            </td>
24125            <td class="entry_type">
24126                <span class="entry_type_name entry_type_name_enum">byte</span>
24127
24128              <span class="entry_type_visibility"> [system as boolean]</span>
24129
24130
24131
24132
24133
24134                <ul class="entry_type_enum">
24135                  <li>
24136                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24137                  </li>
24138                  <li>
24139                    <span class="entry_type_enum_name">ON (v3.2)</span>
24140                  </li>
24141                </ul>
24142
24143            </td> <!-- entry_type -->
24144
24145            <td class="entry_description">
24146              <p>Operating mode for histogram
24147generation</p>
24148            </td>
24149
24150            <td class="entry_units">
24151            </td>
24152
24153            <td class="entry_range">
24154            </td>
24155
24156            <td class="entry_hal_version">
24157              <p>3.<wbr/>2</p>
24158            </td>
24159
24160            <td class="entry_tags">
24161              <ul class="entry_tags">
24162                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24163              </ul>
24164            </td>
24165
24166          </tr>
24167
24168
24169          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24170           <!-- end of entry -->
24171
24172
24173          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24174            <td class="entry_name
24175             " rowspan="1">
24176              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24177            </td>
24178            <td class="entry_type">
24179                <span class="entry_type_name entry_type_name_enum">byte</span>
24180
24181              <span class="entry_type_visibility"> [system as boolean]</span>
24182
24183
24184
24185
24186
24187                <ul class="entry_type_enum">
24188                  <li>
24189                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24190                  </li>
24191                  <li>
24192                    <span class="entry_type_enum_name">ON (v3.2)</span>
24193                  </li>
24194                </ul>
24195
24196            </td> <!-- entry_type -->
24197
24198            <td class="entry_description">
24199              <p>Operating mode for sharpness map
24200generation</p>
24201            </td>
24202
24203            <td class="entry_units">
24204            </td>
24205
24206            <td class="entry_range">
24207            </td>
24208
24209            <td class="entry_hal_version">
24210              <p>3.<wbr/>2</p>
24211            </td>
24212
24213            <td class="entry_tags">
24214              <ul class="entry_tags">
24215                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24216              </ul>
24217            </td>
24218
24219          </tr>
24220
24221
24222          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24223           <!-- end of entry -->
24224
24225
24226          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24227            <td class="entry_name
24228             " rowspan="3">
24229              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24230            </td>
24231            <td class="entry_type">
24232                <span class="entry_type_name entry_type_name_enum">byte</span>
24233
24234              <span class="entry_type_visibility"> [public as boolean]</span>
24235
24236
24237
24238
24239
24240                <ul class="entry_type_enum">
24241                  <li>
24242                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24243                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24244                  </li>
24245                  <li>
24246                    <span class="entry_type_enum_name">ON (v3.2)</span>
24247                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24248                  </li>
24249                </ul>
24250
24251            </td> <!-- entry_type -->
24252
24253            <td class="entry_description">
24254              <p>Operating mode for hot pixel map generation.<wbr/></p>
24255            </td>
24256
24257            <td class="entry_units">
24258            </td>
24259
24260            <td class="entry_range">
24261              <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>
24262            </td>
24263
24264            <td class="entry_hal_version">
24265              <p>3.<wbr/>2</p>
24266            </td>
24267
24268            <td class="entry_tags">
24269              <ul class="entry_tags">
24270                  <li><a href="#tag_V1">V1</a></li>
24271                  <li><a href="#tag_RAW">RAW</a></li>
24272              </ul>
24273            </td>
24274
24275          </tr>
24276          <tr class="entries_header">
24277            <th class="th_details" colspan="6">Details</th>
24278          </tr>
24279          <tr class="entry_cont">
24280            <td class="entry_details" colspan="6">
24281              <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/>
24282If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24283            </td>
24284          </tr>
24285
24286
24287          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24288           <!-- end of entry -->
24289
24290
24291          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24292            <td class="entry_name
24293             " rowspan="3">
24294              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24295            </td>
24296            <td class="entry_type">
24297                <span class="entry_type_name entry_type_name_enum">byte</span>
24298
24299              <span class="entry_type_visibility"> [public]</span>
24300
24301
24302              <span class="entry_type_hwlevel">[full] </span>
24303
24304
24305
24306                <ul class="entry_type_enum">
24307                  <li>
24308                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24309                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24310                  </li>
24311                  <li>
24312                    <span class="entry_type_enum_name">ON (v3.2)</span>
24313                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24314                  </li>
24315                </ul>
24316
24317            </td> <!-- entry_type -->
24318
24319            <td class="entry_description">
24320              <p>Whether the camera device will output the lens
24321shading map in output result metadata.<wbr/></p>
24322            </td>
24323
24324            <td class="entry_units">
24325            </td>
24326
24327            <td class="entry_range">
24328              <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>
24329            </td>
24330
24331            <td class="entry_hal_version">
24332              <p>3.<wbr/>2</p>
24333            </td>
24334
24335            <td class="entry_tags">
24336              <ul class="entry_tags">
24337                  <li><a href="#tag_RAW">RAW</a></li>
24338              </ul>
24339            </td>
24340
24341          </tr>
24342          <tr class="entries_header">
24343            <th class="th_details" colspan="6">Details</th>
24344          </tr>
24345          <tr class="entry_cont">
24346            <td class="entry_details" colspan="6">
24347              <p>When set to ON,<wbr/>
24348<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24349the output result metadata.<wbr/></p>
24350<p>ON is always supported on devices with the RAW capability.<wbr/></p>
24351            </td>
24352          </tr>
24353
24354
24355          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24356           <!-- end of entry -->
24357
24358
24359          <tr class="entry" id="controls_android.statistics.oisDataMode">
24360            <td class="entry_name
24361             " rowspan="1">
24362              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24363            </td>
24364            <td class="entry_type">
24365                <span class="entry_type_name entry_type_name_enum">byte</span>
24366
24367              <span class="entry_type_visibility"> [public]</span>
24368
24369
24370
24371
24372
24373                <ul class="entry_type_enum">
24374                  <li>
24375                    <span class="entry_type_enum_name">OFF (v3.3)</span>
24376                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24377                  </li>
24378                  <li>
24379                    <span class="entry_type_enum_name">ON (v3.3)</span>
24380                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24381                  </li>
24382                </ul>
24383
24384            </td> <!-- entry_type -->
24385
24386            <td class="entry_description">
24387              <p>A control for selecting whether OIS position information is included in output
24388result metadata.<wbr/></p>
24389            </td>
24390
24391            <td class="entry_units">
24392            </td>
24393
24394            <td class="entry_range">
24395              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24396            </td>
24397
24398            <td class="entry_hal_version">
24399              <p>3.<wbr/>3</p>
24400            </td>
24401
24402            <td class="entry_tags">
24403            </td>
24404
24405          </tr>
24406
24407
24408          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24409           <!-- end of entry -->
24410
24411
24412
24413      <!-- end of kind -->
24414      </tbody>
24415      <tr><td colspan="7" class="kind">static</td></tr>
24416
24417      <thead class="entries_header">
24418        <tr>
24419          <th class="th_name">Property Name</th>
24420          <th class="th_type">Type</th>
24421          <th class="th_description">Description</th>
24422          <th class="th_units">Units</th>
24423          <th class="th_range">Range</th>
24424          <th class="th_hal_version">Initial HIDL HAL version</th>
24425          <th class="th_tags">Tags</th>
24426        </tr>
24427      </thead>
24428
24429      <tbody>
24430
24431
24432
24433
24434
24435
24436
24437
24438
24439
24440
24441
24442          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24443            <td class="entry_name
24444             " rowspan="3">
24445              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24446            </td>
24447            <td class="entry_type">
24448                <span class="entry_type_name">byte</span>
24449                <span class="entry_type_container">x</span>
24450
24451                <span class="entry_type_array">
24452                  n
24453                </span>
24454              <span class="entry_type_visibility"> [public as enumList]</span>
24455
24456
24457              <span class="entry_type_hwlevel">[legacy] </span>
24458
24459
24460                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24461
24462
24463            </td> <!-- entry_type -->
24464
24465            <td class="entry_description">
24466              <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
24467supported by this camera device.<wbr/></p>
24468            </td>
24469
24470            <td class="entry_units">
24471            </td>
24472
24473            <td class="entry_range">
24474              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24475            </td>
24476
24477            <td class="entry_hal_version">
24478              <p>3.<wbr/>2</p>
24479            </td>
24480
24481            <td class="entry_tags">
24482            </td>
24483
24484          </tr>
24485          <tr class="entries_header">
24486            <th class="th_details" colspan="6">Details</th>
24487          </tr>
24488          <tr class="entry_cont">
24489            <td class="entry_details" colspan="6">
24490              <p>OFF is always supported.<wbr/></p>
24491            </td>
24492          </tr>
24493
24494
24495          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24496           <!-- end of entry -->
24497
24498
24499          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24500            <td class="entry_name
24501             " rowspan="1">
24502              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24503            </td>
24504            <td class="entry_type">
24505                <span class="entry_type_name">int32</span>
24506
24507              <span class="entry_type_visibility"> [system]</span>
24508
24509
24510
24511
24512
24513
24514            </td> <!-- entry_type -->
24515
24516            <td class="entry_description">
24517              <p>Number of histogram buckets
24518supported</p>
24519            </td>
24520
24521            <td class="entry_units">
24522            </td>
24523
24524            <td class="entry_range">
24525              <p>&gt;= 64</p>
24526            </td>
24527
24528            <td class="entry_hal_version">
24529              <p>3.<wbr/>2</p>
24530            </td>
24531
24532            <td class="entry_tags">
24533              <ul class="entry_tags">
24534                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24535              </ul>
24536            </td>
24537
24538          </tr>
24539
24540
24541          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24542           <!-- end of entry -->
24543
24544
24545          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24546            <td class="entry_name
24547             " rowspan="1">
24548              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24549            </td>
24550            <td class="entry_type">
24551                <span class="entry_type_name">int32</span>
24552
24553              <span class="entry_type_visibility"> [public]</span>
24554
24555
24556              <span class="entry_type_hwlevel">[legacy] </span>
24557
24558
24559
24560
24561            </td> <!-- entry_type -->
24562
24563            <td class="entry_description">
24564              <p>The maximum number of simultaneously detectable
24565faces.<wbr/></p>
24566            </td>
24567
24568            <td class="entry_units">
24569            </td>
24570
24571            <td class="entry_range">
24572              <p>0 for cameras without available face detection; otherwise:
24573<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24574<code>&gt;0</code> for LEGACY devices.<wbr/></p>
24575            </td>
24576
24577            <td class="entry_hal_version">
24578              <p>3.<wbr/>2</p>
24579            </td>
24580
24581            <td class="entry_tags">
24582              <ul class="entry_tags">
24583                  <li><a href="#tag_BC">BC</a></li>
24584              </ul>
24585            </td>
24586
24587          </tr>
24588
24589
24590          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24591           <!-- end of entry -->
24592
24593
24594          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24595            <td class="entry_name
24596             " rowspan="1">
24597              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24598            </td>
24599            <td class="entry_type">
24600                <span class="entry_type_name">int32</span>
24601
24602              <span class="entry_type_visibility"> [system]</span>
24603
24604
24605
24606
24607
24608
24609            </td> <!-- entry_type -->
24610
24611            <td class="entry_description">
24612              <p>Maximum value possible for a histogram
24613bucket</p>
24614            </td>
24615
24616            <td class="entry_units">
24617            </td>
24618
24619            <td class="entry_range">
24620            </td>
24621
24622            <td class="entry_hal_version">
24623              <p>3.<wbr/>2</p>
24624            </td>
24625
24626            <td class="entry_tags">
24627              <ul class="entry_tags">
24628                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24629              </ul>
24630            </td>
24631
24632          </tr>
24633
24634
24635          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24636           <!-- end of entry -->
24637
24638
24639          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24640            <td class="entry_name
24641             " rowspan="1">
24642              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24643            </td>
24644            <td class="entry_type">
24645                <span class="entry_type_name">int32</span>
24646
24647              <span class="entry_type_visibility"> [system]</span>
24648
24649
24650
24651
24652
24653
24654            </td> <!-- entry_type -->
24655
24656            <td class="entry_description">
24657              <p>Maximum value possible for a sharpness map
24658region.<wbr/></p>
24659            </td>
24660
24661            <td class="entry_units">
24662            </td>
24663
24664            <td class="entry_range">
24665            </td>
24666
24667            <td class="entry_hal_version">
24668              <p>3.<wbr/>2</p>
24669            </td>
24670
24671            <td class="entry_tags">
24672              <ul class="entry_tags">
24673                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24674              </ul>
24675            </td>
24676
24677          </tr>
24678
24679
24680          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24681           <!-- end of entry -->
24682
24683
24684          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24685            <td class="entry_name
24686             " rowspan="1">
24687              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24688            </td>
24689            <td class="entry_type">
24690                <span class="entry_type_name">int32</span>
24691                <span class="entry_type_container">x</span>
24692
24693                <span class="entry_type_array">
24694                  2
24695                </span>
24696              <span class="entry_type_visibility"> [system as size]</span>
24697
24698
24699
24700
24701                <div class="entry_type_notes">width x height</div>
24702
24703
24704            </td> <!-- entry_type -->
24705
24706            <td class="entry_description">
24707              <p>Dimensions of the sharpness
24708map</p>
24709            </td>
24710
24711            <td class="entry_units">
24712            </td>
24713
24714            <td class="entry_range">
24715              <p>Must be at least 32 x 32</p>
24716            </td>
24717
24718            <td class="entry_hal_version">
24719              <p>3.<wbr/>2</p>
24720            </td>
24721
24722            <td class="entry_tags">
24723              <ul class="entry_tags">
24724                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24725              </ul>
24726            </td>
24727
24728          </tr>
24729
24730
24731          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24732           <!-- end of entry -->
24733
24734
24735          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24736            <td class="entry_name
24737             " rowspan="3">
24738              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24739            </td>
24740            <td class="entry_type">
24741                <span class="entry_type_name">byte</span>
24742                <span class="entry_type_container">x</span>
24743
24744                <span class="entry_type_array">
24745                  n
24746                </span>
24747              <span class="entry_type_visibility"> [public as boolean]</span>
24748
24749
24750
24751
24752                <div class="entry_type_notes">list of enums</div>
24753
24754
24755            </td> <!-- entry_type -->
24756
24757            <td class="entry_description">
24758              <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
24759supported by this camera device.<wbr/></p>
24760            </td>
24761
24762            <td class="entry_units">
24763            </td>
24764
24765            <td class="entry_range">
24766              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24767            </td>
24768
24769            <td class="entry_hal_version">
24770              <p>3.<wbr/>2</p>
24771            </td>
24772
24773            <td class="entry_tags">
24774              <ul class="entry_tags">
24775                  <li><a href="#tag_V1">V1</a></li>
24776                  <li><a href="#tag_RAW">RAW</a></li>
24777              </ul>
24778            </td>
24779
24780          </tr>
24781          <tr class="entries_header">
24782            <th class="th_details" colspan="6">Details</th>
24783          </tr>
24784          <tr class="entry_cont">
24785            <td class="entry_details" colspan="6">
24786              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24787<code>false</code>.<wbr/></p>
24788<p>ON is always supported on devices with the RAW capability.<wbr/></p>
24789            </td>
24790          </tr>
24791
24792
24793          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24794           <!-- end of entry -->
24795
24796
24797          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24798            <td class="entry_name
24799             " rowspan="3">
24800              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24801            </td>
24802            <td class="entry_type">
24803                <span class="entry_type_name">byte</span>
24804                <span class="entry_type_container">x</span>
24805
24806                <span class="entry_type_array">
24807                  n
24808                </span>
24809              <span class="entry_type_visibility"> [public as enumList]</span>
24810
24811
24812
24813
24814                <div class="entry_type_notes">list of enums</div>
24815
24816
24817            </td> <!-- entry_type -->
24818
24819            <td class="entry_description">
24820              <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
24821are supported by this camera device.<wbr/></p>
24822            </td>
24823
24824            <td class="entry_units">
24825            </td>
24826
24827            <td class="entry_range">
24828              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24829            </td>
24830
24831            <td class="entry_hal_version">
24832              <p>3.<wbr/>2</p>
24833            </td>
24834
24835            <td class="entry_tags">
24836            </td>
24837
24838          </tr>
24839          <tr class="entries_header">
24840            <th class="th_details" colspan="6">Details</th>
24841          </tr>
24842          <tr class="entry_cont">
24843            <td class="entry_details" colspan="6">
24844              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24845contain only OFF.<wbr/></p>
24846<p>ON is always supported on devices with the RAW capability.<wbr/>
24847LEGACY mode devices will always only support OFF.<wbr/></p>
24848            </td>
24849          </tr>
24850
24851
24852          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24853           <!-- end of entry -->
24854
24855
24856          <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24857            <td class="entry_name
24858             " rowspan="3">
24859              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24860            </td>
24861            <td class="entry_type">
24862                <span class="entry_type_name">byte</span>
24863                <span class="entry_type_container">x</span>
24864
24865                <span class="entry_type_array">
24866                  n
24867                </span>
24868              <span class="entry_type_visibility"> [public as enumList]</span>
24869
24870
24871
24872
24873                <div class="entry_type_notes">list of enums</div>
24874
24875
24876            </td> <!-- entry_type -->
24877
24878            <td class="entry_description">
24879              <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
24880are supported by this camera device.<wbr/></p>
24881            </td>
24882
24883            <td class="entry_units">
24884            </td>
24885
24886            <td class="entry_range">
24887              <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24888            </td>
24889
24890            <td class="entry_hal_version">
24891              <p>3.<wbr/>3</p>
24892            </td>
24893
24894            <td class="entry_tags">
24895            </td>
24896
24897          </tr>
24898          <tr class="entries_header">
24899            <th class="th_details" colspan="6">Details</th>
24900          </tr>
24901          <tr class="entry_cont">
24902            <td class="entry_details" colspan="6">
24903              <p>If no OIS data output is available for this camera device,<wbr/> this key will
24904contain only OFF.<wbr/></p>
24905            </td>
24906          </tr>
24907
24908
24909          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24910           <!-- end of entry -->
24911
24912
24913
24914
24915
24916
24917      <!-- end of kind -->
24918      </tbody>
24919      <tr><td colspan="7" class="kind">dynamic</td></tr>
24920
24921      <thead class="entries_header">
24922        <tr>
24923          <th class="th_name">Property Name</th>
24924          <th class="th_type">Type</th>
24925          <th class="th_description">Description</th>
24926          <th class="th_units">Units</th>
24927          <th class="th_range">Range</th>
24928          <th class="th_hal_version">Initial HIDL HAL version</th>
24929          <th class="th_tags">Tags</th>
24930        </tr>
24931      </thead>
24932
24933      <tbody>
24934
24935
24936
24937
24938
24939
24940
24941
24942
24943
24944          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24945            <td class="entry_name
24946             " rowspan="5">
24947              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24948            </td>
24949            <td class="entry_type">
24950                <span class="entry_type_name entry_type_name_enum">byte</span>
24951
24952              <span class="entry_type_visibility"> [public]</span>
24953
24954
24955              <span class="entry_type_hwlevel">[legacy] </span>
24956
24957
24958
24959                <ul class="entry_type_enum">
24960                  <li>
24961                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24962                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24963results.<wbr/></p></span>
24964                  </li>
24965                  <li>
24966                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24967                    <span class="entry_type_enum_optional">[optional]</span>
24968                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24969                  </li>
24970                  <li>
24971                    <span class="entry_type_enum_name">FULL (v3.2)</span>
24972                    <span class="entry_type_enum_optional">[optional]</span>
24973                    <span class="entry_type_enum_notes"><p>Return all face
24974metadata.<wbr/></p>
24975<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24976                  </li>
24977                </ul>
24978
24979            </td> <!-- entry_type -->
24980
24981            <td class="entry_description">
24982              <p>Operating mode for the face detector
24983unit.<wbr/></p>
24984            </td>
24985
24986            <td class="entry_units">
24987            </td>
24988
24989            <td class="entry_range">
24990              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24991            </td>
24992
24993            <td class="entry_hal_version">
24994              <p>3.<wbr/>2</p>
24995            </td>
24996
24997            <td class="entry_tags">
24998              <ul class="entry_tags">
24999                  <li><a href="#tag_BC">BC</a></li>
25000              </ul>
25001            </td>
25002
25003          </tr>
25004          <tr class="entries_header">
25005            <th class="th_details" colspan="6">Details</th>
25006          </tr>
25007          <tr class="entry_cont">
25008            <td class="entry_details" colspan="6">
25009              <p>Whether face detection is enabled,<wbr/> and whether it
25010should output just the basic fields or the full set of
25011fields.<wbr/></p>
25012            </td>
25013          </tr>
25014
25015          <tr class="entries_header">
25016            <th class="th_details" colspan="6">HAL Implementation Details</th>
25017          </tr>
25018          <tr class="entry_cont">
25019            <td class="entry_details" colspan="6">
25020              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
25021<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
25022FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
25023<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25024            </td>
25025          </tr>
25026
25027          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25028           <!-- end of entry -->
25029
25030
25031          <tr class="entry" id="dynamic_android.statistics.faceIds">
25032            <td class="entry_name
25033             " rowspan="3">
25034              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
25035            </td>
25036            <td class="entry_type">
25037                <span class="entry_type_name">int32</span>
25038                <span class="entry_type_container">x</span>
25039
25040                <span class="entry_type_array">
25041                  n
25042                </span>
25043              <span class="entry_type_visibility"> [ndk_public]</span>
25044
25045
25046              <span class="entry_type_hwlevel">[legacy] </span>
25047
25048
25049
25050
25051            </td> <!-- entry_type -->
25052
25053            <td class="entry_description">
25054              <p>List of unique IDs for detected faces.<wbr/></p>
25055            </td>
25056
25057            <td class="entry_units">
25058            </td>
25059
25060            <td class="entry_range">
25061            </td>
25062
25063            <td class="entry_hal_version">
25064              <p>3.<wbr/>2</p>
25065            </td>
25066
25067            <td class="entry_tags">
25068              <ul class="entry_tags">
25069                  <li><a href="#tag_BC">BC</a></li>
25070              </ul>
25071            </td>
25072
25073          </tr>
25074          <tr class="entries_header">
25075            <th class="th_details" colspan="6">Details</th>
25076          </tr>
25077          <tr class="entry_cont">
25078            <td class="entry_details" colspan="6">
25079              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25080to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
25081assigned a new ID.<wbr/></p>
25082<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25083            </td>
25084          </tr>
25085
25086
25087          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25088           <!-- end of entry -->
25089
25090
25091          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25092            <td class="entry_name
25093             " rowspan="3">
25094              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25095            </td>
25096            <td class="entry_type">
25097                <span class="entry_type_name">int32</span>
25098                <span class="entry_type_container">x</span>
25099
25100                <span class="entry_type_array">
25101                  n x 6
25102                </span>
25103              <span class="entry_type_visibility"> [ndk_public]</span>
25104
25105
25106              <span class="entry_type_hwlevel">[legacy] </span>
25107
25108
25109                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25110
25111
25112            </td> <!-- entry_type -->
25113
25114            <td class="entry_description">
25115              <p>List of landmarks for detected
25116faces.<wbr/></p>
25117            </td>
25118
25119            <td class="entry_units">
25120            </td>
25121
25122            <td class="entry_range">
25123            </td>
25124
25125            <td class="entry_hal_version">
25126              <p>3.<wbr/>2</p>
25127            </td>
25128
25129            <td class="entry_tags">
25130              <ul class="entry_tags">
25131                  <li><a href="#tag_BC">BC</a></li>
25132              </ul>
25133            </td>
25134
25135          </tr>
25136          <tr class="entries_header">
25137            <th class="th_details" colspan="6">Details</th>
25138          </tr>
25139          <tr class="entry_cont">
25140            <td class="entry_details" colspan="6">
25141              <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
25142<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25143<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25144            </td>
25145          </tr>
25146
25147
25148          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25149           <!-- end of entry -->
25150
25151
25152          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25153            <td class="entry_name
25154             " rowspan="3">
25155              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25156            </td>
25157            <td class="entry_type">
25158                <span class="entry_type_name">int32</span>
25159                <span class="entry_type_container">x</span>
25160
25161                <span class="entry_type_array">
25162                  n x 4
25163                </span>
25164              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25165
25166
25167              <span class="entry_type_hwlevel">[legacy] </span>
25168
25169
25170                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25171
25172
25173            </td> <!-- entry_type -->
25174
25175            <td class="entry_description">
25176              <p>List of the bounding rectangles for detected
25177faces.<wbr/></p>
25178            </td>
25179
25180            <td class="entry_units">
25181            </td>
25182
25183            <td class="entry_range">
25184            </td>
25185
25186            <td class="entry_hal_version">
25187              <p>3.<wbr/>2</p>
25188            </td>
25189
25190            <td class="entry_tags">
25191              <ul class="entry_tags">
25192                  <li><a href="#tag_BC">BC</a></li>
25193              </ul>
25194            </td>
25195
25196          </tr>
25197          <tr class="entries_header">
25198            <th class="th_details" colspan="6">Details</th>
25199          </tr>
25200          <tr class="entry_cont">
25201            <td class="entry_details" colspan="6">
25202              <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
25203<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25204<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25205            </td>
25206          </tr>
25207
25208
25209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25210           <!-- end of entry -->
25211
25212
25213          <tr class="entry" id="dynamic_android.statistics.faceScores">
25214            <td class="entry_name
25215             " rowspan="5">
25216              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25217            </td>
25218            <td class="entry_type">
25219                <span class="entry_type_name">byte</span>
25220                <span class="entry_type_container">x</span>
25221
25222                <span class="entry_type_array">
25223                  n
25224                </span>
25225              <span class="entry_type_visibility"> [ndk_public]</span>
25226
25227
25228              <span class="entry_type_hwlevel">[legacy] </span>
25229
25230
25231
25232
25233            </td> <!-- entry_type -->
25234
25235            <td class="entry_description">
25236              <p>List of the face confidence scores for
25237detected faces</p>
25238            </td>
25239
25240            <td class="entry_units">
25241            </td>
25242
25243            <td class="entry_range">
25244              <p>1-100</p>
25245            </td>
25246
25247            <td class="entry_hal_version">
25248              <p>3.<wbr/>2</p>
25249            </td>
25250
25251            <td class="entry_tags">
25252              <ul class="entry_tags">
25253                  <li><a href="#tag_BC">BC</a></li>
25254              </ul>
25255            </td>
25256
25257          </tr>
25258          <tr class="entries_header">
25259            <th class="th_details" colspan="6">Details</th>
25260          </tr>
25261          <tr class="entry_cont">
25262            <td class="entry_details" colspan="6">
25263              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25264            </td>
25265          </tr>
25266
25267          <tr class="entries_header">
25268            <th class="th_details" colspan="6">HAL Implementation Details</th>
25269          </tr>
25270          <tr class="entry_cont">
25271            <td class="entry_details" colspan="6">
25272              <p>The value should be meaningful (for example,<wbr/> setting 100 at
25273all times is illegal).<wbr/></p>
25274            </td>
25275          </tr>
25276
25277          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25278           <!-- end of entry -->
25279
25280
25281          <tr class="entry" id="dynamic_android.statistics.faces">
25282            <td class="entry_name
25283             " rowspan="3">
25284              android.<wbr/>statistics.<wbr/>faces
25285            </td>
25286            <td class="entry_type">
25287                <span class="entry_type_name">int32</span>
25288                <span class="entry_type_container">x</span>
25289
25290                <span class="entry_type_array">
25291                  n
25292                </span>
25293              <span class="entry_type_visibility"> [java_public as face]</span>
25294
25295              <span class="entry_type_synthetic">[synthetic] </span>
25296
25297              <span class="entry_type_hwlevel">[legacy] </span>
25298
25299
25300
25301
25302            </td> <!-- entry_type -->
25303
25304            <td class="entry_description">
25305              <p>List of the faces detected through camera face detection
25306in this capture.<wbr/></p>
25307            </td>
25308
25309            <td class="entry_units">
25310            </td>
25311
25312            <td class="entry_range">
25313            </td>
25314
25315            <td class="entry_hal_version">
25316              <p>3.<wbr/>2</p>
25317            </td>
25318
25319            <td class="entry_tags">
25320            </td>
25321
25322          </tr>
25323          <tr class="entries_header">
25324            <th class="th_details" colspan="6">Details</th>
25325          </tr>
25326          <tr class="entry_cont">
25327            <td class="entry_details" colspan="6">
25328              <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>
25329            </td>
25330          </tr>
25331
25332
25333          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25334           <!-- end of entry -->
25335
25336
25337          <tr class="entry" id="dynamic_android.statistics.histogram">
25338            <td class="entry_name
25339             " rowspan="3">
25340              android.<wbr/>statistics.<wbr/>histogram
25341            </td>
25342            <td class="entry_type">
25343                <span class="entry_type_name">int32</span>
25344                <span class="entry_type_container">x</span>
25345
25346                <span class="entry_type_array">
25347                  n x 3
25348                </span>
25349              <span class="entry_type_visibility"> [system]</span>
25350
25351
25352
25353
25354                <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>
25355
25356
25357            </td> <!-- entry_type -->
25358
25359            <td class="entry_description">
25360              <p>A 3-channel histogram based on the raw
25361sensor data</p>
25362            </td>
25363
25364            <td class="entry_units">
25365            </td>
25366
25367            <td class="entry_range">
25368            </td>
25369
25370            <td class="entry_hal_version">
25371              <p>3.<wbr/>2</p>
25372            </td>
25373
25374            <td class="entry_tags">
25375              <ul class="entry_tags">
25376                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25377              </ul>
25378            </td>
25379
25380          </tr>
25381          <tr class="entries_header">
25382            <th class="th_details" colspan="6">Details</th>
25383          </tr>
25384          <tr class="entry_cont">
25385            <td class="entry_details" colspan="6">
25386              <p>The k'th bucket (0-based) covers the input range
25387(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/>
25388(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25389supported,<wbr/> all channels should have the same data</p>
25390            </td>
25391          </tr>
25392
25393
25394          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25395           <!-- end of entry -->
25396
25397
25398          <tr class="entry" id="dynamic_android.statistics.histogramMode">
25399            <td class="entry_name
25400             " rowspan="1">
25401              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25402            </td>
25403            <td class="entry_type">
25404                <span class="entry_type_name entry_type_name_enum">byte</span>
25405
25406              <span class="entry_type_visibility"> [system as boolean]</span>
25407
25408
25409
25410
25411
25412                <ul class="entry_type_enum">
25413                  <li>
25414                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25415                  </li>
25416                  <li>
25417                    <span class="entry_type_enum_name">ON (v3.2)</span>
25418                  </li>
25419                </ul>
25420
25421            </td> <!-- entry_type -->
25422
25423            <td class="entry_description">
25424              <p>Operating mode for histogram
25425generation</p>
25426            </td>
25427
25428            <td class="entry_units">
25429            </td>
25430
25431            <td class="entry_range">
25432            </td>
25433
25434            <td class="entry_hal_version">
25435              <p>3.<wbr/>2</p>
25436            </td>
25437
25438            <td class="entry_tags">
25439              <ul class="entry_tags">
25440                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25441              </ul>
25442            </td>
25443
25444          </tr>
25445
25446
25447          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25448           <!-- end of entry -->
25449
25450
25451          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25452            <td class="entry_name
25453             " rowspan="3">
25454              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25455            </td>
25456            <td class="entry_type">
25457                <span class="entry_type_name">int32</span>
25458                <span class="entry_type_container">x</span>
25459
25460                <span class="entry_type_array">
25461                  n x m x 3
25462                </span>
25463              <span class="entry_type_visibility"> [system]</span>
25464
25465
25466
25467
25468                <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>
25469
25470
25471            </td> <!-- entry_type -->
25472
25473            <td class="entry_description">
25474              <p>A 3-channel sharpness map,<wbr/> based on the raw
25475sensor data</p>
25476            </td>
25477
25478            <td class="entry_units">
25479            </td>
25480
25481            <td class="entry_range">
25482            </td>
25483
25484            <td class="entry_hal_version">
25485              <p>3.<wbr/>2</p>
25486            </td>
25487
25488            <td class="entry_tags">
25489              <ul class="entry_tags">
25490                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25491              </ul>
25492            </td>
25493
25494          </tr>
25495          <tr class="entries_header">
25496            <th class="th_details" colspan="6">Details</th>
25497          </tr>
25498          <tr class="entry_cont">
25499            <td class="entry_details" colspan="6">
25500              <p>If only a monochrome sharpness map is supported,<wbr/>
25501all channels should have the same data</p>
25502            </td>
25503          </tr>
25504
25505
25506          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25507           <!-- end of entry -->
25508
25509
25510          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25511            <td class="entry_name
25512             " rowspan="1">
25513              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25514            </td>
25515            <td class="entry_type">
25516                <span class="entry_type_name entry_type_name_enum">byte</span>
25517
25518              <span class="entry_type_visibility"> [system as boolean]</span>
25519
25520
25521
25522
25523
25524                <ul class="entry_type_enum">
25525                  <li>
25526                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25527                  </li>
25528                  <li>
25529                    <span class="entry_type_enum_name">ON (v3.2)</span>
25530                  </li>
25531                </ul>
25532
25533            </td> <!-- entry_type -->
25534
25535            <td class="entry_description">
25536              <p>Operating mode for sharpness map
25537generation</p>
25538            </td>
25539
25540            <td class="entry_units">
25541            </td>
25542
25543            <td class="entry_range">
25544            </td>
25545
25546            <td class="entry_hal_version">
25547              <p>3.<wbr/>2</p>
25548            </td>
25549
25550            <td class="entry_tags">
25551              <ul class="entry_tags">
25552                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25553              </ul>
25554            </td>
25555
25556          </tr>
25557
25558
25559          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25560           <!-- end of entry -->
25561
25562
25563          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25564            <td class="entry_name
25565             " rowspan="3">
25566              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25567            </td>
25568            <td class="entry_type">
25569                <span class="entry_type_name">byte</span>
25570
25571              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25572
25573
25574              <span class="entry_type_hwlevel">[full] </span>
25575
25576
25577
25578
25579            </td> <!-- entry_type -->
25580
25581            <td class="entry_description">
25582              <p>The shading map is a low-resolution floating-point map
25583that lists the coefficients used to correct for vignetting,<wbr/> for each
25584Bayer color channel.<wbr/></p>
25585            </td>
25586
25587            <td class="entry_units">
25588            </td>
25589
25590            <td class="entry_range">
25591              <p>Each gain factor is &gt;= 1</p>
25592            </td>
25593
25594            <td class="entry_hal_version">
25595              <p>3.<wbr/>2</p>
25596            </td>
25597
25598            <td class="entry_tags">
25599            </td>
25600
25601          </tr>
25602          <tr class="entries_header">
25603            <th class="th_details" colspan="6">Details</th>
25604          </tr>
25605          <tr class="entry_cont">
25606            <td class="entry_details" colspan="6">
25607              <p>The map provided here is the same map that is used by the camera device to
25608correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25609<p>When there is no lens shading correction applied to RAW
25610output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25611false),<wbr/> this map is the complete lens shading correction
25612map; when there is some lens shading correction applied to
25613the 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
25614correction map that needs to be applied to get shading
25615corrected images that match the camera device's output for
25616non-RAW formats.<wbr/></p>
25617<p>For a complete shading correction map,<wbr/> the least shaded
25618section of the image will have a gain factor of 1; all
25619other sections will have gains above 1.<wbr/></p>
25620<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25621will take into account the colorCorrection settings.<wbr/></p>
25622<p>The shading map is for the entire active pixel array,<wbr/> and is not
25623affected by the crop region specified in the request.<wbr/> Each shading map
25624entry is the value of the shading compensation map over a specific
25625pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25626map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25627(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25628pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25629The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25630<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25631channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25632The shading map is stored in a fully interleaved format.<wbr/></p>
25633<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25634and will be smaller than 64x64.<wbr/></p>
25635<p>As an example,<wbr/> given a very small map defined as:</p>
25636<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25637values =
25638[ 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/>
25639    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/>
25640  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/>
25641    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/>
25642  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/>
25643    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 ]
25644</code></pre>
25645<p>The low-resolution scaling map images for each channel are
25646(displayed using nearest-neighbor interpolation):</p>
25647<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25648<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25649<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25650<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25651<p>As a visualization only,<wbr/> inverting the full-color map to recover an
25652image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25653<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25654            </td>
25655          </tr>
25656
25657
25658          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25659           <!-- end of entry -->
25660
25661
25662          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25663            <td class="entry_name
25664             " rowspan="5">
25665              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25666            </td>
25667            <td class="entry_type">
25668                <span class="entry_type_name">float</span>
25669                <span class="entry_type_container">x</span>
25670
25671                <span class="entry_type_array">
25672                  4 x n x m
25673                </span>
25674              <span class="entry_type_visibility"> [ndk_public]</span>
25675
25676
25677              <span class="entry_type_hwlevel">[full] </span>
25678
25679
25680                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25681
25682
25683            </td> <!-- entry_type -->
25684
25685            <td class="entry_description">
25686              <p>The shading map is a low-resolution floating-point map
25687that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25688for each Bayer color channel of RAW image data.<wbr/></p>
25689            </td>
25690
25691            <td class="entry_units">
25692            </td>
25693
25694            <td class="entry_range">
25695              <p>Each gain factor is &gt;= 1</p>
25696            </td>
25697
25698            <td class="entry_hal_version">
25699              <p>3.<wbr/>2</p>
25700            </td>
25701
25702            <td class="entry_tags">
25703            </td>
25704
25705          </tr>
25706          <tr class="entries_header">
25707            <th class="th_details" colspan="6">Details</th>
25708          </tr>
25709          <tr class="entry_cont">
25710            <td class="entry_details" colspan="6">
25711              <p>The map provided here is the same map that is used by the camera device to
25712correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25713<p>When there is no lens shading correction applied to RAW
25714output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25715false),<wbr/> this map is the complete lens shading correction
25716map; when there is some lens shading correction applied to
25717the 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
25718correction map that needs to be applied to get shading
25719corrected images that match the camera device's output for
25720non-RAW formats.<wbr/></p>
25721<p>For a complete shading correction map,<wbr/> the least shaded
25722section of the image will have a gain factor of 1; all
25723other sections will have gains above 1.<wbr/></p>
25724<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25725will take into account the colorCorrection settings.<wbr/></p>
25726<p>The shading map is for the entire active pixel array,<wbr/> and is not
25727affected by the crop region specified in the request.<wbr/> Each shading map
25728entry is the value of the shading compensation map over a specific
25729pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25730map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25731(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25732pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25733The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25734<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25735channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25736The shading map is stored in a fully interleaved format,<wbr/> and its size
25737is 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>
25738<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25739and will be smaller than 64x64.<wbr/></p>
25740<p>As an example,<wbr/> given a very small map defined as:</p>
25741<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25742<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25743[ 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/>
25744    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/>
25745  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/>
25746    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/>
25747  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/>
25748    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 ]
25749</code></pre>
25750<p>The low-resolution scaling map images for each channel are
25751(displayed using nearest-neighbor interpolation):</p>
25752<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25753<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25754<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25755<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25756<p>As a visualization only,<wbr/> inverting the full-color map to recover an
25757image of a gray wall (using bicubic interpolation for visual quality)
25758as captured by the sensor gives:</p>
25759<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25760<p>Note that the RAW image data might be subject to lens shading
25761correction not reported on this map.<wbr/> Query
25762<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
25763to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
25764is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25765correction.<wbr/> In the case full lens shading correction is applied to RAW
25766images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25767In other words,<wbr/> the map reported in this key is the remaining lens shading
25768that needs to be applied on the RAW image to get images without lens shading
25769artifacts.<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
25770formats.<wbr/></p>
25771            </td>
25772          </tr>
25773
25774          <tr class="entries_header">
25775            <th class="th_details" colspan="6">HAL Implementation Details</th>
25776          </tr>
25777          <tr class="entry_cont">
25778            <td class="entry_details" colspan="6">
25779              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25780When AE and AWB are in AUTO modes
25781(<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
25782may have all the information it need to generate most accurate lens shading map.<wbr/> When
25783AE or AWB are in manual mode
25784(<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
25785may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25786generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25787the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25788            </td>
25789          </tr>
25790
25791          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25792           <!-- end of entry -->
25793
25794
25795          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25796            <td class="entry_name
25797                entry_name_deprecated
25798             " rowspan="3">
25799              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25800            </td>
25801            <td class="entry_type">
25802                <span class="entry_type_name">float</span>
25803                <span class="entry_type_container">x</span>
25804
25805                <span class="entry_type_array">
25806                  4
25807                </span>
25808              <span class="entry_type_visibility"> [hidden]</span>
25809
25810
25811
25812              <span class="entry_type_deprecated">[deprecated] </span>
25813
25814                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25815
25816
25817            </td> <!-- entry_type -->
25818
25819            <td class="entry_description">
25820              <p>The best-fit color channel gains calculated
25821by the camera device's statistics units for the current output frame.<wbr/></p>
25822            </td>
25823
25824            <td class="entry_units">
25825            </td>
25826
25827            <td class="entry_range">
25828              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25829            </td>
25830
25831            <td class="entry_hal_version">
25832              <p>3.<wbr/>2</p>
25833            </td>
25834
25835            <td class="entry_tags">
25836            </td>
25837
25838          </tr>
25839          <tr class="entries_header">
25840            <th class="th_details" colspan="6">Details</th>
25841          </tr>
25842          <tr class="entry_cont">
25843            <td class="entry_details" colspan="6">
25844              <p>This may be different than the gains used for this frame,<wbr/>
25845since statistics processing on data from a new frame
25846typically completes after the transform has already been
25847applied to that frame.<wbr/></p>
25848<p>The 4 channel gains are defined in Bayer domain,<wbr/>
25849see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25850<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25851regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25852            </td>
25853          </tr>
25854
25855
25856          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25857           <!-- end of entry -->
25858
25859
25860          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25861            <td class="entry_name
25862                entry_name_deprecated
25863             " rowspan="3">
25864              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25865            </td>
25866            <td class="entry_type">
25867                <span class="entry_type_name">rational</span>
25868                <span class="entry_type_container">x</span>
25869
25870                <span class="entry_type_array">
25871                  3 x 3
25872                </span>
25873              <span class="entry_type_visibility"> [hidden]</span>
25874
25875
25876
25877              <span class="entry_type_deprecated">[deprecated] </span>
25878
25879                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25880
25881
25882            </td> <!-- entry_type -->
25883
25884            <td class="entry_description">
25885              <p>The best-fit color transform matrix estimate
25886calculated by the camera device's statistics units for the current
25887output frame.<wbr/></p>
25888            </td>
25889
25890            <td class="entry_units">
25891            </td>
25892
25893            <td class="entry_range">
25894              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25895            </td>
25896
25897            <td class="entry_hal_version">
25898              <p>3.<wbr/>2</p>
25899            </td>
25900
25901            <td class="entry_tags">
25902            </td>
25903
25904          </tr>
25905          <tr class="entries_header">
25906            <th class="th_details" colspan="6">Details</th>
25907          </tr>
25908          <tr class="entry_cont">
25909            <td class="entry_details" colspan="6">
25910              <p>The camera device will provide the estimate from its
25911statistics unit on the white balance transforms to use
25912for the next frame.<wbr/> These are the values the camera device believes
25913are the best fit for the current output frame.<wbr/> This may
25914be different than the transform used for this frame,<wbr/> since
25915statistics processing on data from a new frame typically
25916completes after the transform has already been applied to
25917that frame.<wbr/></p>
25918<p>These estimates must be provided for all frames,<wbr/> even if
25919capture settings and color transforms are set by the application.<wbr/></p>
25920<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25921regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25922            </td>
25923          </tr>
25924
25925
25926          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25927           <!-- end of entry -->
25928
25929
25930          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25931            <td class="entry_name
25932             " rowspan="3">
25933              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25934            </td>
25935            <td class="entry_type">
25936                <span class="entry_type_name entry_type_name_enum">byte</span>
25937
25938              <span class="entry_type_visibility"> [public]</span>
25939
25940
25941              <span class="entry_type_hwlevel">[full] </span>
25942
25943
25944
25945                <ul class="entry_type_enum">
25946                  <li>
25947                    <span class="entry_type_enum_name">NONE (v3.2)</span>
25948                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25949in the current scene.<wbr/></p></span>
25950                  </li>
25951                  <li>
25952                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
25953                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25954in the current scene.<wbr/></p></span>
25955                  </li>
25956                  <li>
25957                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
25958                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25959in the current scene.<wbr/></p></span>
25960                  </li>
25961                </ul>
25962
25963            </td> <!-- entry_type -->
25964
25965            <td class="entry_description">
25966              <p>The camera device estimated scene illumination lighting
25967frequency.<wbr/></p>
25968            </td>
25969
25970            <td class="entry_units">
25971            </td>
25972
25973            <td class="entry_range">
25974            </td>
25975
25976            <td class="entry_hal_version">
25977              <p>3.<wbr/>2</p>
25978            </td>
25979
25980            <td class="entry_tags">
25981            </td>
25982
25983          </tr>
25984          <tr class="entries_header">
25985            <th class="th_details" colspan="6">Details</th>
25986          </tr>
25987          <tr class="entry_cont">
25988            <td class="entry_details" colspan="6">
25989              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25990that depends on the local utility power standards.<wbr/> This flicker must be
25991accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25992The camera device uses this entry to tell the application what the scene
25993illuminant frequency is.<wbr/></p>
25994<p>When manual exposure control is enabled
25995(<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> ==
25996OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25997antibanding,<wbr/> and the application can ensure it selects
25998exposure times that do not cause banding issues by looking
25999into this metadata field.<wbr/> See
26000<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
26001<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
26002            </td>
26003          </tr>
26004
26005
26006          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26007           <!-- end of entry -->
26008
26009
26010          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
26011            <td class="entry_name
26012             " rowspan="3">
26013              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
26014            </td>
26015            <td class="entry_type">
26016                <span class="entry_type_name entry_type_name_enum">byte</span>
26017
26018              <span class="entry_type_visibility"> [public as boolean]</span>
26019
26020
26021
26022
26023
26024                <ul class="entry_type_enum">
26025                  <li>
26026                    <span class="entry_type_enum_name">OFF (v3.2)</span>
26027                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
26028                  </li>
26029                  <li>
26030                    <span class="entry_type_enum_name">ON (v3.2)</span>
26031                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
26032                  </li>
26033                </ul>
26034
26035            </td> <!-- entry_type -->
26036
26037            <td class="entry_description">
26038              <p>Operating mode for hot pixel map generation.<wbr/></p>
26039            </td>
26040
26041            <td class="entry_units">
26042            </td>
26043
26044            <td class="entry_range">
26045              <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>
26046            </td>
26047
26048            <td class="entry_hal_version">
26049              <p>3.<wbr/>2</p>
26050            </td>
26051
26052            <td class="entry_tags">
26053              <ul class="entry_tags">
26054                  <li><a href="#tag_V1">V1</a></li>
26055                  <li><a href="#tag_RAW">RAW</a></li>
26056              </ul>
26057            </td>
26058
26059          </tr>
26060          <tr class="entries_header">
26061            <th class="th_details" colspan="6">Details</th>
26062          </tr>
26063          <tr class="entry_cont">
26064            <td class="entry_details" colspan="6">
26065              <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/>
26066If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26067            </td>
26068          </tr>
26069
26070
26071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26072           <!-- end of entry -->
26073
26074
26075          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26076            <td class="entry_name
26077             " rowspan="5">
26078              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26079            </td>
26080            <td class="entry_type">
26081                <span class="entry_type_name">int32</span>
26082                <span class="entry_type_container">x</span>
26083
26084                <span class="entry_type_array">
26085                  2 x n
26086                </span>
26087              <span class="entry_type_visibility"> [public as point]</span>
26088
26089
26090
26091
26092                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26093
26094
26095            </td> <!-- entry_type -->
26096
26097            <td class="entry_description">
26098              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26099            </td>
26100
26101            <td class="entry_units">
26102            </td>
26103
26104            <td class="entry_range">
26105              <p>n &lt;= number of pixels on the sensor.<wbr/>
26106The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26107<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26108            </td>
26109
26110            <td class="entry_hal_version">
26111              <p>3.<wbr/>2</p>
26112            </td>
26113
26114            <td class="entry_tags">
26115              <ul class="entry_tags">
26116                  <li><a href="#tag_V1">V1</a></li>
26117                  <li><a href="#tag_RAW">RAW</a></li>
26118              </ul>
26119            </td>
26120
26121          </tr>
26122          <tr class="entries_header">
26123            <th class="th_details" colspan="6">Details</th>
26124          </tr>
26125          <tr class="entry_cont">
26126            <td class="entry_details" colspan="6">
26127              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26128<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26129bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26130height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
26131This may include hot pixels that lie outside of the active array
26132bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26133            </td>
26134          </tr>
26135
26136          <tr class="entries_header">
26137            <th class="th_details" colspan="6">HAL Implementation Details</th>
26138          </tr>
26139          <tr class="entry_cont">
26140            <td class="entry_details" colspan="6">
26141              <p>A hotpixel map contains the coordinates of pixels on the camera
26142sensor that do report valid values (usually due to defects in
26143the camera sensor).<wbr/> This includes pixels that are stuck at certain
26144values,<wbr/> or have a response that does not accuractly encode the
26145incoming light from the scene.<wbr/></p>
26146<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26147pixels than actual pixels on the camera sensor.<wbr/></p>
26148            </td>
26149          </tr>
26150
26151          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26152           <!-- end of entry -->
26153
26154
26155          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26156            <td class="entry_name
26157             " rowspan="3">
26158              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26159            </td>
26160            <td class="entry_type">
26161                <span class="entry_type_name entry_type_name_enum">byte</span>
26162
26163              <span class="entry_type_visibility"> [public]</span>
26164
26165
26166              <span class="entry_type_hwlevel">[full] </span>
26167
26168
26169
26170                <ul class="entry_type_enum">
26171                  <li>
26172                    <span class="entry_type_enum_name">OFF (v3.2)</span>
26173                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26174                  </li>
26175                  <li>
26176                    <span class="entry_type_enum_name">ON (v3.2)</span>
26177                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26178                  </li>
26179                </ul>
26180
26181            </td> <!-- entry_type -->
26182
26183            <td class="entry_description">
26184              <p>Whether the camera device will output the lens
26185shading map in output result metadata.<wbr/></p>
26186            </td>
26187
26188            <td class="entry_units">
26189            </td>
26190
26191            <td class="entry_range">
26192              <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>
26193            </td>
26194
26195            <td class="entry_hal_version">
26196              <p>3.<wbr/>2</p>
26197            </td>
26198
26199            <td class="entry_tags">
26200              <ul class="entry_tags">
26201                  <li><a href="#tag_RAW">RAW</a></li>
26202              </ul>
26203            </td>
26204
26205          </tr>
26206          <tr class="entries_header">
26207            <th class="th_details" colspan="6">Details</th>
26208          </tr>
26209          <tr class="entry_cont">
26210            <td class="entry_details" colspan="6">
26211              <p>When set to ON,<wbr/>
26212<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26213the output result metadata.<wbr/></p>
26214<p>ON is always supported on devices with the RAW capability.<wbr/></p>
26215            </td>
26216          </tr>
26217
26218
26219          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26220           <!-- end of entry -->
26221
26222
26223          <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26224            <td class="entry_name
26225             " rowspan="1">
26226              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26227            </td>
26228            <td class="entry_type">
26229                <span class="entry_type_name entry_type_name_enum">byte</span>
26230
26231              <span class="entry_type_visibility"> [public]</span>
26232
26233
26234
26235
26236
26237                <ul class="entry_type_enum">
26238                  <li>
26239                    <span class="entry_type_enum_name">OFF (v3.3)</span>
26240                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26241                  </li>
26242                  <li>
26243                    <span class="entry_type_enum_name">ON (v3.3)</span>
26244                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26245                  </li>
26246                </ul>
26247
26248            </td> <!-- entry_type -->
26249
26250            <td class="entry_description">
26251              <p>A control for selecting whether OIS position information is included in output
26252result metadata.<wbr/></p>
26253            </td>
26254
26255            <td class="entry_units">
26256            </td>
26257
26258            <td class="entry_range">
26259              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26260            </td>
26261
26262            <td class="entry_hal_version">
26263              <p>3.<wbr/>3</p>
26264            </td>
26265
26266            <td class="entry_tags">
26267            </td>
26268
26269          </tr>
26270
26271
26272          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26273           <!-- end of entry -->
26274
26275
26276          <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26277            <td class="entry_name
26278             " rowspan="3">
26279              android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26280            </td>
26281            <td class="entry_type">
26282                <span class="entry_type_name">int64</span>
26283                <span class="entry_type_container">x</span>
26284
26285                <span class="entry_type_array">
26286                  n
26287                </span>
26288              <span class="entry_type_visibility"> [ndk_public]</span>
26289
26290
26291
26292
26293
26294
26295            </td> <!-- entry_type -->
26296
26297            <td class="entry_description">
26298              <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26299            </td>
26300
26301            <td class="entry_units">
26302              nanoseconds
26303            </td>
26304
26305            <td class="entry_range">
26306            </td>
26307
26308            <td class="entry_hal_version">
26309              <p>3.<wbr/>3</p>
26310            </td>
26311
26312            <td class="entry_tags">
26313            </td>
26314
26315          </tr>
26316          <tr class="entries_header">
26317            <th class="th_details" colspan="6">Details</th>
26318          </tr>
26319          <tr class="entry_cont">
26320            <td class="entry_details" colspan="6">
26321              <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26322timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26323            </td>
26324          </tr>
26325
26326
26327          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26328           <!-- end of entry -->
26329
26330
26331          <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26332            <td class="entry_name
26333             " rowspan="3">
26334              android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26335            </td>
26336            <td class="entry_type">
26337                <span class="entry_type_name">float</span>
26338                <span class="entry_type_container">x</span>
26339
26340                <span class="entry_type_array">
26341                  n
26342                </span>
26343              <span class="entry_type_visibility"> [ndk_public]</span>
26344
26345
26346
26347
26348
26349
26350            </td> <!-- entry_type -->
26351
26352            <td class="entry_description">
26353              <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26354            </td>
26355
26356            <td class="entry_units">
26357              Pixels in active array.<wbr/>
26358            </td>
26359
26360            <td class="entry_range">
26361            </td>
26362
26363            <td class="entry_hal_version">
26364              <p>3.<wbr/>3</p>
26365            </td>
26366
26367            <td class="entry_tags">
26368            </td>
26369
26370          </tr>
26371          <tr class="entries_header">
26372            <th class="th_details" colspan="6">Details</th>
26373          </tr>
26374          <tr class="entry_cont">
26375            <td class="entry_details" colspan="6">
26376              <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26377A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26378example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26379(3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26380<p>The number of shifts must match the number of timestamps in
26381<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26382            </td>
26383          </tr>
26384
26385
26386          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26387           <!-- end of entry -->
26388
26389
26390          <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26391            <td class="entry_name
26392             " rowspan="3">
26393              android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26394            </td>
26395            <td class="entry_type">
26396                <span class="entry_type_name">float</span>
26397                <span class="entry_type_container">x</span>
26398
26399                <span class="entry_type_array">
26400                  n
26401                </span>
26402              <span class="entry_type_visibility"> [ndk_public]</span>
26403
26404
26405
26406
26407
26408
26409            </td> <!-- entry_type -->
26410
26411            <td class="entry_description">
26412              <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26413            </td>
26414
26415            <td class="entry_units">
26416              Pixels in active array.<wbr/>
26417            </td>
26418
26419            <td class="entry_range">
26420            </td>
26421
26422            <td class="entry_hal_version">
26423              <p>3.<wbr/>3</p>
26424            </td>
26425
26426            <td class="entry_tags">
26427            </td>
26428
26429          </tr>
26430          <tr class="entries_header">
26431            <th class="th_details" colspan="6">Details</th>
26432          </tr>
26433          <tr class="entry_cont">
26434            <td class="entry_details" colspan="6">
26435              <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26436A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26437example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26438(0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26439<p>The number of shifts must match the number of timestamps in
26440<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26441            </td>
26442          </tr>
26443
26444
26445          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26446           <!-- end of entry -->
26447
26448
26449          <tr class="entry" id="dynamic_android.statistics.oisSamples">
26450            <td class="entry_name
26451             " rowspan="3">
26452              android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26453            </td>
26454            <td class="entry_type">
26455                <span class="entry_type_name">float</span>
26456                <span class="entry_type_container">x</span>
26457
26458                <span class="entry_type_array">
26459                  n
26460                </span>
26461              <span class="entry_type_visibility"> [java_public as oisSample]</span>
26462
26463              <span class="entry_type_synthetic">[synthetic] </span>
26464
26465
26466
26467
26468
26469            </td> <!-- entry_type -->
26470
26471            <td class="entry_description">
26472              <p>An array of OIS samples.<wbr/></p>
26473            </td>
26474
26475            <td class="entry_units">
26476            </td>
26477
26478            <td class="entry_range">
26479            </td>
26480
26481            <td class="entry_hal_version">
26482              <p>3.<wbr/>3</p>
26483            </td>
26484
26485            <td class="entry_tags">
26486            </td>
26487
26488          </tr>
26489          <tr class="entries_header">
26490            <th class="th_details" colspan="6">Details</th>
26491          </tr>
26492          <tr class="entry_cont">
26493            <td class="entry_details" colspan="6">
26494              <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26495in pixels,<wbr/> of the OIS sample.<wbr/></p>
26496<p>A positive value for a shift in x direction is a shift from left to right in active array
26497coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26498coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26499<p>A positive value for a shift in y direction is a shift from top to bottom in active array
26500coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26501coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26502            </td>
26503          </tr>
26504
26505
26506          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26507           <!-- end of entry -->
26508
26509
26510
26511      <!-- end of kind -->
26512      </tbody>
26513
26514  <!-- end of section -->
26515  <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26516
26517
26518      <tr><td colspan="7" class="kind">controls</td></tr>
26519
26520      <thead class="entries_header">
26521        <tr>
26522          <th class="th_name">Property Name</th>
26523          <th class="th_type">Type</th>
26524          <th class="th_description">Description</th>
26525          <th class="th_units">Units</th>
26526          <th class="th_range">Range</th>
26527          <th class="th_hal_version">Initial HIDL HAL version</th>
26528          <th class="th_tags">Tags</th>
26529        </tr>
26530      </thead>
26531
26532      <tbody>
26533
26534
26535
26536
26537
26538
26539
26540
26541
26542
26543          <tr class="entry" id="controls_android.tonemap.curveBlue">
26544            <td class="entry_name
26545             " rowspan="3">
26546              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26547            </td>
26548            <td class="entry_type">
26549                <span class="entry_type_name">float</span>
26550                <span class="entry_type_container">x</span>
26551
26552                <span class="entry_type_array">
26553                  n x 2
26554                </span>
26555              <span class="entry_type_visibility"> [ndk_public]</span>
26556
26557
26558              <span class="entry_type_hwlevel">[full] </span>
26559
26560
26561                <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>
26562
26563
26564            </td> <!-- entry_type -->
26565
26566            <td class="entry_description">
26567              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26568channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26569CONTRAST_<wbr/>CURVE.<wbr/></p>
26570            </td>
26571
26572            <td class="entry_units">
26573            </td>
26574
26575            <td class="entry_range">
26576            </td>
26577
26578            <td class="entry_hal_version">
26579              <p>3.<wbr/>2</p>
26580            </td>
26581
26582            <td class="entry_tags">
26583            </td>
26584
26585          </tr>
26586          <tr class="entries_header">
26587            <th class="th_details" colspan="6">Details</th>
26588          </tr>
26589          <tr class="entry_cont">
26590            <td class="entry_details" colspan="6">
26591              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26592            </td>
26593          </tr>
26594
26595
26596          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26597           <!-- end of entry -->
26598
26599
26600          <tr class="entry" id="controls_android.tonemap.curveGreen">
26601            <td class="entry_name
26602             " rowspan="3">
26603              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26604            </td>
26605            <td class="entry_type">
26606                <span class="entry_type_name">float</span>
26607                <span class="entry_type_container">x</span>
26608
26609                <span class="entry_type_array">
26610                  n x 2
26611                </span>
26612              <span class="entry_type_visibility"> [ndk_public]</span>
26613
26614
26615              <span class="entry_type_hwlevel">[full] </span>
26616
26617
26618                <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>
26619
26620
26621            </td> <!-- entry_type -->
26622
26623            <td class="entry_description">
26624              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26625channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26626CONTRAST_<wbr/>CURVE.<wbr/></p>
26627            </td>
26628
26629            <td class="entry_units">
26630            </td>
26631
26632            <td class="entry_range">
26633            </td>
26634
26635            <td class="entry_hal_version">
26636              <p>3.<wbr/>2</p>
26637            </td>
26638
26639            <td class="entry_tags">
26640            </td>
26641
26642          </tr>
26643          <tr class="entries_header">
26644            <th class="th_details" colspan="6">Details</th>
26645          </tr>
26646          <tr class="entry_cont">
26647            <td class="entry_details" colspan="6">
26648              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26649            </td>
26650          </tr>
26651
26652
26653          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26654           <!-- end of entry -->
26655
26656
26657          <tr class="entry" id="controls_android.tonemap.curveRed">
26658            <td class="entry_name
26659             " rowspan="5">
26660              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26661            </td>
26662            <td class="entry_type">
26663                <span class="entry_type_name">float</span>
26664                <span class="entry_type_container">x</span>
26665
26666                <span class="entry_type_array">
26667                  n x 2
26668                </span>
26669              <span class="entry_type_visibility"> [ndk_public]</span>
26670
26671
26672              <span class="entry_type_hwlevel">[full] </span>
26673
26674
26675                <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>
26676
26677
26678            </td> <!-- entry_type -->
26679
26680            <td class="entry_description">
26681              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26682channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26683CONTRAST_<wbr/>CURVE.<wbr/></p>
26684            </td>
26685
26686            <td class="entry_units">
26687            </td>
26688
26689            <td class="entry_range">
26690              <p>0-1 on both input and output coordinates,<wbr/> normalized
26691as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26692            </td>
26693
26694            <td class="entry_hal_version">
26695              <p>3.<wbr/>2</p>
26696            </td>
26697
26698            <td class="entry_tags">
26699            </td>
26700
26701          </tr>
26702          <tr class="entries_header">
26703            <th class="th_details" colspan="6">Details</th>
26704          </tr>
26705          <tr class="entry_cont">
26706            <td class="entry_details" colspan="6">
26707              <p>Each channel's curve is defined by an array of control points:</p>
26708<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26709  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
267102 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26711<p>These are sorted in order of increasing <code>Pin</code>; it is
26712required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26713define a complete mapping.<wbr/> For input values between control points,<wbr/>
26714the camera device must linearly interpolate between the control
26715points.<wbr/></p>
26716<p>Each curve can have an independent number of points,<wbr/> and the number
26717of points can be less than max (that is,<wbr/> the request doesn't have to
26718always provide a curve with number of points equivalent to
26719<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26720<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26721are ignored.<wbr/></p>
26722<p>A few examples,<wbr/> and their corresponding graphical mappings; these
26723only specify the red channel and the precision is limited to 4
26724digits,<wbr/> for conciseness.<wbr/></p>
26725<p>Linear mapping:</p>
26726<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 ]
26727</code></pre>
26728<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26729<p>Invert mapping:</p>
26730<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 ]
26731</code></pre>
26732<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26733<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26734<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26735  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/>
26736  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/>
26737  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/>
26738  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 ]
26739</code></pre>
26740<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26741<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26743  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/>
26744  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/>
26745  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/>
26746  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 ]
26747</code></pre>
26748<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26749            </td>
26750          </tr>
26751
26752          <tr class="entries_header">
26753            <th class="th_details" colspan="6">HAL Implementation Details</th>
26754          </tr>
26755          <tr class="entry_cont">
26756            <td class="entry_details" colspan="6">
26757              <p>For good quality of mapping,<wbr/> at least 128 control points are
26758preferred.<wbr/></p>
26759<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26760control points used as are available.<wbr/></p>
26761            </td>
26762          </tr>
26763
26764          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26765           <!-- end of entry -->
26766
26767
26768          <tr class="entry" id="controls_android.tonemap.curve">
26769            <td class="entry_name
26770             " rowspan="5">
26771              android.<wbr/>tonemap.<wbr/>curve
26772            </td>
26773            <td class="entry_type">
26774                <span class="entry_type_name">float</span>
26775
26776              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26777
26778              <span class="entry_type_synthetic">[synthetic] </span>
26779
26780              <span class="entry_type_hwlevel">[full] </span>
26781
26782
26783
26784
26785            </td> <!-- entry_type -->
26786
26787            <td class="entry_description">
26788              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26789is CONTRAST_<wbr/>CURVE.<wbr/></p>
26790            </td>
26791
26792            <td class="entry_units">
26793            </td>
26794
26795            <td class="entry_range">
26796            </td>
26797
26798            <td class="entry_hal_version">
26799              <p>3.<wbr/>2</p>
26800            </td>
26801
26802            <td class="entry_tags">
26803            </td>
26804
26805          </tr>
26806          <tr class="entries_header">
26807            <th class="th_details" colspan="6">Details</th>
26808          </tr>
26809          <tr class="entry_cont">
26810            <td class="entry_details" colspan="6">
26811              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26812channels respectively.<wbr/> The following example uses the red channel as an
26813example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26814Each channel's curve is defined by an array of control points:</p>
26815<pre><code>curveRed =
26816  [ 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) ]
268172 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26818<p>These are sorted in order of increasing <code>Pin</code>; it is always
26819guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26820define a complete mapping.<wbr/> For input values between control points,<wbr/>
26821the camera device must linearly interpolate between the control
26822points.<wbr/></p>
26823<p>Each curve can have an independent number of points,<wbr/> and the number
26824of points can be less than max (that is,<wbr/> the request doesn't have to
26825always provide a curve with number of points equivalent to
26826<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26827<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26828are ignored.<wbr/></p>
26829<p>A few examples,<wbr/> and their corresponding graphical mappings; these
26830only specify the red channel and the precision is limited to 4
26831digits,<wbr/> for conciseness.<wbr/></p>
26832<p>Linear mapping:</p>
26833<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26834</code></pre>
26835<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26836<p>Invert mapping:</p>
26837<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26838</code></pre>
26839<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26840<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26841<pre><code>curveRed = [
26842  (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/>
26843  (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/>
26844  (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/>
26845  (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) ]
26846</code></pre>
26847<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26848<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26849<pre><code>curveRed = [
26850  (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/>
26851  (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/>
26852  (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/>
26853  (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) ]
26854</code></pre>
26855<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26856            </td>
26857          </tr>
26858
26859          <tr class="entries_header">
26860            <th class="th_details" colspan="6">HAL Implementation Details</th>
26861          </tr>
26862          <tr class="entry_cont">
26863            <td class="entry_details" colspan="6">
26864              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26865curveBlue entries.<wbr/></p>
26866            </td>
26867          </tr>
26868
26869          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26870           <!-- end of entry -->
26871
26872
26873          <tr class="entry" id="controls_android.tonemap.mode">
26874            <td class="entry_name
26875             " rowspan="3">
26876              android.<wbr/>tonemap.<wbr/>mode
26877            </td>
26878            <td class="entry_type">
26879                <span class="entry_type_name entry_type_name_enum">byte</span>
26880
26881              <span class="entry_type_visibility"> [public]</span>
26882
26883
26884              <span class="entry_type_hwlevel">[full] </span>
26885
26886
26887
26888                <ul class="entry_type_enum">
26889                  <li>
26890                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26891                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26892the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26893<p>All color enhancement and tonemapping must be disabled,<wbr/> except
26894for applying the tonemapping curve specified by
26895<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26896<p>Must not slow down frame rate relative to raw
26897sensor output.<wbr/></p></span>
26898                  </li>
26899                  <li>
26900                    <span class="entry_type_enum_name">FAST (v3.2)</span>
26901                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26902reducing frame rate compared to raw sensor output.<wbr/></p></span>
26903                  </li>
26904                  <li>
26905                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26906                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26907the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26908                  </li>
26909                  <li>
26910                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26911                    <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
26912tonemapping.<wbr/></p>
26913<p>All color enhancement and tonemapping must be disabled,<wbr/> except
26914for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26915<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26916                  </li>
26917                  <li>
26918                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26919                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26920<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26921<p>All color enhancement and tonemapping must be disabled,<wbr/> except
26922for applying the tonemapping curve specified by
26923<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26924<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26925                  </li>
26926                </ul>
26927
26928            </td> <!-- entry_type -->
26929
26930            <td class="entry_description">
26931              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26932            </td>
26933
26934            <td class="entry_units">
26935            </td>
26936
26937            <td class="entry_range">
26938              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26939            </td>
26940
26941            <td class="entry_hal_version">
26942              <p>3.<wbr/>2</p>
26943            </td>
26944
26945            <td class="entry_tags">
26946            </td>
26947
26948          </tr>
26949          <tr class="entries_header">
26950            <th class="th_details" colspan="6">Details</th>
26951          </tr>
26952          <tr class="entry_cont">
26953            <td class="entry_details" colspan="6">
26954              <p>When switching to an application-defined contrast curve by setting
26955<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26956per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26957mapping from input high-bit-depth pixel value to the output
26958low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26959and output may change depending on the camera pipeline,<wbr/> the values
26960are specified by normalized floating-point numbers.<wbr/></p>
26961<p>More-complex color mapping operations such as 3D color look-up
26962tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26963transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26964CONTRAST_<wbr/>CURVE.<wbr/></p>
26965<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26966emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26967These values are always available,<wbr/> and as close as possible to the
26968actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26969<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26970provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26971roughly the same.<wbr/></p>
26972            </td>
26973          </tr>
26974
26975
26976          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26977           <!-- end of entry -->
26978
26979
26980          <tr class="entry" id="controls_android.tonemap.gamma">
26981            <td class="entry_name
26982             " rowspan="3">
26983              android.<wbr/>tonemap.<wbr/>gamma
26984            </td>
26985            <td class="entry_type">
26986                <span class="entry_type_name">float</span>
26987
26988              <span class="entry_type_visibility"> [public]</span>
26989
26990
26991
26992
26993
26994
26995            </td> <!-- entry_type -->
26996
26997            <td class="entry_description">
26998              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26999GAMMA_<wbr/>VALUE</p>
27000            </td>
27001
27002            <td class="entry_units">
27003            </td>
27004
27005            <td class="entry_range">
27006            </td>
27007
27008            <td class="entry_hal_version">
27009              <p>3.<wbr/>2</p>
27010            </td>
27011
27012            <td class="entry_tags">
27013            </td>
27014
27015          </tr>
27016          <tr class="entries_header">
27017            <th class="th_details" colspan="6">Details</th>
27018          </tr>
27019          <tr class="entry_cont">
27020            <td class="entry_details" colspan="6">
27021              <p>The tonemap curve will be defined the following formula:
27022* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27023where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27024pow is the power function and gamma is the gamma value specified by this
27025key.<wbr/></p>
27026<p>The same curve will be applied to all color channels.<wbr/> The camera device
27027may clip the input gamma value to its supported range.<wbr/> The actual applied
27028value will be returned in capture result.<wbr/></p>
27029<p>The valid range of gamma value varies on different devices,<wbr/> but values
27030within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27031            </td>
27032          </tr>
27033
27034
27035          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27036           <!-- end of entry -->
27037
27038
27039          <tr class="entry" id="controls_android.tonemap.presetCurve">
27040            <td class="entry_name
27041             " rowspan="3">
27042              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27043            </td>
27044            <td class="entry_type">
27045                <span class="entry_type_name entry_type_name_enum">byte</span>
27046
27047              <span class="entry_type_visibility"> [public]</span>
27048
27049
27050
27051
27052
27053                <ul class="entry_type_enum">
27054                  <li>
27055                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
27056                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27057                  </li>
27058                  <li>
27059                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
27060                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27061                  </li>
27062                </ul>
27063
27064            </td> <!-- entry_type -->
27065
27066            <td class="entry_description">
27067              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27068PRESET_<wbr/>CURVE</p>
27069            </td>
27070
27071            <td class="entry_units">
27072            </td>
27073
27074            <td class="entry_range">
27075            </td>
27076
27077            <td class="entry_hal_version">
27078              <p>3.<wbr/>2</p>
27079            </td>
27080
27081            <td class="entry_tags">
27082            </td>
27083
27084          </tr>
27085          <tr class="entries_header">
27086            <th class="th_details" colspan="6">Details</th>
27087          </tr>
27088          <tr class="entry_cont">
27089            <td class="entry_details" colspan="6">
27090              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27091<p>sRGB (approximated by 16 control points):</p>
27092<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27093<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27094<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27095<p>Note that above figures show a 16 control points approximation of preset
27096curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27097            </td>
27098          </tr>
27099
27100
27101          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27102           <!-- end of entry -->
27103
27104
27105
27106      <!-- end of kind -->
27107      </tbody>
27108      <tr><td colspan="7" class="kind">static</td></tr>
27109
27110      <thead class="entries_header">
27111        <tr>
27112          <th class="th_name">Property Name</th>
27113          <th class="th_type">Type</th>
27114          <th class="th_description">Description</th>
27115          <th class="th_units">Units</th>
27116          <th class="th_range">Range</th>
27117          <th class="th_hal_version">Initial HIDL HAL version</th>
27118          <th class="th_tags">Tags</th>
27119        </tr>
27120      </thead>
27121
27122      <tbody>
27123
27124
27125
27126
27127
27128
27129
27130
27131
27132
27133          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27134            <td class="entry_name
27135             " rowspan="5">
27136              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27137            </td>
27138            <td class="entry_type">
27139                <span class="entry_type_name">int32</span>
27140
27141              <span class="entry_type_visibility"> [public]</span>
27142
27143
27144              <span class="entry_type_hwlevel">[full] </span>
27145
27146
27147
27148
27149            </td> <!-- entry_type -->
27150
27151            <td class="entry_description">
27152              <p>Maximum number of supported points in the
27153tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27154            </td>
27155
27156            <td class="entry_units">
27157            </td>
27158
27159            <td class="entry_range">
27160            </td>
27161
27162            <td class="entry_hal_version">
27163              <p>3.<wbr/>2</p>
27164            </td>
27165
27166            <td class="entry_tags">
27167            </td>
27168
27169          </tr>
27170          <tr class="entries_header">
27171            <th class="th_details" colspan="6">Details</th>
27172          </tr>
27173          <tr class="entry_cont">
27174            <td class="entry_details" colspan="6">
27175              <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
27176less than this maximum,<wbr/> the camera device will resample the curve to its internal
27177representation,<wbr/> using linear interpolation.<wbr/></p>
27178<p>The output curves in the result metadata may have a different number
27179of points than the input curves,<wbr/> and will represent the actual
27180hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27181            </td>
27182          </tr>
27183
27184          <tr class="entries_header">
27185            <th class="th_details" colspan="6">HAL Implementation Details</th>
27186          </tr>
27187          <tr class="entry_cont">
27188            <td class="entry_details" colspan="6">
27189              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27190            </td>
27191          </tr>
27192
27193          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27194           <!-- end of entry -->
27195
27196
27197          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27198            <td class="entry_name
27199             " rowspan="5">
27200              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27201            </td>
27202            <td class="entry_type">
27203                <span class="entry_type_name">byte</span>
27204                <span class="entry_type_container">x</span>
27205
27206                <span class="entry_type_array">
27207                  n
27208                </span>
27209              <span class="entry_type_visibility"> [public as enumList]</span>
27210
27211
27212              <span class="entry_type_hwlevel">[full] </span>
27213
27214
27215                <div class="entry_type_notes">list of enums</div>
27216
27217
27218            </td> <!-- entry_type -->
27219
27220            <td class="entry_description">
27221              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27222device.<wbr/></p>
27223            </td>
27224
27225            <td class="entry_units">
27226            </td>
27227
27228            <td class="entry_range">
27229              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27230            </td>
27231
27232            <td class="entry_hal_version">
27233              <p>3.<wbr/>2</p>
27234            </td>
27235
27236            <td class="entry_tags">
27237            </td>
27238
27239          </tr>
27240          <tr class="entries_header">
27241            <th class="th_details" colspan="6">Details</th>
27242          </tr>
27243          <tr class="entry_cont">
27244            <td class="entry_details" colspan="6">
27245              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27246at least one of below mode combinations:</p>
27247<ul>
27248<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27249<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27250</ul>
27251<p>This includes all FULL level devices.<wbr/></p>
27252            </td>
27253          </tr>
27254
27255          <tr class="entries_header">
27256            <th class="th_details" colspan="6">HAL Implementation Details</th>
27257          </tr>
27258          <tr class="entry_cont">
27259            <td class="entry_details" colspan="6">
27260              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27261on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27262That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27263capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27264            </td>
27265          </tr>
27266
27267          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27268           <!-- end of entry -->
27269
27270
27271
27272      <!-- end of kind -->
27273      </tbody>
27274      <tr><td colspan="7" class="kind">dynamic</td></tr>
27275
27276      <thead class="entries_header">
27277        <tr>
27278          <th class="th_name">Property Name</th>
27279          <th class="th_type">Type</th>
27280          <th class="th_description">Description</th>
27281          <th class="th_units">Units</th>
27282          <th class="th_range">Range</th>
27283          <th class="th_hal_version">Initial HIDL HAL version</th>
27284          <th class="th_tags">Tags</th>
27285        </tr>
27286      </thead>
27287
27288      <tbody>
27289
27290
27291
27292
27293
27294
27295
27296
27297
27298
27299          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27300            <td class="entry_name
27301             " rowspan="3">
27302              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27303            </td>
27304            <td class="entry_type">
27305                <span class="entry_type_name">float</span>
27306                <span class="entry_type_container">x</span>
27307
27308                <span class="entry_type_array">
27309                  n x 2
27310                </span>
27311              <span class="entry_type_visibility"> [ndk_public]</span>
27312
27313
27314              <span class="entry_type_hwlevel">[full] </span>
27315
27316
27317                <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
27318
27319
27320            </td> <!-- entry_type -->
27321
27322            <td class="entry_description">
27323              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27324channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27325CONTRAST_<wbr/>CURVE.<wbr/></p>
27326            </td>
27327
27328            <td class="entry_units">
27329            </td>
27330
27331            <td class="entry_range">
27332            </td>
27333
27334            <td class="entry_hal_version">
27335              <p>3.<wbr/>2</p>
27336            </td>
27337
27338            <td class="entry_tags">
27339            </td>
27340
27341          </tr>
27342          <tr class="entries_header">
27343            <th class="th_details" colspan="6">Details</th>
27344          </tr>
27345          <tr class="entry_cont">
27346            <td class="entry_details" colspan="6">
27347              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27348            </td>
27349          </tr>
27350
27351
27352          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27353           <!-- end of entry -->
27354
27355
27356          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27357            <td class="entry_name
27358             " rowspan="3">
27359              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27360            </td>
27361            <td class="entry_type">
27362                <span class="entry_type_name">float</span>
27363                <span class="entry_type_container">x</span>
27364
27365                <span class="entry_type_array">
27366                  n x 2
27367                </span>
27368              <span class="entry_type_visibility"> [ndk_public]</span>
27369
27370
27371              <span class="entry_type_hwlevel">[full] </span>
27372
27373
27374                <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
27375
27376
27377            </td> <!-- entry_type -->
27378
27379            <td class="entry_description">
27380              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27381channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27382CONTRAST_<wbr/>CURVE.<wbr/></p>
27383            </td>
27384
27385            <td class="entry_units">
27386            </td>
27387
27388            <td class="entry_range">
27389            </td>
27390
27391            <td class="entry_hal_version">
27392              <p>3.<wbr/>2</p>
27393            </td>
27394
27395            <td class="entry_tags">
27396            </td>
27397
27398          </tr>
27399          <tr class="entries_header">
27400            <th class="th_details" colspan="6">Details</th>
27401          </tr>
27402          <tr class="entry_cont">
27403            <td class="entry_details" colspan="6">
27404              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27405            </td>
27406          </tr>
27407
27408
27409          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27410           <!-- end of entry -->
27411
27412
27413          <tr class="entry" id="dynamic_android.tonemap.curveRed">
27414            <td class="entry_name
27415             " rowspan="5">
27416              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27417            </td>
27418            <td class="entry_type">
27419                <span class="entry_type_name">float</span>
27420                <span class="entry_type_container">x</span>
27421
27422                <span class="entry_type_array">
27423                  n x 2
27424                </span>
27425              <span class="entry_type_visibility"> [ndk_public]</span>
27426
27427
27428              <span class="entry_type_hwlevel">[full] </span>
27429
27430
27431                <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>
27432
27433
27434            </td> <!-- entry_type -->
27435
27436            <td class="entry_description">
27437              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27438channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27439CONTRAST_<wbr/>CURVE.<wbr/></p>
27440            </td>
27441
27442            <td class="entry_units">
27443            </td>
27444
27445            <td class="entry_range">
27446              <p>0-1 on both input and output coordinates,<wbr/> normalized
27447as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27448            </td>
27449
27450            <td class="entry_hal_version">
27451              <p>3.<wbr/>2</p>
27452            </td>
27453
27454            <td class="entry_tags">
27455            </td>
27456
27457          </tr>
27458          <tr class="entries_header">
27459            <th class="th_details" colspan="6">Details</th>
27460          </tr>
27461          <tr class="entry_cont">
27462            <td class="entry_details" colspan="6">
27463              <p>Each channel's curve is defined by an array of control points:</p>
27464<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27465  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
274662 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27467<p>These are sorted in order of increasing <code>Pin</code>; it is
27468required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27469define a complete mapping.<wbr/> For input values between control points,<wbr/>
27470the camera device must linearly interpolate between the control
27471points.<wbr/></p>
27472<p>Each curve can have an independent number of points,<wbr/> and the number
27473of points can be less than max (that is,<wbr/> the request doesn't have to
27474always provide a curve with number of points equivalent to
27475<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27476<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27477are ignored.<wbr/></p>
27478<p>A few examples,<wbr/> and their corresponding graphical mappings; these
27479only specify the red channel and the precision is limited to 4
27480digits,<wbr/> for conciseness.<wbr/></p>
27481<p>Linear mapping:</p>
27482<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 ]
27483</code></pre>
27484<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27485<p>Invert mapping:</p>
27486<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 ]
27487</code></pre>
27488<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27489<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27490<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27491  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/>
27492  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/>
27493  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/>
27494  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 ]
27495</code></pre>
27496<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27497<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27498<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27499  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/>
27500  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/>
27501  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/>
27502  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 ]
27503</code></pre>
27504<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27505            </td>
27506          </tr>
27507
27508          <tr class="entries_header">
27509            <th class="th_details" colspan="6">HAL Implementation Details</th>
27510          </tr>
27511          <tr class="entry_cont">
27512            <td class="entry_details" colspan="6">
27513              <p>For good quality of mapping,<wbr/> at least 128 control points are
27514preferred.<wbr/></p>
27515<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27516control points used as are available.<wbr/></p>
27517            </td>
27518          </tr>
27519
27520          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27521           <!-- end of entry -->
27522
27523
27524          <tr class="entry" id="dynamic_android.tonemap.curve">
27525            <td class="entry_name
27526             " rowspan="5">
27527              android.<wbr/>tonemap.<wbr/>curve
27528            </td>
27529            <td class="entry_type">
27530                <span class="entry_type_name">float</span>
27531
27532              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27533
27534              <span class="entry_type_synthetic">[synthetic] </span>
27535
27536              <span class="entry_type_hwlevel">[full] </span>
27537
27538
27539
27540
27541            </td> <!-- entry_type -->
27542
27543            <td class="entry_description">
27544              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27545is CONTRAST_<wbr/>CURVE.<wbr/></p>
27546            </td>
27547
27548            <td class="entry_units">
27549            </td>
27550
27551            <td class="entry_range">
27552            </td>
27553
27554            <td class="entry_hal_version">
27555              <p>3.<wbr/>2</p>
27556            </td>
27557
27558            <td class="entry_tags">
27559            </td>
27560
27561          </tr>
27562          <tr class="entries_header">
27563            <th class="th_details" colspan="6">Details</th>
27564          </tr>
27565          <tr class="entry_cont">
27566            <td class="entry_details" colspan="6">
27567              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27568channels respectively.<wbr/> The following example uses the red channel as an
27569example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27570Each channel's curve is defined by an array of control points:</p>
27571<pre><code>curveRed =
27572  [ 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) ]
275732 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27574<p>These are sorted in order of increasing <code>Pin</code>; it is always
27575guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27576define a complete mapping.<wbr/> For input values between control points,<wbr/>
27577the camera device must linearly interpolate between the control
27578points.<wbr/></p>
27579<p>Each curve can have an independent number of points,<wbr/> and the number
27580of points can be less than max (that is,<wbr/> the request doesn't have to
27581always provide a curve with number of points equivalent to
27582<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27583<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27584are ignored.<wbr/></p>
27585<p>A few examples,<wbr/> and their corresponding graphical mappings; these
27586only specify the red channel and the precision is limited to 4
27587digits,<wbr/> for conciseness.<wbr/></p>
27588<p>Linear mapping:</p>
27589<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27590</code></pre>
27591<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27592<p>Invert mapping:</p>
27593<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27594</code></pre>
27595<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27596<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27597<pre><code>curveRed = [
27598  (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/>
27599  (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/>
27600  (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/>
27601  (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) ]
27602</code></pre>
27603<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27604<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27605<pre><code>curveRed = [
27606  (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/>
27607  (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/>
27608  (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/>
27609  (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) ]
27610</code></pre>
27611<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27612            </td>
27613          </tr>
27614
27615          <tr class="entries_header">
27616            <th class="th_details" colspan="6">HAL Implementation Details</th>
27617          </tr>
27618          <tr class="entry_cont">
27619            <td class="entry_details" colspan="6">
27620              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27621curveBlue entries.<wbr/></p>
27622            </td>
27623          </tr>
27624
27625          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27626           <!-- end of entry -->
27627
27628
27629          <tr class="entry" id="dynamic_android.tonemap.mode">
27630            <td class="entry_name
27631             " rowspan="3">
27632              android.<wbr/>tonemap.<wbr/>mode
27633            </td>
27634            <td class="entry_type">
27635                <span class="entry_type_name entry_type_name_enum">byte</span>
27636
27637              <span class="entry_type_visibility"> [public]</span>
27638
27639
27640              <span class="entry_type_hwlevel">[full] </span>
27641
27642
27643
27644                <ul class="entry_type_enum">
27645                  <li>
27646                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27647                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27648the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27649<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27650for applying the tonemapping curve specified by
27651<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27652<p>Must not slow down frame rate relative to raw
27653sensor output.<wbr/></p></span>
27654                  </li>
27655                  <li>
27656                    <span class="entry_type_enum_name">FAST (v3.2)</span>
27657                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27658reducing frame rate compared to raw sensor output.<wbr/></p></span>
27659                  </li>
27660                  <li>
27661                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27662                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27663the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27664                  </li>
27665                  <li>
27666                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27667                    <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
27668tonemapping.<wbr/></p>
27669<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27670for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27671<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27672                  </li>
27673                  <li>
27674                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27675                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27676<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27677<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27678for applying the tonemapping curve specified by
27679<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27680<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27681                  </li>
27682                </ul>
27683
27684            </td> <!-- entry_type -->
27685
27686            <td class="entry_description">
27687              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27688            </td>
27689
27690            <td class="entry_units">
27691            </td>
27692
27693            <td class="entry_range">
27694              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27695            </td>
27696
27697            <td class="entry_hal_version">
27698              <p>3.<wbr/>2</p>
27699            </td>
27700
27701            <td class="entry_tags">
27702            </td>
27703
27704          </tr>
27705          <tr class="entries_header">
27706            <th class="th_details" colspan="6">Details</th>
27707          </tr>
27708          <tr class="entry_cont">
27709            <td class="entry_details" colspan="6">
27710              <p>When switching to an application-defined contrast curve by setting
27711<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27712per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27713mapping from input high-bit-depth pixel value to the output
27714low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27715and output may change depending on the camera pipeline,<wbr/> the values
27716are specified by normalized floating-point numbers.<wbr/></p>
27717<p>More-complex color mapping operations such as 3D color look-up
27718tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27719transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27720CONTRAST_<wbr/>CURVE.<wbr/></p>
27721<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27722emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27723These values are always available,<wbr/> and as close as possible to the
27724actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27725<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27726provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27727roughly the same.<wbr/></p>
27728            </td>
27729          </tr>
27730
27731
27732          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27733           <!-- end of entry -->
27734
27735
27736          <tr class="entry" id="dynamic_android.tonemap.gamma">
27737            <td class="entry_name
27738             " rowspan="3">
27739              android.<wbr/>tonemap.<wbr/>gamma
27740            </td>
27741            <td class="entry_type">
27742                <span class="entry_type_name">float</span>
27743
27744              <span class="entry_type_visibility"> [public]</span>
27745
27746
27747
27748
27749
27750
27751            </td> <!-- entry_type -->
27752
27753            <td class="entry_description">
27754              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27755GAMMA_<wbr/>VALUE</p>
27756            </td>
27757
27758            <td class="entry_units">
27759            </td>
27760
27761            <td class="entry_range">
27762            </td>
27763
27764            <td class="entry_hal_version">
27765              <p>3.<wbr/>2</p>
27766            </td>
27767
27768            <td class="entry_tags">
27769            </td>
27770
27771          </tr>
27772          <tr class="entries_header">
27773            <th class="th_details" colspan="6">Details</th>
27774          </tr>
27775          <tr class="entry_cont">
27776            <td class="entry_details" colspan="6">
27777              <p>The tonemap curve will be defined the following formula:
27778* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27779where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27780pow is the power function and gamma is the gamma value specified by this
27781key.<wbr/></p>
27782<p>The same curve will be applied to all color channels.<wbr/> The camera device
27783may clip the input gamma value to its supported range.<wbr/> The actual applied
27784value will be returned in capture result.<wbr/></p>
27785<p>The valid range of gamma value varies on different devices,<wbr/> but values
27786within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27787            </td>
27788          </tr>
27789
27790
27791          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27792           <!-- end of entry -->
27793
27794
27795          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27796            <td class="entry_name
27797             " rowspan="3">
27798              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27799            </td>
27800            <td class="entry_type">
27801                <span class="entry_type_name entry_type_name_enum">byte</span>
27802
27803              <span class="entry_type_visibility"> [public]</span>
27804
27805
27806
27807
27808
27809                <ul class="entry_type_enum">
27810                  <li>
27811                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
27812                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27813                  </li>
27814                  <li>
27815                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
27816                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27817                  </li>
27818                </ul>
27819
27820            </td> <!-- entry_type -->
27821
27822            <td class="entry_description">
27823              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27824PRESET_<wbr/>CURVE</p>
27825            </td>
27826
27827            <td class="entry_units">
27828            </td>
27829
27830            <td class="entry_range">
27831            </td>
27832
27833            <td class="entry_hal_version">
27834              <p>3.<wbr/>2</p>
27835            </td>
27836
27837            <td class="entry_tags">
27838            </td>
27839
27840          </tr>
27841          <tr class="entries_header">
27842            <th class="th_details" colspan="6">Details</th>
27843          </tr>
27844          <tr class="entry_cont">
27845            <td class="entry_details" colspan="6">
27846              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27847<p>sRGB (approximated by 16 control points):</p>
27848<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27849<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27850<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27851<p>Note that above figures show a 16 control points approximation of preset
27852curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27853            </td>
27854          </tr>
27855
27856
27857          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27858           <!-- end of entry -->
27859
27860
27861
27862      <!-- end of kind -->
27863      </tbody>
27864
27865  <!-- end of section -->
27866  <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27867
27868
27869      <tr><td colspan="7" class="kind">controls</td></tr>
27870
27871      <thead class="entries_header">
27872        <tr>
27873          <th class="th_name">Property Name</th>
27874          <th class="th_type">Type</th>
27875          <th class="th_description">Description</th>
27876          <th class="th_units">Units</th>
27877          <th class="th_range">Range</th>
27878          <th class="th_hal_version">Initial HIDL HAL version</th>
27879          <th class="th_tags">Tags</th>
27880        </tr>
27881      </thead>
27882
27883      <tbody>
27884
27885
27886
27887
27888
27889
27890
27891
27892
27893
27894          <tr class="entry" id="controls_android.led.transmit">
27895            <td class="entry_name
27896             " rowspan="1">
27897              android.<wbr/>led.<wbr/>transmit
27898            </td>
27899            <td class="entry_type">
27900                <span class="entry_type_name entry_type_name_enum">byte</span>
27901
27902              <span class="entry_type_visibility"> [hidden as boolean]</span>
27903
27904
27905
27906
27907
27908                <ul class="entry_type_enum">
27909                  <li>
27910                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27911                  </li>
27912                  <li>
27913                    <span class="entry_type_enum_name">ON (v3.2)</span>
27914                  </li>
27915                </ul>
27916
27917            </td> <!-- entry_type -->
27918
27919            <td class="entry_description">
27920              <p>This LED is nominally used to indicate to the user
27921that the camera is powered on and may be streaming images back to the
27922Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27923disable this when video is processed locally and not transmitted to
27924any untrusted applications.<wbr/></p>
27925<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27926transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27927data is stored locally on the device.<wbr/></p>
27928<p>The LED <em>may</em> be off if a trusted application is using the data that
27929doesn't violate the above rules.<wbr/></p>
27930            </td>
27931
27932            <td class="entry_units">
27933            </td>
27934
27935            <td class="entry_range">
27936            </td>
27937
27938            <td class="entry_hal_version">
27939              <p>3.<wbr/>2</p>
27940            </td>
27941
27942            <td class="entry_tags">
27943            </td>
27944
27945          </tr>
27946
27947
27948          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27949           <!-- end of entry -->
27950
27951
27952
27953      <!-- end of kind -->
27954      </tbody>
27955      <tr><td colspan="7" class="kind">dynamic</td></tr>
27956
27957      <thead class="entries_header">
27958        <tr>
27959          <th class="th_name">Property Name</th>
27960          <th class="th_type">Type</th>
27961          <th class="th_description">Description</th>
27962          <th class="th_units">Units</th>
27963          <th class="th_range">Range</th>
27964          <th class="th_hal_version">Initial HIDL HAL version</th>
27965          <th class="th_tags">Tags</th>
27966        </tr>
27967      </thead>
27968
27969      <tbody>
27970
27971
27972
27973
27974
27975
27976
27977
27978
27979
27980          <tr class="entry" id="dynamic_android.led.transmit">
27981            <td class="entry_name
27982             " rowspan="1">
27983              android.<wbr/>led.<wbr/>transmit
27984            </td>
27985            <td class="entry_type">
27986                <span class="entry_type_name entry_type_name_enum">byte</span>
27987
27988              <span class="entry_type_visibility"> [hidden as boolean]</span>
27989
27990
27991
27992
27993
27994                <ul class="entry_type_enum">
27995                  <li>
27996                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27997                  </li>
27998                  <li>
27999                    <span class="entry_type_enum_name">ON (v3.2)</span>
28000                  </li>
28001                </ul>
28002
28003            </td> <!-- entry_type -->
28004
28005            <td class="entry_description">
28006              <p>This LED is nominally used to indicate to the user
28007that the camera is powered on and may be streaming images back to the
28008Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
28009disable this when video is processed locally and not transmitted to
28010any untrusted applications.<wbr/></p>
28011<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
28012transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
28013data is stored locally on the device.<wbr/></p>
28014<p>The LED <em>may</em> be off if a trusted application is using the data that
28015doesn't violate the above rules.<wbr/></p>
28016            </td>
28017
28018            <td class="entry_units">
28019            </td>
28020
28021            <td class="entry_range">
28022            </td>
28023
28024            <td class="entry_hal_version">
28025              <p>3.<wbr/>2</p>
28026            </td>
28027
28028            <td class="entry_tags">
28029            </td>
28030
28031          </tr>
28032
28033
28034          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28035           <!-- end of entry -->
28036
28037
28038
28039      <!-- end of kind -->
28040      </tbody>
28041      <tr><td colspan="7" class="kind">static</td></tr>
28042
28043      <thead class="entries_header">
28044        <tr>
28045          <th class="th_name">Property Name</th>
28046          <th class="th_type">Type</th>
28047          <th class="th_description">Description</th>
28048          <th class="th_units">Units</th>
28049          <th class="th_range">Range</th>
28050          <th class="th_hal_version">Initial HIDL HAL version</th>
28051          <th class="th_tags">Tags</th>
28052        </tr>
28053      </thead>
28054
28055      <tbody>
28056
28057
28058
28059
28060
28061
28062
28063
28064
28065
28066          <tr class="entry" id="static_android.led.availableLeds">
28067            <td class="entry_name
28068             " rowspan="1">
28069              android.<wbr/>led.<wbr/>available<wbr/>Leds
28070            </td>
28071            <td class="entry_type">
28072                <span class="entry_type_name entry_type_name_enum">byte</span>
28073                <span class="entry_type_container">x</span>
28074
28075                <span class="entry_type_array">
28076                  n
28077                </span>
28078              <span class="entry_type_visibility"> [hidden]</span>
28079
28080
28081
28082
28083
28084                <ul class="entry_type_enum">
28085                  <li>
28086                    <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28087                    <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>
28088                  </li>
28089                </ul>
28090
28091            </td> <!-- entry_type -->
28092
28093            <td class="entry_description">
28094              <p>A list of camera LEDs that are available on this system.<wbr/></p>
28095            </td>
28096
28097            <td class="entry_units">
28098            </td>
28099
28100            <td class="entry_range">
28101            </td>
28102
28103            <td class="entry_hal_version">
28104              <p>3.<wbr/>2</p>
28105            </td>
28106
28107            <td class="entry_tags">
28108            </td>
28109
28110          </tr>
28111
28112
28113          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28114           <!-- end of entry -->
28115
28116
28117
28118      <!-- end of kind -->
28119      </tbody>
28120
28121  <!-- end of section -->
28122  <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28123
28124
28125      <tr><td colspan="7" class="kind">static</td></tr>
28126
28127      <thead class="entries_header">
28128        <tr>
28129          <th class="th_name">Property Name</th>
28130          <th class="th_type">Type</th>
28131          <th class="th_description">Description</th>
28132          <th class="th_units">Units</th>
28133          <th class="th_range">Range</th>
28134          <th class="th_hal_version">Initial HIDL HAL version</th>
28135          <th class="th_tags">Tags</th>
28136        </tr>
28137      </thead>
28138
28139      <tbody>
28140
28141
28142
28143
28144
28145
28146
28147
28148
28149
28150          <tr class="entry" id="static_android.info.supportedHardwareLevel">
28151            <td class="entry_name
28152             " rowspan="5">
28153              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28154            </td>
28155            <td class="entry_type">
28156                <span class="entry_type_name entry_type_name_enum">byte</span>
28157
28158              <span class="entry_type_visibility"> [public]</span>
28159
28160
28161              <span class="entry_type_hwlevel">[legacy] </span>
28162
28163
28164
28165                <ul class="entry_type_enum">
28166                  <li>
28167                    <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28168                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28169better.<wbr/></p>
28170<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28171<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28172<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28173support for color image capture.<wbr/> The only exception is that the device may
28174alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28175measurements and not color images.<wbr/></p>
28176<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>
28177to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28178capturing a high-quality still image.<wbr/></p>
28179<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28180required to support full-automatic operation and post-processing (<code>OFF</code> is not
28181supported 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
28182<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28183<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28184can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28185                  </li>
28186                  <li>
28187                    <span class="entry_type_enum_name">FULL (v3.2)</span>
28188                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28189<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28190<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28191<p>A <code>FULL</code> device will support below capabilities:</p>
28192<ul>
28193<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28194  <code>BURST_<wbr/>CAPTURE</code>)</li>
28195<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>
28196<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>
28197<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28198  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28199<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>
28200<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>
28201</ul>
28202<p>Note:
28203Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28204(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
2820523,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28206                  </li>
28207                  <li>
28208                    <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28209                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28210<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are supported.<wbr/></p>
28211<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28212post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28213No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28214<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28215<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>
28216devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28217as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
28218fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28219for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28220enable the flash.<wbr/></p></span>
28221                  </li>
28222                  <li>
28223                    <span class="entry_type_enum_name">3 (v3.2)</span>
28224                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28225FULL-level capabilities.<wbr/></p>
28226<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
28227<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28228<p>The following additional capabilities are guaranteed to be supported:</p>
28229<ul>
28230<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28231  <code>YUV_<wbr/>REPROCESSING</code>)</li>
28232<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28233  <code>RAW</code>)</li>
28234</ul></span>
28235                  </li>
28236                  <li>
28237                    <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28238                    <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28239<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28240exceptions:</p>
28241<ul>
28242<li>The device may not report lens/<wbr/>sensor related information such as<ul>
28243<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28244<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28245<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28246<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28247<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28248<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28249<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28250</ul>
28251</li>
28252<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28253<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28254  on the external camera being used.<wbr/></li>
28255</ul></span>
28256                  </li>
28257                </ul>
28258
28259            </td> <!-- entry_type -->
28260
28261            <td class="entry_description">
28262              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28263            </td>
28264
28265            <td class="entry_units">
28266            </td>
28267
28268            <td class="entry_range">
28269            </td>
28270
28271            <td class="entry_hal_version">
28272              <p>3.<wbr/>2</p>
28273            </td>
28274
28275            <td class="entry_tags">
28276            </td>
28277
28278          </tr>
28279          <tr class="entries_header">
28280            <th class="th_details" colspan="6">Details</th>
28281          </tr>
28282          <tr class="entry_cont">
28283            <td class="entry_details" colspan="6">
28284              <p>The supported hardware level is a high-level description of the camera device's
28285capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
28286features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28287The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
28288<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28289numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28290the following code snippet can be used:</p>
28291<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28292boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28293    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28294    if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28295        return requiredLevel == deviceLevel;
28296    }
28297    //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28298    return requiredLevel &lt;= deviceLevel;
28299}
28300</code></pre>
28301<p>At a high level,<wbr/> the levels are:</p>
28302<ul>
28303<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28304  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28305<li><code>LIMITED</code> devices represent the
28306  baseline feature set,<wbr/> and may also include additional capabilities that are
28307  subsets of <code>FULL</code>.<wbr/></li>
28308<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28309  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28310<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28311  with additional output stream configurations.<wbr/></li>
28312</ul>
28313<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
28314<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28315finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28316ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28317<p>Some features are not part of any particular hardware level or capability and must be
28318queried separately.<wbr/> These include:</p>
28319<ul>
28320<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28321<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>
28322<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>
28323<li>Optical or electrical image stabilization
28324  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28325   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28326</ul>
28327            </td>
28328          </tr>
28329
28330          <tr class="entries_header">
28331            <th class="th_details" colspan="6">HAL Implementation Details</th>
28332          </tr>
28333          <tr class="entry_cont">
28334            <td class="entry_details" colspan="6">
28335              <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28336FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28337<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28338mode has hardware requirements roughly in line with those for a camera HAL device v1
28339implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28340superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28341<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28342<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28343the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28344implemented by the camera framework code.<wbr/></p>
28345<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28346on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28347The ITS test suite is exempted for the same reason.<wbr/></p>
28348            </td>
28349          </tr>
28350
28351          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28352           <!-- end of entry -->
28353
28354
28355          <tr class="entry" id="static_android.info.version">
28356            <td class="entry_name
28357             " rowspan="5">
28358              android.<wbr/>info.<wbr/>version
28359            </td>
28360            <td class="entry_type">
28361                <span class="entry_type_name">byte</span>
28362
28363              <span class="entry_type_visibility"> [public as string]</span>
28364
28365
28366
28367
28368
28369
28370            </td> <!-- entry_type -->
28371
28372            <td class="entry_description">
28373              <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28374ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28375            </td>
28376
28377            <td class="entry_units">
28378            </td>
28379
28380            <td class="entry_range">
28381            </td>
28382
28383            <td class="entry_hal_version">
28384              <p>3.<wbr/>3</p>
28385            </td>
28386
28387            <td class="entry_tags">
28388            </td>
28389
28390          </tr>
28391          <tr class="entries_header">
28392            <th class="th_details" colspan="6">Details</th>
28393          </tr>
28394          <tr class="entry_cont">
28395            <td class="entry_details" colspan="6">
28396              <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a>
28397in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28398device.<wbr/></p>
28399            </td>
28400          </tr>
28401
28402          <tr class="entries_header">
28403            <th class="th_details" colspan="6">HAL Implementation Details</th>
28404          </tr>
28405          <tr class="entry_cont">
28406            <td class="entry_details" colspan="6">
28407              <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28408whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28409It must not exceed 256 characters.<wbr/></p>
28410            </td>
28411          </tr>
28412
28413          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28414           <!-- end of entry -->
28415
28416
28417
28418      <!-- end of kind -->
28419      </tbody>
28420
28421  <!-- end of section -->
28422  <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28423
28424
28425      <tr><td colspan="7" class="kind">controls</td></tr>
28426
28427      <thead class="entries_header">
28428        <tr>
28429          <th class="th_name">Property Name</th>
28430          <th class="th_type">Type</th>
28431          <th class="th_description">Description</th>
28432          <th class="th_units">Units</th>
28433          <th class="th_range">Range</th>
28434          <th class="th_hal_version">Initial HIDL HAL version</th>
28435          <th class="th_tags">Tags</th>
28436        </tr>
28437      </thead>
28438
28439      <tbody>
28440
28441
28442
28443
28444
28445
28446
28447
28448
28449
28450          <tr class="entry" id="controls_android.blackLevel.lock">
28451            <td class="entry_name
28452             " rowspan="5">
28453              android.<wbr/>black<wbr/>Level.<wbr/>lock
28454            </td>
28455            <td class="entry_type">
28456                <span class="entry_type_name entry_type_name_enum">byte</span>
28457
28458              <span class="entry_type_visibility"> [public as boolean]</span>
28459
28460
28461              <span class="entry_type_hwlevel">[full] </span>
28462
28463
28464
28465                <ul class="entry_type_enum">
28466                  <li>
28467                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28468                  </li>
28469                  <li>
28470                    <span class="entry_type_enum_name">ON (v3.2)</span>
28471                  </li>
28472                </ul>
28473
28474            </td> <!-- entry_type -->
28475
28476            <td class="entry_description">
28477              <p>Whether black-level compensation is locked
28478to its current values,<wbr/> or is free to vary.<wbr/></p>
28479            </td>
28480
28481            <td class="entry_units">
28482            </td>
28483
28484            <td class="entry_range">
28485            </td>
28486
28487            <td class="entry_hal_version">
28488              <p>3.<wbr/>2</p>
28489            </td>
28490
28491            <td class="entry_tags">
28492              <ul class="entry_tags">
28493                  <li><a href="#tag_HAL2">HAL2</a></li>
28494              </ul>
28495            </td>
28496
28497          </tr>
28498          <tr class="entries_header">
28499            <th class="th_details" colspan="6">Details</th>
28500          </tr>
28501          <tr class="entry_cont">
28502            <td class="entry_details" colspan="6">
28503              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28504compensation will not change until the lock is set to
28505<code>false</code> (OFF).<wbr/></p>
28506<p>Since changes to certain capture parameters (such as
28507exposure time) may require resetting of black level
28508compensation,<wbr/> the camera device must report whether setting
28509the black level lock was successful in the output result
28510metadata.<wbr/></p>
28511<p>For example,<wbr/> if a sequence of requests is as follows:</p>
28512<ul>
28513<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28514<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28515<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28516<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28517<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28518<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28519</ul>
28520<p>And the exposure change in Request 4 requires the camera
28521device to reset the black level offsets,<wbr/> then the output
28522result metadata is expected to be:</p>
28523<ul>
28524<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28525<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28526<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28527<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28528<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28529<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28530</ul>
28531<p>This indicates to the application that on frame 4,<wbr/> black
28532levels were reset due to exposure value changes,<wbr/> and pixel
28533values may not be consistent across captures.<wbr/></p>
28534<p>The camera device will maintain the lock to the extent
28535possible,<wbr/> only overriding the lock to OFF when changes to
28536other request parameters require a black level recalculation
28537or reset.<wbr/></p>
28538            </td>
28539          </tr>
28540
28541          <tr class="entries_header">
28542            <th class="th_details" colspan="6">HAL Implementation Details</th>
28543          </tr>
28544          <tr class="entry_cont">
28545            <td class="entry_details" colspan="6">
28546              <p>If for some reason black level locking is no longer possible
28547(for example,<wbr/> the analog gain has changed,<wbr/> which forces
28548black level offsets to be recalculated),<wbr/> then the HAL must
28549override this request (and it must report 'OFF' when this
28550does happen) until the next capture for which locking is
28551possible again.<wbr/></p>
28552            </td>
28553          </tr>
28554
28555          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28556           <!-- end of entry -->
28557
28558
28559
28560      <!-- end of kind -->
28561      </tbody>
28562      <tr><td colspan="7" class="kind">dynamic</td></tr>
28563
28564      <thead class="entries_header">
28565        <tr>
28566          <th class="th_name">Property Name</th>
28567          <th class="th_type">Type</th>
28568          <th class="th_description">Description</th>
28569          <th class="th_units">Units</th>
28570          <th class="th_range">Range</th>
28571          <th class="th_hal_version">Initial HIDL HAL version</th>
28572          <th class="th_tags">Tags</th>
28573        </tr>
28574      </thead>
28575
28576      <tbody>
28577
28578
28579
28580
28581
28582
28583
28584
28585
28586
28587          <tr class="entry" id="dynamic_android.blackLevel.lock">
28588            <td class="entry_name
28589             " rowspan="5">
28590              android.<wbr/>black<wbr/>Level.<wbr/>lock
28591            </td>
28592            <td class="entry_type">
28593                <span class="entry_type_name entry_type_name_enum">byte</span>
28594
28595              <span class="entry_type_visibility"> [public as boolean]</span>
28596
28597
28598              <span class="entry_type_hwlevel">[full] </span>
28599
28600
28601
28602                <ul class="entry_type_enum">
28603                  <li>
28604                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28605                  </li>
28606                  <li>
28607                    <span class="entry_type_enum_name">ON (v3.2)</span>
28608                  </li>
28609                </ul>
28610
28611            </td> <!-- entry_type -->
28612
28613            <td class="entry_description">
28614              <p>Whether black-level compensation is locked
28615to its current values,<wbr/> or is free to vary.<wbr/></p>
28616            </td>
28617
28618            <td class="entry_units">
28619            </td>
28620
28621            <td class="entry_range">
28622            </td>
28623
28624            <td class="entry_hal_version">
28625              <p>3.<wbr/>2</p>
28626            </td>
28627
28628            <td class="entry_tags">
28629              <ul class="entry_tags">
28630                  <li><a href="#tag_HAL2">HAL2</a></li>
28631              </ul>
28632            </td>
28633
28634          </tr>
28635          <tr class="entries_header">
28636            <th class="th_details" colspan="6">Details</th>
28637          </tr>
28638          <tr class="entry_cont">
28639            <td class="entry_details" colspan="6">
28640              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28641ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28642a change in other capture settings forced the camera device to
28643perform a black level reset.<wbr/></p>
28644            </td>
28645          </tr>
28646
28647          <tr class="entries_header">
28648            <th class="th_details" colspan="6">HAL Implementation Details</th>
28649          </tr>
28650          <tr class="entry_cont">
28651            <td class="entry_details" colspan="6">
28652              <p>If for some reason black level locking is no longer possible
28653(for example,<wbr/> the analog gain has changed,<wbr/> which forces
28654black level offsets to be recalculated),<wbr/> then the HAL must
28655override this request (and it must report 'OFF' when this
28656does happen) until the next capture for which locking is
28657possible again.<wbr/></p>
28658            </td>
28659          </tr>
28660
28661          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28662           <!-- end of entry -->
28663
28664
28665
28666      <!-- end of kind -->
28667      </tbody>
28668
28669  <!-- end of section -->
28670  <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28671
28672
28673      <tr><td colspan="7" class="kind">dynamic</td></tr>
28674
28675      <thead class="entries_header">
28676        <tr>
28677          <th class="th_name">Property Name</th>
28678          <th class="th_type">Type</th>
28679          <th class="th_description">Description</th>
28680          <th class="th_units">Units</th>
28681          <th class="th_range">Range</th>
28682          <th class="th_hal_version">Initial HIDL HAL version</th>
28683          <th class="th_tags">Tags</th>
28684        </tr>
28685      </thead>
28686
28687      <tbody>
28688
28689
28690
28691
28692
28693
28694
28695
28696
28697
28698          <tr class="entry" id="dynamic_android.sync.frameNumber">
28699            <td class="entry_name
28700             " rowspan="5">
28701              android.<wbr/>sync.<wbr/>frame<wbr/>Number
28702            </td>
28703            <td class="entry_type">
28704                <span class="entry_type_name entry_type_name_enum">int64</span>
28705
28706              <span class="entry_type_visibility"> [ndk_public]</span>
28707
28708
28709              <span class="entry_type_hwlevel">[legacy] </span>
28710
28711
28712
28713                <ul class="entry_type_enum">
28714                  <li>
28715                    <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28716                    <span class="entry_type_enum_value">-1</span>
28717                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28718<p>Synchronization is in progress,<wbr/> and reading metadata from this
28719result may include a mix of data that have taken effect since the
28720last synchronization time.<wbr/></p>
28721<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28722this value will update to the actual frame number frame number
28723the result is guaranteed to be synchronized to (as long as the
28724request settings remain constant).<wbr/></p></span>
28725                  </li>
28726                  <li>
28727                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28728                    <span class="entry_type_enum_value">-2</span>
28729                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28730<p>The result may have already converged,<wbr/> or it may be in
28731progress.<wbr/>  Reading from this result may include some mix
28732of settings from past requests.<wbr/></p>
28733<p>After a settings change,<wbr/> the new settings will eventually all
28734take effect for the output buffers and results.<wbr/> However,<wbr/> this
28735value will not change when that happens.<wbr/> Altering settings
28736rapidly may provide outcomes using mixes of settings from recent
28737requests.<wbr/></p>
28738<p>This value is intended primarily for backwards compatibility with
28739the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28740                  </li>
28741                </ul>
28742
28743            </td> <!-- entry_type -->
28744
28745            <td class="entry_description">
28746              <p>The frame number corresponding to the last request
28747with which the output result (metadata + buffers) has been fully
28748synchronized.<wbr/></p>
28749            </td>
28750
28751            <td class="entry_units">
28752            </td>
28753
28754            <td class="entry_range">
28755              <p>Either a non-negative value corresponding to a
28756<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28757            </td>
28758
28759            <td class="entry_hal_version">
28760              <p>3.<wbr/>2</p>
28761            </td>
28762
28763            <td class="entry_tags">
28764              <ul class="entry_tags">
28765                  <li><a href="#tag_V1">V1</a></li>
28766              </ul>
28767            </td>
28768
28769          </tr>
28770          <tr class="entries_header">
28771            <th class="th_details" colspan="6">Details</th>
28772          </tr>
28773          <tr class="entry_cont">
28774            <td class="entry_details" colspan="6">
28775              <p>When a request is submitted to the camera device,<wbr/> there is usually a
28776delay of several frames before the controls get applied.<wbr/> A camera
28777device may either choose to account for this delay by implementing a
28778pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28779it may start streaming control changes that span over several frame
28780boundaries.<wbr/></p>
28781<p>In the latter case,<wbr/> whenever a request's settings change relative to
28782the previous submitted request,<wbr/> the full set of changes may take
28783multiple frame durations to fully take effect.<wbr/> Some settings may
28784take effect sooner (in less frame durations) than others.<wbr/></p>
28785<p>While a set of control changes are being propagated,<wbr/> this value
28786will be CONVERGING.<wbr/></p>
28787<p>Once it is fully known that a set of control changes have been
28788finished propagating,<wbr/> and the resulting updated control settings
28789have been read back by the camera device,<wbr/> this value will be set
28790to a non-negative frame number (corresponding to the request to
28791which the results have synchronized to).<wbr/></p>
28792<p>Older camera device implementations may not have a way to detect
28793when all camera controls have been applied,<wbr/> and will always set this
28794value to UNKNOWN.<wbr/></p>
28795<p>FULL capability devices will always have this value set to the
28796frame number of the request corresponding to this result.<wbr/></p>
28797<p><em>Further details</em>:</p>
28798<ul>
28799<li>Whenever a request differs from the last request,<wbr/> any future
28800results not yet returned may have this value set to CONVERGING (this
28801could include any in-progress captures not yet returned by the camera
28802device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28803<li>Submitting a series of multiple requests that differ from the
28804previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28805moves the new synchronization frame to the last non-repeating
28806request (using the smallest frame number from the contiguous list of
28807repeating requests).<wbr/></li>
28808<li>Submitting the same request repeatedly will not change this value
28809to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28810<li>When this value changes to non-negative,<wbr/> that means that all of the
28811metadata controls from the request have been applied,<wbr/> all of the
28812metadata controls from the camera device have been read to the
28813updated values (into the result),<wbr/> and all of the graphics buffers
28814corresponding to this result are also synchronized to the request.<wbr/></li>
28815</ul>
28816<p><em>Pipeline considerations</em>:</p>
28817<p>Submitting a request with updated controls relative to the previously
28818submitted requests may also invalidate the synchronization state
28819of all the results corresponding to currently in-flight requests.<wbr/></p>
28820<p>In other words,<wbr/> results for this current request and up to
28821<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28822<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28823            </td>
28824          </tr>
28825
28826          <tr class="entries_header">
28827            <th class="th_details" colspan="6">HAL Implementation Details</th>
28828          </tr>
28829          <tr class="entry_cont">
28830            <td class="entry_details" colspan="6">
28831              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28832is also UNKNOWN.<wbr/></p>
28833<p>FULL capability devices should simply set this value to the
28834<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28835            </td>
28836          </tr>
28837
28838          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28839           <!-- end of entry -->
28840
28841
28842
28843      <!-- end of kind -->
28844      </tbody>
28845      <tr><td colspan="7" class="kind">static</td></tr>
28846
28847      <thead class="entries_header">
28848        <tr>
28849          <th class="th_name">Property Name</th>
28850          <th class="th_type">Type</th>
28851          <th class="th_description">Description</th>
28852          <th class="th_units">Units</th>
28853          <th class="th_range">Range</th>
28854          <th class="th_hal_version">Initial HIDL HAL version</th>
28855          <th class="th_tags">Tags</th>
28856        </tr>
28857      </thead>
28858
28859      <tbody>
28860
28861
28862
28863
28864
28865
28866
28867
28868
28869
28870          <tr class="entry" id="static_android.sync.maxLatency">
28871            <td class="entry_name
28872             " rowspan="5">
28873              android.<wbr/>sync.<wbr/>max<wbr/>Latency
28874            </td>
28875            <td class="entry_type">
28876                <span class="entry_type_name entry_type_name_enum">int32</span>
28877
28878              <span class="entry_type_visibility"> [public]</span>
28879
28880
28881              <span class="entry_type_hwlevel">[legacy] </span>
28882
28883
28884
28885                <ul class="entry_type_enum">
28886                  <li>
28887                    <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28888                    <span class="entry_type_enum_value">0</span>
28889                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28890<p>Changing controls over multiple requests one after another will
28891produce results that have those controls applied atomically
28892each frame.<wbr/></p>
28893<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28894                  </li>
28895                  <li>
28896                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28897                    <span class="entry_type_enum_value">-1</span>
28898                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28899of the past requests applied to the camera settings.<wbr/></p>
28900<p>By submitting a series of identical requests,<wbr/> the camera device
28901will eventually have the camera settings applied,<wbr/> but it is
28902unknown when that exact point will be.<wbr/></p>
28903<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28904                  </li>
28905                </ul>
28906
28907            </td> <!-- entry_type -->
28908
28909            <td class="entry_description">
28910              <p>The maximum number of frames that can occur after a request
28911(different than the previous) has been submitted,<wbr/> and before the
28912result's state becomes synchronized.<wbr/></p>
28913            </td>
28914
28915            <td class="entry_units">
28916              Frame counts
28917            </td>
28918
28919            <td class="entry_range">
28920              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28921            </td>
28922
28923            <td class="entry_hal_version">
28924              <p>3.<wbr/>2</p>
28925            </td>
28926
28927            <td class="entry_tags">
28928              <ul class="entry_tags">
28929                  <li><a href="#tag_V1">V1</a></li>
28930              </ul>
28931            </td>
28932
28933          </tr>
28934          <tr class="entries_header">
28935            <th class="th_details" colspan="6">Details</th>
28936          </tr>
28937          <tr class="entry_cont">
28938            <td class="entry_details" colspan="6">
28939              <p>This defines the maximum distance (in number of metadata results),<wbr/>
28940between the frame number of the request that has new controls to apply
28941and the frame number of the result that has all the controls applied.<wbr/></p>
28942<p>In other words this acts as an upper boundary for how many frames
28943must occur before the camera device knows for a fact that the new
28944submitted camera settings have been applied in outgoing frames.<wbr/></p>
28945            </td>
28946          </tr>
28947
28948          <tr class="entries_header">
28949            <th class="th_details" colspan="6">HAL Implementation Details</th>
28950          </tr>
28951          <tr class="entry_cont">
28952            <td class="entry_details" colspan="6">
28953              <p>For example if maxLatency was 2,<wbr/></p>
28954<pre><code>initial request = X (repeating)
28955request1 = X
28956request2 = Y
28957request3 = Y
28958request4 = Y
28959
28960where requestN has frameNumber N,<wbr/> and the first of the repeating
28961initial request's has frameNumber F (and F &lt; 1).<wbr/>
28962
28963initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28964result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28965result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28966result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28967result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28968
28969where resultN has frameNumber N.<wbr/>
28970</code></pre>
28971<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28972<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28973<code>4 - 2 = 2</code>.<wbr/></p>
28974<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28975<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28976<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28977<p>LIMITED devices are strongly encouraged to use a non-negative
28978value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28979to know when sensor settings have been applied.<wbr/></p>
28980            </td>
28981          </tr>
28982
28983          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28984           <!-- end of entry -->
28985
28986
28987
28988      <!-- end of kind -->
28989      </tbody>
28990
28991  <!-- end of section -->
28992  <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28993
28994
28995      <tr><td colspan="7" class="kind">controls</td></tr>
28996
28997      <thead class="entries_header">
28998        <tr>
28999          <th class="th_name">Property Name</th>
29000          <th class="th_type">Type</th>
29001          <th class="th_description">Description</th>
29002          <th class="th_units">Units</th>
29003          <th class="th_range">Range</th>
29004          <th class="th_hal_version">Initial HIDL HAL version</th>
29005          <th class="th_tags">Tags</th>
29006        </tr>
29007      </thead>
29008
29009      <tbody>
29010
29011
29012
29013
29014
29015
29016
29017
29018
29019
29020          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
29021            <td class="entry_name
29022             " rowspan="3">
29023              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29024            </td>
29025            <td class="entry_type">
29026                <span class="entry_type_name">float</span>
29027
29028              <span class="entry_type_visibility"> [java_public]</span>
29029
29030
29031              <span class="entry_type_hwlevel">[limited] </span>
29032
29033
29034
29035
29036            </td> <!-- entry_type -->
29037
29038            <td class="entry_description">
29039              <p>The amount of exposure time increase factor applied to the original output
29040frame by the application processing before sending for reprocessing.<wbr/></p>
29041            </td>
29042
29043            <td class="entry_units">
29044              Relative exposure time increase factor.<wbr/>
29045            </td>
29046
29047            <td class="entry_range">
29048              <p>&gt;= 1.<wbr/>0</p>
29049            </td>
29050
29051            <td class="entry_hal_version">
29052              <p>3.<wbr/>2</p>
29053            </td>
29054
29055            <td class="entry_tags">
29056              <ul class="entry_tags">
29057                  <li><a href="#tag_REPROC">REPROC</a></li>
29058              </ul>
29059            </td>
29060
29061          </tr>
29062          <tr class="entries_header">
29063            <th class="th_details" colspan="6">Details</th>
29064          </tr>
29065          <tr class="entry_cont">
29066            <td class="entry_details" colspan="6">
29067              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29068capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29069<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29070output frames to effectively reduce the noise to the same level as a frame that was
29071captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29072images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29073the camera device is that the amount of noise in the image would be approximately what
29074would be expected if the original capture parameters had been a sensitivity of
29075S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29076than S and T respectively.<wbr/> If the captured images were processed by the application
29077before being sent for reprocessing,<wbr/> then the application may have used image processing
29078algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29079application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29080control,<wbr/> the application can communicate to the camera device the actual noise level
29081improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29082device can select appropriate noise reduction and edge enhancement parameters to avoid
29083excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29084enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29085<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29086multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29087fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29088square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29089adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29090produce the best quality images.<wbr/></p>
29091<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29092buffer in a way that affects its effective exposure time.<wbr/></p>
29093<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29094reduction 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/>
29095Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29096<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29097            </td>
29098          </tr>
29099
29100
29101          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29102           <!-- end of entry -->
29103
29104
29105
29106      <!-- end of kind -->
29107      </tbody>
29108      <tr><td colspan="7" class="kind">dynamic</td></tr>
29109
29110      <thead class="entries_header">
29111        <tr>
29112          <th class="th_name">Property Name</th>
29113          <th class="th_type">Type</th>
29114          <th class="th_description">Description</th>
29115          <th class="th_units">Units</th>
29116          <th class="th_range">Range</th>
29117          <th class="th_hal_version">Initial HIDL HAL version</th>
29118          <th class="th_tags">Tags</th>
29119        </tr>
29120      </thead>
29121
29122      <tbody>
29123
29124
29125
29126
29127
29128
29129
29130
29131
29132
29133          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29134            <td class="entry_name
29135             " rowspan="3">
29136              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29137            </td>
29138            <td class="entry_type">
29139                <span class="entry_type_name">float</span>
29140
29141              <span class="entry_type_visibility"> [java_public]</span>
29142
29143
29144              <span class="entry_type_hwlevel">[limited] </span>
29145
29146
29147
29148
29149            </td> <!-- entry_type -->
29150
29151            <td class="entry_description">
29152              <p>The amount of exposure time increase factor applied to the original output
29153frame by the application processing before sending for reprocessing.<wbr/></p>
29154            </td>
29155
29156            <td class="entry_units">
29157              Relative exposure time increase factor.<wbr/>
29158            </td>
29159
29160            <td class="entry_range">
29161              <p>&gt;= 1.<wbr/>0</p>
29162            </td>
29163
29164            <td class="entry_hal_version">
29165              <p>3.<wbr/>2</p>
29166            </td>
29167
29168            <td class="entry_tags">
29169              <ul class="entry_tags">
29170                  <li><a href="#tag_REPROC">REPROC</a></li>
29171              </ul>
29172            </td>
29173
29174          </tr>
29175          <tr class="entries_header">
29176            <th class="th_details" colspan="6">Details</th>
29177          </tr>
29178          <tr class="entry_cont">
29179            <td class="entry_details" colspan="6">
29180              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29181capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29182<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29183output frames to effectively reduce the noise to the same level as a frame that was
29184captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29185images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29186the camera device is that the amount of noise in the image would be approximately what
29187would be expected if the original capture parameters had been a sensitivity of
29188S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29189than S and T respectively.<wbr/> If the captured images were processed by the application
29190before being sent for reprocessing,<wbr/> then the application may have used image processing
29191algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29192application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29193control,<wbr/> the application can communicate to the camera device the actual noise level
29194improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29195device can select appropriate noise reduction and edge enhancement parameters to avoid
29196excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29197enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29198<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29199multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29200fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29201square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29202adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29203produce the best quality images.<wbr/></p>
29204<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29205buffer in a way that affects its effective exposure time.<wbr/></p>
29206<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29207reduction 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/>
29208Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29209<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29210            </td>
29211          </tr>
29212
29213
29214          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29215           <!-- end of entry -->
29216
29217
29218
29219      <!-- end of kind -->
29220      </tbody>
29221      <tr><td colspan="7" class="kind">static</td></tr>
29222
29223      <thead class="entries_header">
29224        <tr>
29225          <th class="th_name">Property Name</th>
29226          <th class="th_type">Type</th>
29227          <th class="th_description">Description</th>
29228          <th class="th_units">Units</th>
29229          <th class="th_range">Range</th>
29230          <th class="th_hal_version">Initial HIDL HAL version</th>
29231          <th class="th_tags">Tags</th>
29232        </tr>
29233      </thead>
29234
29235      <tbody>
29236
29237
29238
29239
29240
29241
29242
29243
29244
29245
29246          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29247            <td class="entry_name
29248             " rowspan="3">
29249              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29250            </td>
29251            <td class="entry_type">
29252                <span class="entry_type_name">int32</span>
29253
29254              <span class="entry_type_visibility"> [java_public]</span>
29255
29256
29257              <span class="entry_type_hwlevel">[limited] </span>
29258
29259
29260
29261
29262            </td> <!-- entry_type -->
29263
29264            <td class="entry_description">
29265              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29266reprocess capture request.<wbr/></p>
29267            </td>
29268
29269            <td class="entry_units">
29270              Number of frames.<wbr/>
29271            </td>
29272
29273            <td class="entry_range">
29274              <p>&lt;= 4</p>
29275            </td>
29276
29277            <td class="entry_hal_version">
29278              <p>3.<wbr/>2</p>
29279            </td>
29280
29281            <td class="entry_tags">
29282              <ul class="entry_tags">
29283                  <li><a href="#tag_REPROC">REPROC</a></li>
29284              </ul>
29285            </td>
29286
29287          </tr>
29288          <tr class="entries_header">
29289            <th class="th_details" colspan="6">Details</th>
29290          </tr>
29291          <tr class="entry_cont">
29292            <td class="entry_details" colspan="6">
29293              <p>The key describes the maximal interference that one reprocess (input) request
29294can introduce to the camera simultaneous streaming of regular (output) capture
29295requests,<wbr/> including repeating requests.<wbr/></p>
29296<p>When a reprocessing capture request is submitted while a camera output repeating request
29297(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29298pipeline for at least one frame duration so that the camera device is unable to process
29299the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29300When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29301duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29302glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29303the worst-case number of frame stall introduced by one reprocess request with any kind of
29304formats/<wbr/>sizes combination.<wbr/></p>
29305<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29306ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29307<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29308i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29309YUV_<wbr/>REPROCESSING).<wbr/></p>
29310            </td>
29311          </tr>
29312
29313
29314          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29315           <!-- end of entry -->
29316
29317
29318
29319      <!-- end of kind -->
29320      </tbody>
29321
29322  <!-- end of section -->
29323  <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29324
29325
29326      <tr><td colspan="7" class="kind">static</td></tr>
29327
29328      <thead class="entries_header">
29329        <tr>
29330          <th class="th_name">Property Name</th>
29331          <th class="th_type">Type</th>
29332          <th class="th_description">Description</th>
29333          <th class="th_units">Units</th>
29334          <th class="th_range">Range</th>
29335          <th class="th_hal_version">Initial HIDL HAL version</th>
29336          <th class="th_tags">Tags</th>
29337        </tr>
29338      </thead>
29339
29340      <tbody>
29341
29342
29343
29344
29345
29346
29347
29348
29349
29350
29351          <tr class="entry" id="static_android.depth.maxDepthSamples">
29352            <td class="entry_name
29353             " rowspan="3">
29354              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29355            </td>
29356            <td class="entry_type">
29357                <span class="entry_type_name">int32</span>
29358
29359              <span class="entry_type_visibility"> [system]</span>
29360
29361
29362              <span class="entry_type_hwlevel">[limited] </span>
29363
29364
29365
29366
29367            </td> <!-- entry_type -->
29368
29369            <td class="entry_description">
29370              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29371            </td>
29372
29373            <td class="entry_units">
29374            </td>
29375
29376            <td class="entry_range">
29377            </td>
29378
29379            <td class="entry_hal_version">
29380              <p>3.<wbr/>2</p>
29381            </td>
29382
29383            <td class="entry_tags">
29384              <ul class="entry_tags">
29385                  <li><a href="#tag_DEPTH">DEPTH</a></li>
29386              </ul>
29387            </td>
29388
29389          </tr>
29390          <tr class="entries_header">
29391            <th class="th_details" colspan="6">Details</th>
29392          </tr>
29393          <tr class="entry_cont">
29394            <td class="entry_details" colspan="6">
29395              <p>If a camera device supports outputting depth range data in the form of a depth point
29396cloud (<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
29397number of points an output buffer may contain.<wbr/></p>
29398<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29399If output in the depth point cloud format is not supported,<wbr/> this entry will
29400not be defined.<wbr/></p>
29401            </td>
29402          </tr>
29403
29404
29405          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29406           <!-- end of entry -->
29407
29408
29409          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29410            <td class="entry_name
29411             " rowspan="3">
29412              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29413            </td>
29414            <td class="entry_type">
29415                <span class="entry_type_name entry_type_name_enum">int32</span>
29416                <span class="entry_type_container">x</span>
29417
29418                <span class="entry_type_array">
29419                  n x 4
29420                </span>
29421              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29422
29423
29424              <span class="entry_type_hwlevel">[limited] </span>
29425
29426
29427
29428                <ul class="entry_type_enum">
29429                  <li>
29430                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29431                  </li>
29432                  <li>
29433                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
29434                  </li>
29435                </ul>
29436
29437            </td> <!-- entry_type -->
29438
29439            <td class="entry_description">
29440              <p>The available depth dataspace stream
29441configurations that this camera device supports
29442(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29443            </td>
29444
29445            <td class="entry_units">
29446            </td>
29447
29448            <td class="entry_range">
29449            </td>
29450
29451            <td class="entry_hal_version">
29452              <p>3.<wbr/>2</p>
29453            </td>
29454
29455            <td class="entry_tags">
29456              <ul class="entry_tags">
29457                  <li><a href="#tag_DEPTH">DEPTH</a></li>
29458              </ul>
29459            </td>
29460
29461          </tr>
29462          <tr class="entries_header">
29463            <th class="th_details" colspan="6">Details</th>
29464          </tr>
29465          <tr class="entry_cont">
29466            <td class="entry_details" colspan="6">
29467              <p>These are output stream configurations for use with
29468dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29469listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29470<p>Only devices that support depth output for at least
29471the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29472this entry.<wbr/></p>
29473<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29474sparse depth point cloud must report a single entry for
29475the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29476<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29477the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29478            </td>
29479          </tr>
29480
29481
29482          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29483           <!-- end of entry -->
29484
29485
29486          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29487            <td class="entry_name
29488             " rowspan="3">
29489              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29490            </td>
29491            <td class="entry_type">
29492                <span class="entry_type_name">int64</span>
29493                <span class="entry_type_container">x</span>
29494
29495                <span class="entry_type_array">
29496                  4 x n
29497                </span>
29498              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29499
29500
29501              <span class="entry_type_hwlevel">[limited] </span>
29502
29503
29504
29505
29506            </td> <!-- entry_type -->
29507
29508            <td class="entry_description">
29509              <p>This lists the minimum frame duration for each
29510format/<wbr/>size combination for depth output formats.<wbr/></p>
29511            </td>
29512
29513            <td class="entry_units">
29514              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29515            </td>
29516
29517            <td class="entry_range">
29518            </td>
29519
29520            <td class="entry_hal_version">
29521              <p>3.<wbr/>2</p>
29522            </td>
29523
29524            <td class="entry_tags">
29525              <ul class="entry_tags">
29526                  <li><a href="#tag_DEPTH">DEPTH</a></li>
29527              </ul>
29528            </td>
29529
29530          </tr>
29531          <tr class="entries_header">
29532            <th class="th_details" colspan="6">Details</th>
29533          </tr>
29534          <tr class="entry_cont">
29535            <td class="entry_details" colspan="6">
29536              <p>This should correspond to the frame duration when only that
29537stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29538set to either OFF or FAST.<wbr/></p>
29539<p>When multiple streams are used in a request,<wbr/> the minimum frame
29540duration will be max(individual stream min durations).<wbr/></p>
29541<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29542is the same regardless of whether the stream is input or output.<wbr/></p>
29543<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29544<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29545calculating the max frame rate.<wbr/></p>
29546            </td>
29547          </tr>
29548
29549
29550          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29551           <!-- end of entry -->
29552
29553
29554          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29555            <td class="entry_name
29556             " rowspan="3">
29557              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29558            </td>
29559            <td class="entry_type">
29560                <span class="entry_type_name">int64</span>
29561                <span class="entry_type_container">x</span>
29562
29563                <span class="entry_type_array">
29564                  4 x n
29565                </span>
29566              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29567
29568
29569              <span class="entry_type_hwlevel">[limited] </span>
29570
29571
29572
29573
29574            </td> <!-- entry_type -->
29575
29576            <td class="entry_description">
29577              <p>This lists the maximum stall duration for each
29578output format/<wbr/>size combination for depth streams.<wbr/></p>
29579            </td>
29580
29581            <td class="entry_units">
29582              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29583            </td>
29584
29585            <td class="entry_range">
29586            </td>
29587
29588            <td class="entry_hal_version">
29589              <p>3.<wbr/>2</p>
29590            </td>
29591
29592            <td class="entry_tags">
29593              <ul class="entry_tags">
29594                  <li><a href="#tag_DEPTH">DEPTH</a></li>
29595              </ul>
29596            </td>
29597
29598          </tr>
29599          <tr class="entries_header">
29600            <th class="th_details" colspan="6">Details</th>
29601          </tr>
29602          <tr class="entry_cont">
29603            <td class="entry_details" colspan="6">
29604              <p>A stall duration is how much extra time would get added
29605to the normal minimum frame duration for a repeating request
29606that has streams with non-zero stall.<wbr/></p>
29607<p>This functions similarly to
29608<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29609streams.<wbr/></p>
29610<p>All depth output stream formats may have a nonzero stall
29611duration.<wbr/></p>
29612            </td>
29613          </tr>
29614
29615
29616          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29617           <!-- end of entry -->
29618
29619
29620          <tr class="entry" id="static_android.depth.depthIsExclusive">
29621            <td class="entry_name
29622             " rowspan="3">
29623              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29624            </td>
29625            <td class="entry_type">
29626                <span class="entry_type_name entry_type_name_enum">byte</span>
29627
29628              <span class="entry_type_visibility"> [public as boolean]</span>
29629
29630
29631              <span class="entry_type_hwlevel">[limited] </span>
29632
29633
29634
29635                <ul class="entry_type_enum">
29636                  <li>
29637                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
29638                  </li>
29639                  <li>
29640                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
29641                  </li>
29642                </ul>
29643
29644            </td> <!-- entry_type -->
29645
29646            <td class="entry_description">
29647              <p>Indicates whether a capture request may target both a
29648DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29649YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29650            </td>
29651
29652            <td class="entry_units">
29653            </td>
29654
29655            <td class="entry_range">
29656            </td>
29657
29658            <td class="entry_hal_version">
29659              <p>3.<wbr/>2</p>
29660            </td>
29661
29662            <td class="entry_tags">
29663            </td>
29664
29665          </tr>
29666          <tr class="entries_header">
29667            <th class="th_details" colspan="6">Details</th>
29668          </tr>
29669          <tr class="entry_cont">
29670            <td class="entry_details" colspan="6">
29671              <p>If TRUE,<wbr/> including both depth and color outputs in a single
29672capture request is not supported.<wbr/> An application must interleave color
29673and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29674of output.<wbr/></p>
29675<p>Typically,<wbr/> this restriction exists on camera devices that
29676need to emit a specific pattern or wavelength of light to
29677measure depth values,<wbr/> which causes the color image to be
29678corrupted during depth measurement.<wbr/></p>
29679            </td>
29680          </tr>
29681
29682
29683          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29684           <!-- end of entry -->
29685
29686
29687
29688      <!-- end of kind -->
29689      </tbody>
29690
29691  <!-- end of section -->
29692  <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29693
29694
29695      <tr><td colspan="7" class="kind">static</td></tr>
29696
29697      <thead class="entries_header">
29698        <tr>
29699          <th class="th_name">Property Name</th>
29700          <th class="th_type">Type</th>
29701          <th class="th_description">Description</th>
29702          <th class="th_units">Units</th>
29703          <th class="th_range">Range</th>
29704          <th class="th_hal_version">Initial HIDL HAL version</th>
29705          <th class="th_tags">Tags</th>
29706        </tr>
29707      </thead>
29708
29709      <tbody>
29710
29711
29712
29713
29714
29715
29716
29717
29718
29719
29720          <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29721            <td class="entry_name
29722             " rowspan="3">
29723              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29724            </td>
29725            <td class="entry_type">
29726                <span class="entry_type_name">byte</span>
29727                <span class="entry_type_container">x</span>
29728
29729                <span class="entry_type_array">
29730                  n
29731                </span>
29732              <span class="entry_type_visibility"> [hidden]</span>
29733
29734
29735              <span class="entry_type_hwlevel">[limited] </span>
29736
29737
29738
29739
29740            </td> <!-- entry_type -->
29741
29742            <td class="entry_description">
29743              <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29744            </td>
29745
29746            <td class="entry_units">
29747              UTF-8 null-terminated string
29748            </td>
29749
29750            <td class="entry_range">
29751            </td>
29752
29753            <td class="entry_hal_version">
29754              <p>3.<wbr/>3</p>
29755            </td>
29756
29757            <td class="entry_tags">
29758              <ul class="entry_tags">
29759                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29760              </ul>
29761            </td>
29762
29763          </tr>
29764          <tr class="entries_header">
29765            <th class="th_details" colspan="6">Details</th>
29766          </tr>
29767          <tr class="entry_cont">
29768            <td class="entry_details" colspan="6">
29769              <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29770The null terminator for physical camera id must be preserved so that the whole string
29771can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29772<p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29773value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29774<p>The number of physical camera ids must be no less than 2.<wbr/></p>
29775            </td>
29776          </tr>
29777
29778
29779          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29780           <!-- end of entry -->
29781
29782
29783          <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29784            <td class="entry_name
29785             " rowspan="3">
29786              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29787            </td>
29788            <td class="entry_type">
29789                <span class="entry_type_name entry_type_name_enum">byte</span>
29790
29791              <span class="entry_type_visibility"> [public]</span>
29792
29793
29794              <span class="entry_type_hwlevel">[limited] </span>
29795
29796
29797
29798                <ul class="entry_type_enum">
29799                  <li>
29800                    <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29801                    <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29802the timestamp of an image from a physical stream is only an approximation of the
29803image sensor start-of-exposure time.<wbr/></p></span>
29804                  </li>
29805                  <li>
29806                    <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29807                    <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29808and the timestamp of a physical stream image accurately reflects its
29809start-of-exposure time.<wbr/></p></span>
29810                  </li>
29811                </ul>
29812
29813            </td> <!-- entry_type -->
29814
29815            <td class="entry_description">
29816              <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29817            </td>
29818
29819            <td class="entry_units">
29820            </td>
29821
29822            <td class="entry_range">
29823            </td>
29824
29825            <td class="entry_hal_version">
29826              <p>3.<wbr/>3</p>
29827            </td>
29828
29829            <td class="entry_tags">
29830              <ul class="entry_tags">
29831                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29832              </ul>
29833            </td>
29834
29835          </tr>
29836          <tr class="entries_header">
29837            <th class="th_details" colspan="6">Details</th>
29838          </tr>
29839          <tr class="entry_cont">
29840            <td class="entry_details" colspan="6">
29841              <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29842ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29843the physical camera sensors usually run in master-slave mode so that their shutter
29844time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29845master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29846<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29847timestamps,<wbr/> so that they can be used to look up the matching frame number and
29848onCaptureStarted callback.<wbr/></p>
29849            </td>
29850          </tr>
29851
29852
29853          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29854           <!-- end of entry -->
29855
29856
29857
29858      <!-- end of kind -->
29859      </tbody>
29860
29861  <!-- end of section -->
29862  <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29863
29864
29865      <tr><td colspan="7" class="kind">controls</td></tr>
29866
29867      <thead class="entries_header">
29868        <tr>
29869          <th class="th_name">Property Name</th>
29870          <th class="th_type">Type</th>
29871          <th class="th_description">Description</th>
29872          <th class="th_units">Units</th>
29873          <th class="th_range">Range</th>
29874          <th class="th_hal_version">Initial HIDL HAL version</th>
29875          <th class="th_tags">Tags</th>
29876        </tr>
29877      </thead>
29878
29879      <tbody>
29880
29881
29882
29883
29884
29885
29886
29887
29888
29889
29890          <tr class="entry" id="controls_android.distortionCorrection.mode">
29891            <td class="entry_name
29892             " rowspan="3">
29893              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29894            </td>
29895            <td class="entry_type">
29896                <span class="entry_type_name entry_type_name_enum">byte</span>
29897
29898              <span class="entry_type_visibility"> [public]</span>
29899
29900
29901
29902
29903
29904                <ul class="entry_type_enum">
29905                  <li>
29906                    <span class="entry_type_enum_name">OFF (v3.3)</span>
29907                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29908                  </li>
29909                  <li>
29910                    <span class="entry_type_enum_name">FAST (v3.3)</span>
29911                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29912relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29913reduce frame rate relative to sensor.<wbr/></p></span>
29914                  </li>
29915                  <li>
29916                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29917                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29918possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29919                  </li>
29920                </ul>
29921
29922            </td> <!-- entry_type -->
29923
29924            <td class="entry_description">
29925              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29926            </td>
29927
29928            <td class="entry_units">
29929            </td>
29930
29931            <td class="entry_range">
29932              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29933            </td>
29934
29935            <td class="entry_hal_version">
29936              <p>3.<wbr/>3</p>
29937            </td>
29938
29939            <td class="entry_tags">
29940            </td>
29941
29942          </tr>
29943          <tr class="entries_header">
29944            <th class="th_details" colspan="6">Details</th>
29945          </tr>
29946          <tr class="entry_cont">
29947            <td class="entry_details" colspan="6">
29948              <p>The lens distortion correction block attempts to improve image quality by fixing
29949radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
29950available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29951<p>OFF means no distortion correction is done.<wbr/></p>
29952<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29953applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29954correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29955will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29956any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
29957similar amount of enhancement applied.<wbr/></p>
29958<p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29959applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
29960regions are also not affected by correction.<wbr/></p>
29961<p>Applications enabling distortion correction need to pay extra attention when converting
29962image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29963the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29964model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29965calculate the tap position on the sensor active array to be used with
29966<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
29967they need to be drawn on top of the corrected output buffers.<wbr/></p>
29968            </td>
29969          </tr>
29970
29971
29972          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29973           <!-- end of entry -->
29974
29975
29976
29977      <!-- end of kind -->
29978      </tbody>
29979      <tr><td colspan="7" class="kind">static</td></tr>
29980
29981      <thead class="entries_header">
29982        <tr>
29983          <th class="th_name">Property Name</th>
29984          <th class="th_type">Type</th>
29985          <th class="th_description">Description</th>
29986          <th class="th_units">Units</th>
29987          <th class="th_range">Range</th>
29988          <th class="th_hal_version">Initial HIDL HAL version</th>
29989          <th class="th_tags">Tags</th>
29990        </tr>
29991      </thead>
29992
29993      <tbody>
29994
29995
29996
29997
29998
29999
30000
30001
30002
30003
30004          <tr class="entry" id="static_android.distortionCorrection.availableModes">
30005            <td class="entry_name
30006             " rowspan="5">
30007              android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
30008            </td>
30009            <td class="entry_type">
30010                <span class="entry_type_name">byte</span>
30011                <span class="entry_type_container">x</span>
30012
30013                <span class="entry_type_array">
30014                  n
30015                </span>
30016              <span class="entry_type_visibility"> [public as enumList]</span>
30017
30018
30019
30020
30021                <div class="entry_type_notes">list of enums</div>
30022
30023
30024            </td> <!-- entry_type -->
30025
30026            <td class="entry_description">
30027              <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
30028supported by this camera device.<wbr/></p>
30029            </td>
30030
30031            <td class="entry_units">
30032            </td>
30033
30034            <td class="entry_range">
30035              <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
30036            </td>
30037
30038            <td class="entry_hal_version">
30039              <p>3.<wbr/>3</p>
30040            </td>
30041
30042            <td class="entry_tags">
30043              <ul class="entry_tags">
30044                  <li><a href="#tag_V1">V1</a></li>
30045                  <li><a href="#tag_REPROC">REPROC</a></li>
30046              </ul>
30047            </td>
30048
30049          </tr>
30050          <tr class="entries_header">
30051            <th class="th_details" colspan="6">Details</th>
30052          </tr>
30053          <tr class="entry_cont">
30054            <td class="entry_details" colspan="6">
30055              <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
30056All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
30057            </td>
30058          </tr>
30059
30060          <tr class="entries_header">
30061            <th class="th_details" colspan="6">HAL Implementation Details</th>
30062          </tr>
30063          <tr class="entry_cont">
30064            <td class="entry_details" colspan="6">
30065              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30066on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30067That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30068capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30069            </td>
30070          </tr>
30071
30072          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30073           <!-- end of entry -->
30074
30075
30076
30077      <!-- end of kind -->
30078      </tbody>
30079      <tr><td colspan="7" class="kind">dynamic</td></tr>
30080
30081      <thead class="entries_header">
30082        <tr>
30083          <th class="th_name">Property Name</th>
30084          <th class="th_type">Type</th>
30085          <th class="th_description">Description</th>
30086          <th class="th_units">Units</th>
30087          <th class="th_range">Range</th>
30088          <th class="th_hal_version">Initial HIDL HAL version</th>
30089          <th class="th_tags">Tags</th>
30090        </tr>
30091      </thead>
30092
30093      <tbody>
30094
30095
30096
30097
30098
30099
30100
30101
30102
30103
30104          <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30105            <td class="entry_name
30106             " rowspan="3">
30107              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30108            </td>
30109            <td class="entry_type">
30110                <span class="entry_type_name entry_type_name_enum">byte</span>
30111
30112              <span class="entry_type_visibility"> [public]</span>
30113
30114
30115
30116
30117
30118                <ul class="entry_type_enum">
30119                  <li>
30120                    <span class="entry_type_enum_name">OFF (v3.3)</span>
30121                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30122                  </li>
30123                  <li>
30124                    <span class="entry_type_enum_name">FAST (v3.3)</span>
30125                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30126relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30127reduce frame rate relative to sensor.<wbr/></p></span>
30128                  </li>
30129                  <li>
30130                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30131                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30132possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30133                  </li>
30134                </ul>
30135
30136            </td> <!-- entry_type -->
30137
30138            <td class="entry_description">
30139              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30140            </td>
30141
30142            <td class="entry_units">
30143            </td>
30144
30145            <td class="entry_range">
30146              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30147            </td>
30148
30149            <td class="entry_hal_version">
30150              <p>3.<wbr/>3</p>
30151            </td>
30152
30153            <td class="entry_tags">
30154            </td>
30155
30156          </tr>
30157          <tr class="entries_header">
30158            <th class="th_details" colspan="6">Details</th>
30159          </tr>
30160          <tr class="entry_cont">
30161            <td class="entry_details" colspan="6">
30162              <p>The lens distortion correction block attempts to improve image quality by fixing
30163radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
30164available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30165<p>OFF means no distortion correction is done.<wbr/></p>
30166<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30167applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30168correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30169will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30170any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
30171similar amount of enhancement applied.<wbr/></p>
30172<p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30173applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
30174regions are also not affected by correction.<wbr/></p>
30175<p>Applications enabling distortion correction need to pay extra attention when converting
30176image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30177the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30178model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30179calculate the tap position on the sensor active array to be used with
30180<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
30181they need to be drawn on top of the corrected output buffers.<wbr/></p>
30182            </td>
30183          </tr>
30184
30185
30186          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30187           <!-- end of entry -->
30188
30189
30190
30191      <!-- end of kind -->
30192      </tbody>
30193
30194  <!-- end of section -->
30195<!-- </namespace> -->
30196  </table>
30197
30198  <div class="tags" id="tag_index">
30199    <h2>Tags</h2>
30200    <ul>
30201      <li id="tag_BC">BC -
30202        Needed for backwards compatibility with old Java API
30203
30204        <ul class="tags_entries">
30205          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30206          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30207          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30208          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30209          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30210          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30211          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30212          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30213          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30214          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30215          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30216          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30217          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30218          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30219          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30220          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30221          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30222          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30223          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30224          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30225          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30226          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30227          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30228          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30229          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30230          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30231          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30232          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30233          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30234          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30235          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30236          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30237          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30238          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30239          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30240          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30241          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30242          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30243          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30244          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30245          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30246          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30247          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30248          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30249          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30250          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30251          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30252          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30253          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30254          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30255          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30256          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30257          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30258          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30259          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30260          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30261          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30262          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30263          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30264          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30265          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30266          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30267          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30268          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30269          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30270          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30271          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30272        </ul>
30273      </li> <!-- tag_BC -->
30274      <li id="tag_V1">V1 -
30275        New features for first camera 2 release (API1)
30276
30277        <ul class="tags_entries">
30278          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30279          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30280          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30281          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30282          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30283          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30284          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30285          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30286          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30287          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30288          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30289          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30290          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30291          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30292          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30293          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30294          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30295          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30296          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30297          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30298          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30299          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30300          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30301          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30302          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30303          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30304          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30305          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30306          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30307          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30308          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30309          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30310          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30311          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30312          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30313          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30314          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30315          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30316          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30317          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30318          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30319          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30320          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30321          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30322          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30323          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30324        </ul>
30325      </li> <!-- tag_V1 -->
30326      <li id="tag_RAW">RAW -
30327        Needed for useful RAW image processing and DNG file support
30328
30329        <ul class="tags_entries">
30330          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30331          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30332          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30333          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30334          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30335          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30336          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30337          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30338          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30339          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30340          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30341          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30342          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30343          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30344          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30345          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30346          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30347          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30348          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30349          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30350          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30351          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30352          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30353          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30354          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30355          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30356          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30357          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30358          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30359        </ul>
30360      </li> <!-- tag_RAW -->
30361      <li id="tag_HAL2">HAL2 -
30362        Entry is only used by camera device legacy HAL 2.x
30363
30364        <ul class="tags_entries">
30365          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30366          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30367          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30368          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30369          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30370        </ul>
30371      </li> <!-- tag_HAL2 -->
30372      <li id="tag_FULL">FULL -
30373        Entry is required for full hardware level devices, and optional for other hardware levels
30374
30375        <ul class="tags_entries">
30376          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30377        </ul>
30378      </li> <!-- tag_FULL -->
30379      <li id="tag_DEPTH">DEPTH -
30380        Entry is required for the depth capability.
30381
30382        <ul class="tags_entries">
30383          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30384          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30385          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30386          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30387          <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30388          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30389          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30390          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30391          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30392        </ul>
30393      </li> <!-- tag_DEPTH -->
30394      <li id="tag_REPROC">REPROC -
30395        Entry is required for the YUV or PRIVATE reprocessing capability.
30396
30397        <ul class="tags_entries">
30398          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30399          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30400          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30401          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30402          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30403          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30404          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30405          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30406          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30407          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30408          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30409        </ul>
30410      </li> <!-- tag_REPROC -->
30411      <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
30412        Entry is required for logical multi-camera capability.
30413
30414        <ul class="tags_entries">
30415          <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30416          <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30417        </ul>
30418      </li> <!-- tag_LOGICALCAMERA -->
30419      <li id="tag_FUTURE">FUTURE -
30420        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
30421        do not implement or use it, it may be revised for future.
30422
30423        <ul class="tags_entries">
30424          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30425          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30426          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30427          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30428          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30429          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30430          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30431          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30432          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30433          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30434          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30435          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30436          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30437          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30438          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30439          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30440          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30441          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30442          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30443          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30444          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30445        </ul>
30446      </li> <!-- tag_FUTURE -->
30447    </ul>
30448  </div>
30449
30450  [ <a href="#">top</a> ]
30451
30452</body>
30453</html>
30454